66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { 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;
 | |
|   };
 | |
| }
 | 
