12 , documentationSupport ? false
16 , eventGUISupport ? false
20 , testsSupport ? false
29 mkFlag = optSet: flag: "-D${flag}=${lib.boolToString optSet}";
33 env = python3.withPackages (pp: with pp; [
39 # Expose only the sphinx-build binary to avoid contaminating
40 # everything with Sphinx’s Python environment.
41 runCommand "sphinx-build" { } ''
43 ln -s "${env}/bin/sphinx-build" "$out/bin"
47 stdenv.mkDerivation rec {
51 outputs = [ "bin" "out" "dev" ];
53 src = fetchFromGitLab {
54 domain = "gitlab.freedesktop.org";
58 hash = "sha256-Ly832W2U38JuXiqvt6e7u3APynrmwi4Ns98bBdTBnP8=";
62 ./udev-absolute-path.patch
69 ] ++ lib.optionals documentationSupport [
79 (python3.withPackages (pp: with pp; [
80 pp.libevdev # already in scope
85 ] ++ lib.optionals eventGUISupport [
93 propagatedBuildInputs = [
103 (mkFlag documentationSupport "documentation")
104 (mkFlag eventGUISupport "debug-gui")
105 (mkFlag testsSupport "tests")
107 "--libexecdir=${placeholder "bin"}/libexec"
110 doCheck = testsSupport && stdenv.hostPlatform == stdenv.buildPlatform;
114 test/symbols-leak-test \
115 test/check-leftover-udev-rules.sh \
116 test/helper-copy-and-exec-from-tmp.sh
118 # Don't create an empty directory under /etc.
119 sed -i "/install_emptydir(dir_etc \/ 'libinput')/d" meson.build
124 libinput-module = nixosTests.libinput;
126 updateScript = gitUpdater {
127 patchlevel-unstable = true;
132 description = "Handles input devices in Wayland compositors and provides a generic X.Org input driver";
133 mainProgram = "libinput";
134 homepage = "https://www.freedesktop.org/wiki/Software/libinput/";
135 license = licenses.mit;
136 platforms = platforms.linux;
137 maintainers = with maintainers; [ codyopel ] ++ teams.freedesktop.members;
138 changelog = "https://gitlab.freedesktop.org/libinput/libinput/-/releases/${version}";