anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / tools / package-management / packagekit / default.nix
blobd0a4ef21d36ab3134a3e74292a720151ee1fe58d
1 { stdenv
2 , fetchFromGitHub
3 , lib
4 , gettext
5 , glib
6 , pkg-config
7 , polkit
8 , python3
9 , sqlite
10 , gobject-introspection
11 , vala
12 , gtk-doc
13 , boost
14 , meson
15 , ninja
16 , libxslt
17 , docbook-xsl-nons
18 , docbook_xml_dtd_42
19 , libxml2
20 , gst_all_1
21 , gtk3
22 , enableCommandNotFound ? false
23 , enableBashCompletion ? false
24 , bash-completion ? null
25 , enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
26 , systemd
27 , nixosTests
30 stdenv.mkDerivation rec {
31   pname = "packagekit";
32   version = "1.3.0";
34   outputs = [ "out" "dev" "devdoc" ];
36   src = fetchFromGitHub {
37     owner = "PackageKit";
38     repo = "PackageKit";
39     rev = "v${version}";
40     hash = "sha256-MYZFI1Q90F/AXVSJJBhmw+E7IMLXrdwmSuFJwv5D/z4=";
41   };
43   buildInputs = [
44     glib
45     polkit
46     python3
47     gst_all_1.gstreamer
48     gst_all_1.gst-plugins-base
49     gtk3
50     sqlite
51     boost
52   ] ++ lib.optional enableSystemd systemd
53   ++ lib.optional enableBashCompletion bash-completion;
54   nativeBuildInputs = [
55     gobject-introspection
56     glib
57     vala
58     gettext
59     pkg-config
60     gtk-doc
61     meson
62     libxslt
63     docbook-xsl-nons
64     docbook_xml_dtd_42
65     libxml2
66     ninja
67   ];
69   mesonFlags = [
70     (if enableSystemd then "-Dsystemd=true" else "-Dsystem=false")
71     # often fails to build with nix updates
72     # and remounts /nix/store as rw
73     # https://github.com/NixOS/nixpkgs/issues/177946
74     #"-Dpackaging_backend=nix"
75     "-Ddbus_sys=${placeholder "out"}/share/dbus-1/system.d"
76     "-Ddbus_services=${placeholder "out"}/share/dbus-1/system-services"
77     "-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
78     "-Dcron=false"
79     "-Dgtk_doc=true"
80     "--sysconfdir=/etc"
81     "--localstatedir=/var"
82   ]
83   ++ lib.optional (!enableBashCompletion) "-Dbash_completion=false"
84   ++ lib.optional (!enableCommandNotFound) "-Dbash_command_not_found=false";
86   postPatch = ''
87     # HACK: we want packagekit to look in /etc for configs but install
88     # those files in $out/etc ; we just override the runtime paths here
89     # same for /var & $out/var
90     substituteInPlace etc/meson.build \
91       --replace "install_dir: join_paths(get_option('sysconfdir'), 'PackageKit')" "install_dir: join_paths('$out', 'etc', 'PackageKit')"
92     substituteInPlace data/meson.build \
93       --replace "install_dir: join_paths(get_option('localstatedir'), 'lib', 'PackageKit')," "install_dir: join_paths('$out', 'var', 'lib', 'PackageKit'),"
94   '';
96   passthru.tests = {
97     nixos-test = nixosTests.packagekit;
98   };
100   meta = with lib; {
101     description = "System to facilitate installing and updating packages";
102     longDescription = ''
103       PackageKit is a system designed to make installing and updating software
104       on your computer easier. The primary design goal is to unify all the
105       software graphical tools used in different distributions, and use some of
106       the latest technology like PolicyKit. The actual nuts-and-bolts distro
107       tool (dnf, apt, etc) is used by PackageKit using compiled and scripted
108       helpers. PackageKit isn't meant to replace these tools, instead providing
109       a common set of abstractions that can be used by standard GUI and text
110       mode package managers.
111     '';
112     homepage = "https://github.com/PackageKit/PackageKit";
113     license = licenses.gpl2Plus;
114     platforms = platforms.unix;
115     maintainers = with maintainers; [ matthewbauer ];
116   };