10 , gobject-introspection
22 , enableCommandNotFound ? false
23 , enableBashCompletion ? false
24 , bash-completion ? null
25 , enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
30 stdenv.mkDerivation rec {
34 outputs = [ "out" "dev" "devdoc" ];
36 src = fetchFromGitHub {
40 hash = "sha256-MYZFI1Q90F/AXVSJJBhmw+E7IMLXrdwmSuFJwv5D/z4=";
48 gst_all_1.gst-plugins-base
52 ] ++ lib.optional enableSystemd systemd
53 ++ lib.optional enableBashCompletion bash-completion;
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"
81 "--localstatedir=/var"
83 ++ lib.optional (!enableBashCompletion) "-Dbash_completion=false"
84 ++ lib.optional (!enableCommandNotFound) "-Dbash_command_not_found=false";
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'),"
97 nixos-test = nixosTests.packagekit;
101 description = "System to facilitate installing and updating packages";
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.
112 homepage = "https://github.com/PackageKit/PackageKit";
113 license = licenses.gpl2Plus;
114 platforms = platforms.unix;
115 maintainers = with maintainers; [ matthewbauer ];