aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/misc/packagekit.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/misc/packagekit.nix')
-rw-r--r--nixpkgs/nixos/modules/services/misc/packagekit.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/services/misc/packagekit.nix b/nixpkgs/nixos/modules/services/misc/packagekit.nix
new file mode 100644
index 00000000000..325c4e84e0d
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/misc/packagekit.nix
@@ -0,0 +1,65 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.services.packagekit;
+
+ packagekitConf = ''
+ [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
+ '';
+
+in
+
+{
+
+ options = {
+
+ services.packagekit = {
+ enable = mkEnableOption
+ ''
+ PackageKit provides a cross-platform D-Bus abstraction layer for
+ 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 <literal>auto</literal> which
+ should do the right thing.
+ </para>
+ <para>
+ On NixOS however, we do not have a backend compatible with nix 2.0
+ (refer to <link xlink:href="https://github.com/NixOS/nix/issues/233">this issue</link> so we have to force
+ it to <literal>test_nop</literal> for now.
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+
+ services.dbus.packages = with pkgs; [ packagekit ];
+
+ systemd.packages = with pkgs; [ packagekit ];
+
+ environment.etc."PackageKit/PackageKit.conf".text = packagekitConf;
+ environment.etc."PackageKit/Vendor.conf".text = vendorConf;
+ };
+}