{ stdenv , fetchFromGitHub , lib , gettext , glib , pkg-config , polkit , python3 , sqlite , gobject-introspection , vala , gtk-doc , nix , nlohmann_json ? null , boost , meson , ninja , libxslt , docbook-xsl-nons , docbook_xml_dtd_42 , libxml2 , gst_all_1 , gtk3 , enableCommandNotFound ? false , enableBashCompletion ? false , bash-completion ? null , enableSystemd ? stdenv.isLinux , systemd }: let nix_version = lib.removeSuffix nix.VERSION_SUFFIX nix.version; useNlohmann = lib.versionAtLeast "2.7" nix_version; in assert useNlohmann -> nlohmann_json != null; stdenv.mkDerivation rec { pname = "packagekit"; version = "1.2.5.1pre"; outputs = [ "out" "dev" "devdoc" ]; src = fetchFromGitHub { owner = "PackageKit"; repo = "PackageKit"; rev = "33b847c49b4a42499e3c0f10fef62830c874e086"; sha256 = "UDpMswf0EBwcoHTqoWiztXnIAwM69nM+S9MPsR24amw="; }; buildInputs = [ glib polkit python3 gobject-introspection gst_all_1.gstreamer gst_all_1.gst-plugins-base gtk3 sqlite nix boost ] ++ lib.optional enableSystemd systemd ++ lib.optional useNlohmann nlohmann_json ++ lib.optional enableBashCompletion bash-completion; nativeBuildInputs = [ vala gettext pkg-config gtk-doc meson libxslt docbook-xsl-nons docbook_xml_dtd_42 libxml2 ninja ]; mesonFlags = [ (if enableSystemd then "-Dsystemd=true" else "-Dsystem=false") "-Dpackaging_backend=nix" "-Ddbus_sys=${placeholder "out"}/share/dbus-1/system.d" "-Ddbus_services=${placeholder "out"}/share/dbus-1/system-services" "-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system" "-Dcron=false" "-Dgtk_doc=true" "--sysconfdir=/etc" "--localstatedir=/var" ] ++ lib.optional (!enableBashCompletion) "-Dbash_completion=false" ++ lib.optional (!enableCommandNotFound) "-Dbash_command_not_found=false"; postPatch = '' # HACK: we want packagekit to look in /etc for configs but install # those files in $out/etc ; we just override the runtime paths here # same for /var & $out/var substituteInPlace etc/meson.build \ --replace "install_dir: join_paths(get_option('sysconfdir'), 'PackageKit')" "install_dir: join_paths('$out', 'etc', 'PackageKit')" substituteInPlace data/meson.build \ --replace "install_dir: join_paths(get_option('localstatedir'), 'lib', 'PackageKit')," "install_dir: join_paths('$out', 'var', 'lib', 'PackageKit')," ''; meta = with lib; { description = "System to facilitate installing and updating packages"; longDescription = '' PackageKit is a system designed to make installing and updating software on your computer easier. The primary design goal is to unify all the software graphical tools used in different distributions, and use some of the latest technology like PolicyKit. The actual nuts-and-bolts distro tool (dnf, apt, etc) is used by PackageKit using compiled and scripted helpers. PackageKit isn't meant to replace these tools, instead providing a common set of abstractions that can be used by standard GUI and text mode package managers. ''; homepage = "http://www.packagekit.org/"; license = licenses.gpl2Plus; platforms = platforms.unix; maintainers = with maintainers; [ matthewbauer ]; }; }