linux_xanmod: 5.11.14 -> 5.11.15
[NixPkgs.git] / pkgs / development / libraries / libinput / default.nix
blob8f1511de3304939a98f5cb847a2a70380b5a4a35
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 }:
8 assert documentationSupport -> doxygen != null && graphviz != null && python3 != null;
9 assert eventGUISupport -> cairo != null && glib != null && gtk3 != null;
10 assert testsSupport -> check != null && valgrind != null && python3 != null;
12 let
13   mkFlag = optSet: flag: "-D${flag}=${lib.boolToString optSet}";
15   sphinx-build = if documentationSupport then
16     python3.pkgs.sphinx.overrideAttrs (super: {
17       propagatedBuildInputs = super.propagatedBuildInputs ++ (with python3.pkgs; [ recommonmark sphinx_rtd_theme ]);
19       postFixup = super.postFixup or "" + ''
20         # Do not propagate Python
21         rm $out/nix-support/propagated-build-inputs
22       '';
23     })
24   else null;
27 with lib;
28 stdenv.mkDerivation rec {
29   pname = "libinput";
30   version = "1.16.4";
32   src = fetchFromGitLab {
33     domain = "gitlab.freedesktop.org";
34     owner = pname;
35     repo = pname;
36     rev = version;
37     sha256 = "1c81429kh9av9fanxmnjw5rvsjbzcyi7d0dx0gkyq5yysmpmrppi";
38   };
40   outputs = [ "bin" "out" "dev" ];
42   mesonFlags = [
43     (mkFlag documentationSupport "documentation")
44     (mkFlag eventGUISupport "debug-gui")
45     (mkFlag testsSupport "tests")
46     "--sysconfdir=/etc"
47     "--libexecdir=${placeholder "bin"}/libexec"
48   ];
50   nativeBuildInputs = [ pkg-config meson ninja ]
51     ++ optionals documentationSupport [ doxygen graphviz sphinx-build ];
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 ];
66   checkInputs = [
67     check
68     valgrind
69   ];
71   propagatedBuildInputs = [ udev ];
73   patches = [ ./udev-absolute-path.patch ];
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   '';
82   doCheck = testsSupport && stdenv.hostPlatform == stdenv.buildPlatform;
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   };