diff --git a/nixos/modules/services/misc/packagekit.nix b/nixos/modules/services/misc/packagekit.nix
index bce21e8acff3..325c4e84e0d8 100644
--- a/nixos/modules/services/misc/packagekit.nix
+++ b/nixos/modules/services/misc/packagekit.nix
@@ -7,18 +7,19 @@ let
cfg = config.services.packagekit;
packagekitConf = ''
-[Daemon]
-KeepCache=false
- '';
+ [Daemon]
+ DefaultBackend=${cfg.backend}
+ KeepCache=false
+ '';
vendorConf = ''
-[PackagesNotFound]
-DefaultUrl=https://github.com/NixOS/nixpkgs
-CodecUrl=https://github.com/NixOS/nixpkgs
-HardwareUrl=https://github.com/NixOS/nixpkgs
-FontUrl=https://github.com/NixOS/nixpkgs
-MimeUrl=https://github.com/NixOS/nixpkgs
- '';
+ [PackagesNotFound]
+ DefaultUrl=https://github.com/NixOS/nixpkgs
+ CodecUrl=https://github.com/NixOS/nixpkgs
+ HardwareUrl=https://github.com/NixOS/nixpkgs
+ FontUrl=https://github.com/NixOS/nixpkgs
+ MimeUrl=https://github.com/NixOS/nixpkgs
+ '';
in
@@ -33,26 +34,32 @@ in
installing software. Software utilizing PackageKit can install
software regardless of the package manager.
'';
- };
+ # TODO: integrate with PolicyKit if the nix backend matures to the point
+ # where it will require elevated permissions
+ backend = mkOption {
+ type = types.enum [ "test_nop" ];
+ default = "test_nop";
+ description = ''
+ PackageKit supports multiple different backends and auto which
+ should do the right thing.
+
+
+ On NixOS however, we do not have a backend compatible with nix 2.0
+ (refer to this issue so we have to force
+ it to test_nop for now.
+ '';
+ };
+ };
};
config = mkIf cfg.enable {
- services.dbus.packages = [ pkgs.packagekit ];
+ services.dbus.packages = with pkgs; [ packagekit ];
- systemd.services.packagekit = {
- description = "PackageKit Daemon";
- wantedBy = [ "multi-user.target" ];
- serviceConfig.ExecStart = "${pkgs.packagekit}/libexec/packagekitd";
- serviceConfig.User = "root";
- serviceConfig.BusName = "org.freedesktop.PackageKit";
- serviceConfig.Type = "dbus";
- };
+ systemd.packages = with pkgs; [ packagekit ];
environment.etc."PackageKit/PackageKit.conf".text = packagekitConf;
environment.etc."PackageKit/Vendor.conf".text = vendorConf;
-
};
-
}