btrbk: add mainProgram
[NixPkgs.git] / pkgs / by-name / fe / feedbackd / package.nix
blob256892aa0c99426aa99f1464492ba233bbaf55aa
1 { lib
2 , stdenv
3 , fetchFromGitLab
4 , docbook-xsl-nons
5 , docutils
6 , gi-docgen
7 , gobject-introspection
8 , gtk-doc
9 , libxslt
10 , meson
11 , ninja
12 , pkg-config
13 , vala
14 , wrapGAppsHook3
15 , glib
16 , gsound
17 , json-glib
18 , libgudev
19 , dbus
20 , gmobile
21 , umockdev
24 let
25   themes = fetchFromGitLab {
26     domain = "source.puri.sm";
27     owner = "Librem5";
28     repo = "feedbackd-device-themes";
29     rev = "v0.4.0";
30     hash = "sha256-kY/+DyRxKEUzq7ctl6Va14AKUCpWU7NRQhJOwhtkJp8=";
31   };
33 stdenv.mkDerivation (finalAttrs: {
34   pname = "feedbackd";
35   version = "0.4.1";
37   outputs = [ "out" "dev" "devdoc" ];
39   src = fetchFromGitLab {
40     domain = "source.puri.sm";
41     owner = "Librem5";
42     repo = "feedbackd";
43     rev = "v${finalAttrs.version}";
44     hash = "sha256-ta14DYqkid8Cp8fx9ZMGOOJroCBszN9/VrTN6mrpTZg=";
45   };
47   depsBuildBuild = [
48     pkg-config
49   ];
51   nativeBuildInputs = [
52     docbook-xsl-nons
53     docutils # for rst2man
54     gi-docgen
55     gobject-introspection
56     gtk-doc
57     libxslt
58     meson
59     ninja
60     pkg-config
61     vala
62     wrapGAppsHook3
63   ];
65   buildInputs = [
66     glib
67     gsound
68     json-glib
69     libgudev
70     gmobile
71   ];
73   mesonFlags = [
74     "-Dgtk_doc=true"
75     "-Dman=true"
76     # Make compiling work when doCheck = false
77     "-Dtests=${lib.boolToString finalAttrs.finalPackage.doCheck}"
78   ];
80   nativeCheckInputs = [
81     dbus
82     umockdev
83   ];
85   doCheck = true;
87   postInstall = ''
88     mkdir -p $out/lib/udev/rules.d
89     sed "s|/usr/libexec/|$out/libexec/|" < $src/data/90-feedbackd.rules > $out/lib/udev/rules.d/90-feedbackd.rules
90     cp ${themes}/data/* $out/share/feedbackd/themes/
91   '';
93   postFixup = ''
94     # Move developer documentation to devdoc output.
95     # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
96     if [[ -d "$out/share/doc" ]]; then
97         find -L "$out/share/doc" -type f -regex '.*\.devhelp2?' -print0 \
98           | while IFS= read -r -d ''' file; do
99             moveToOutput "$(dirname "''${file/"$out/"/}")" "$devdoc"
100         done
101     fi
102   '';
104   meta = with lib; {
105     description = "Daemon to provide haptic (and later more) feedback on events";
106     homepage = "https://source.puri.sm/Librem5/feedbackd";
107     license = licenses.gpl3Plus;
108     maintainers = with maintainers; [ pacman99 ];
109     platforms = platforms.linux;
110   };