Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at 21.05 91 lines 2.7 kB view raw
1{ lib, stdenv, fetchFromGitLab, pkg-config, meson, ninja 2, libevdev, mtdev, udev, libwacom 3, documentationSupport ? false, doxygen ? null, graphviz ? null # Documentation 4, eventGUISupport ? false, cairo ? null, glib ? null, gtk3 ? null # GUI event viewer support 5, testsSupport ? false, check ? null, valgrind ? null, python3 ? null 6}: 7 8assert documentationSupport -> doxygen != null && graphviz != null && python3 != null; 9assert eventGUISupport -> cairo != null && glib != null && gtk3 != null; 10assert testsSupport -> check != null && valgrind != null && python3 != null; 11 12let 13 mkFlag = optSet: flag: "-D${flag}=${lib.boolToString optSet}"; 14 15 sphinx-build = if documentationSupport then 16 python3.pkgs.sphinx.overrideAttrs (super: { 17 propagatedBuildInputs = super.propagatedBuildInputs ++ (with python3.pkgs; [ recommonmark sphinx_rtd_theme ]); 18 19 postFixup = super.postFixup or "" + '' 20 # Do not propagate Python 21 rm $out/nix-support/propagated-build-inputs 22 ''; 23 }) 24 else null; 25in 26 27with lib; 28stdenv.mkDerivation rec { 29 pname = "libinput"; 30 version = "1.16.4"; 31 32 src = fetchFromGitLab { 33 domain = "gitlab.freedesktop.org"; 34 owner = pname; 35 repo = pname; 36 rev = version; 37 sha256 = "1c81429kh9av9fanxmnjw5rvsjbzcyi7d0dx0gkyq5yysmpmrppi"; 38 }; 39 40 outputs = [ "bin" "out" "dev" ]; 41 42 mesonFlags = [ 43 (mkFlag documentationSupport "documentation") 44 (mkFlag eventGUISupport "debug-gui") 45 (mkFlag testsSupport "tests") 46 "--sysconfdir=/etc" 47 "--libexecdir=${placeholder "bin"}/libexec" 48 ]; 49 50 nativeBuildInputs = [ pkg-config meson ninja ] 51 ++ optionals documentationSupport [ doxygen graphviz sphinx-build ]; 52 53 buildInputs = [ 54 libevdev 55 mtdev 56 libwacom 57 (python3.withPackages (pp: with pp; [ 58 pp.libevdev # already in scope 59 pyudev 60 pyyaml 61 setuptools 62 ])) 63 ] 64 ++ optionals eventGUISupport [ cairo glib gtk3 ]; 65 66 checkInputs = [ 67 check 68 valgrind 69 ]; 70 71 propagatedBuildInputs = [ udev ]; 72 73 patches = [ ./udev-absolute-path.patch ]; 74 75 postPatch = '' 76 patchShebangs tools/helper-copy-and-exec-from-tmp.sh 77 patchShebangs test/symbols-leak-test 78 patchShebangs test/check-leftover-udev-rules.sh 79 patchShebangs test/helper-copy-and-exec-from-tmp.sh 80 ''; 81 82 doCheck = testsSupport && stdenv.hostPlatform == stdenv.buildPlatform; 83 84 meta = { 85 description = "Handles input devices in Wayland compositors and provides a generic X.Org input driver"; 86 homepage = "https://www.freedesktop.org/wiki/Software/libinput/"; 87 license = licenses.mit; 88 platforms = platforms.unix; 89 maintainers = with maintainers; [ codyopel ]; 90 }; 91}