at master 1.3 kB view raw
1{ 2 config, 3 options, 4 pkgs, 5 lib, 6 ... 7}: 8let 9 cfg = config.services.gnome.gcr-ssh-agent; 10 opts = options.services.gnome.gcr-ssh-agent; 11 sshCfg = config.programs.ssh; 12 sshOpts = options.programs.ssh; 13in 14{ 15 meta = { 16 maintainers = lib.teams.gnome.members; 17 }; 18 19 options = { 20 services.gnome.gcr-ssh-agent = { 21 enable = lib.mkOption { 22 default = config.services.gnome.gnome-keyring.enable; 23 defaultText = lib.literalExpression "config.services.gnome.gnome-keyring.enable"; 24 example = true; 25 description = "Whether to enable GCR SSH agent."; 26 type = lib.types.bool; 27 }; 28 29 package = lib.mkPackageOption pkgs "GCR" { 30 default = [ "gcr_4" ]; 31 }; 32 }; 33 }; 34 35 config = lib.mkIf cfg.enable { 36 assertions = lib.singleton { 37 assertion = !sshCfg.startAgent; 38 message = '' 39 `${sshOpts.startAgent}' (defined in ${lib.showFiles sshOpts.startAgent.files}) and `${opts.enable}' (defined in ${lib.showFiles opts.enable.files}) cannot both be enabled at the same time. 40 These options conflict because only one SSH agent can be installed at a time.''; 41 }; 42 43 systemd = { 44 packages = [ cfg.package ]; 45 user.services.gcr-ssh-agent.wantedBy = [ "default.target" ]; 46 user.sockets.gcr-ssh-agent.wantedBy = [ "sockets.target" ]; 47 }; 48 }; 49}