diff --git a/modules/misc/news.nix b/modules/misc/news.nix index e27f30a55..0020ba903 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1135,6 +1135,14 @@ in A new modules is available: 'programs.zsh.antidote' ''; } + + { + time = "2023-06-30T14:46:22+00:00"; + condition = config.services.ssh-agent.enable; + message = '' + A new module is available: 'services.ssh-agent' + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index bf8f9d622..f6a15c020 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -306,6 +306,7 @@ let ./services/screen-locker.nix ./services/sctd.nix ./services/spotifyd.nix + ./services/ssh-agent.nix ./services/stalonetray.nix ./services/status-notifier-watcher.nix ./services/swayidle.nix diff --git a/modules/services/ssh-agent.nix b/modules/services/ssh-agent.nix new file mode 100644 index 000000000..d896d8e15 --- /dev/null +++ b/modules/services/ssh-agent.nix @@ -0,0 +1,36 @@ +{ config, options, lib, pkgs, ... }: + +let + + cfg = config.services.ssh-agent; + +in { + meta.maintainers = [ lib.maintainers.lheckemann ]; + + options = { + services.ssh-agent = { + enable = lib.mkEnableOption "OpenSSH private key agent"; + }; + }; + + config = lib.mkIf cfg.enable { + home.sessionVariablesExtra = '' + if [[ -z "$SSH_AUTH_SOCK" ]]; then + export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent + fi + ''; + + systemd.user.services.ssh-agent = { + Install.WantedBy = [ "default.target" ]; + + Unit = { + Description = "SSH authentication agent"; + Documentation = "man:ssh-agent(1)"; + }; + + Service = { + ExecStart = "${pkgs.openssh}/bin/ssh-agent -D -a %t/ssh-agent"; + }; + }; + }; +}