at 22.05-pre 2.5 kB view raw
1{ lib, stdenv, fetchurl, pkg-config, meson, ninja 2, libevdev, mtdev, udev, libwacom 3, documentationSupport ? false, doxygen, graphviz # Documentation 4, eventGUISupport ? false, cairo, glib, gtk3 # GUI event viewer support 5, testsSupport ? false, check, valgrind, python3 6, nixosTests 7}: 8 9let 10 mkFlag = optSet: flag: "-D${flag}=${lib.boolToString optSet}"; 11 12 sphinx-build = if documentationSupport then 13 python3.pkgs.sphinx.overrideAttrs (super: { 14 propagatedBuildInputs = super.propagatedBuildInputs ++ (with python3.pkgs; [ recommonmark sphinx_rtd_theme ]); 15 16 postFixup = super.postFixup or "" + '' 17 # Do not propagate Python 18 rm $out/nix-support/propagated-build-inputs 19 ''; 20 }) 21 else null; 22in 23 24stdenv.mkDerivation rec { 25 pname = "libinput"; 26 version = "1.19.1"; 27 28 src = fetchurl { 29 url = "https://www.freedesktop.org/software/libinput/libinput-${version}.tar.xz"; 30 sha256 = "sha256-C9z1sXg7c3hUt68coi32e8Nqb+fJz6cfAekUn5IgRG0="; 31 }; 32 33 outputs = [ "bin" "out" "dev" ]; 34 35 mesonFlags = [ 36 (mkFlag documentationSupport "documentation") 37 (mkFlag eventGUISupport "debug-gui") 38 (mkFlag testsSupport "tests") 39 "--sysconfdir=/etc" 40 "--libexecdir=${placeholder "bin"}/libexec" 41 ]; 42 43 nativeBuildInputs = [ pkg-config meson ninja ] 44 ++ lib.optionals documentationSupport [ doxygen graphviz sphinx-build ]; 45 46 buildInputs = [ 47 libevdev 48 mtdev 49 libwacom 50 (python3.withPackages (pp: with pp; [ 51 pp.libevdev # already in scope 52 pyudev 53 pyyaml 54 setuptools 55 ])) 56 ] ++ lib.optionals eventGUISupport [ cairo glib gtk3 ]; 57 58 checkInputs = [ 59 check 60 valgrind 61 ]; 62 63 propagatedBuildInputs = [ udev ]; 64 65 patches = [ ./udev-absolute-path.patch ]; 66 67 postPatch = '' 68 patchShebangs \ 69 tools/helper-copy-and-exec-from-tmp.sh \ 70 test/symbols-leak-test \ 71 test/check-leftover-udev-rules.sh \ 72 test/helper-copy-and-exec-from-tmp.sh 73 74 # Don't create an empty /etc directory. 75 sed -i "/install_subdir('libinput', install_dir : dir_etc)/d" meson.build 76 ''; 77 78 doCheck = testsSupport && stdenv.hostPlatform == stdenv.buildPlatform; 79 80 passthru.tests = { 81 libinput-module = nixosTests.libinput; 82 }; 83 84 meta = with lib; { 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}