diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libinput')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libinput/default.nix | 137 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libinput/udev-absolute-path.patch | 11 |
2 files changed, 148 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libinput/default.nix b/nixpkgs/pkgs/development/libraries/libinput/default.nix new file mode 100644 index 000000000000..16193e5e5148 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libinput/default.nix @@ -0,0 +1,137 @@ +{ lib +, stdenv +, fetchFromGitLab +, gitUpdater +, pkg-config +, meson +, ninja +, libevdev +, mtdev +, udev +, libwacom +, documentationSupport ? false +, doxygen +, graphviz +, runCommand +, eventGUISupport ? false +, cairo +, glib +, gtk3 +, testsSupport ? false +, check +, valgrind +, python3 +, nixosTests +}: + +let + mkFlag = optSet: flag: "-D${flag}=${lib.boolToString optSet}"; + + sphinx-build = + let + env = python3.withPackages (pp: with pp; [ + sphinx + recommonmark + sphinx-rtd-theme + ]); + in + # Expose only the sphinx-build binary to avoid contaminating + # everything with Sphinx’s Python environment. + runCommand "sphinx-build" { } '' + mkdir -p "$out/bin" + ln -s "${env}/bin/sphinx-build" "$out/bin" + ''; +in + +stdenv.mkDerivation rec { + pname = "libinput"; + version = "1.25.0"; + + outputs = [ "bin" "out" "dev" ]; + + src = fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "libinput"; + repo = "libinput"; + rev = version; + hash = "sha256-c2FU5OW+CIgtYTQy+bwIbaw3SP1pVxaLokhO+ag5/1s="; + }; + + patches = [ + ./udev-absolute-path.patch + ]; + + nativeBuildInputs = [ + pkg-config + meson + ninja + ] ++ lib.optionals documentationSupport [ + doxygen + graphviz + sphinx-build + ]; + + buildInputs = [ + libevdev + mtdev + libwacom + (python3.withPackages (pp: with pp; [ + pp.libevdev # already in scope + pyudev + pyyaml + setuptools + ])) + ] ++ lib.optionals eventGUISupport [ + # GUI event viewer + cairo + glib + gtk3 + ]; + + propagatedBuildInputs = [ + udev + ]; + + nativeCheckInputs = [ + check + valgrind + ]; + + mesonFlags = [ + (mkFlag documentationSupport "documentation") + (mkFlag eventGUISupport "debug-gui") + (mkFlag testsSupport "tests") + "--sysconfdir=/etc" + "--libexecdir=${placeholder "bin"}/libexec" + ]; + + doCheck = testsSupport && stdenv.hostPlatform == stdenv.buildPlatform; + + postPatch = '' + patchShebangs \ + test/symbols-leak-test \ + test/check-leftover-udev-rules.sh \ + test/helper-copy-and-exec-from-tmp.sh + + # Don't create an empty directory under /etc. + sed -i "/install_emptydir(dir_etc \/ 'libinput')/d" meson.build + ''; + + passthru = { + tests = { + libinput-module = nixosTests.libinput; + }; + updateScript = gitUpdater { + patchlevel-unstable = true; + }; + }; + + meta = with lib; { + description = "Handles input devices in Wayland compositors and provides a generic X.Org input driver"; + homepage = "https://www.freedesktop.org/wiki/Software/libinput/"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ codyopel ] ++ teams.freedesktop.members; + changelog = "https://gitlab.freedesktop.org/libinput/libinput/-/releases/${version}"; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/libinput/udev-absolute-path.patch b/nixpkgs/pkgs/development/libraries/libinput/udev-absolute-path.patch new file mode 100644 index 000000000000..5c85b8639486 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libinput/udev-absolute-path.patch @@ -0,0 +1,11 @@ +--- a/meson.build ++++ b/meson.build +@@ -100,7 +100,7 @@ + args : model_quirks) + + udev_rules_config = configuration_data() +-udev_rules_config.set('UDEV_TEST_PATH', '') ++udev_rules_config.set('UDEV_TEST_PATH', dir_udev + '/') + configure_file(input : 'udev/80-libinput-device-groups.rules.in', + output : '80-libinput-device-groups.rules', + install : true, |