`$SSH_AUTH_SOCK` must not be set unconditionally through 'home.sessionVariables' since its value needs to be preserved if it stems from a forwarded SSH agent. Hence, this commit establishes a centralized, internal 'ssh_auth_sock.initialization' option for setting `$SSH_AUTH_SOCK`. It checks whether its value has to be preserved and injects the initialization code into the proper 'programs.(bash|fish|nushell|zsh).*' options.
40 lines
1.3 KiB
Nix
40 lines
1.3 KiB
Nix
{
|
|
programs.bash.enable = true;
|
|
programs.fish.enable = true;
|
|
programs.nushell.enable = true;
|
|
programs.zsh.enable = true;
|
|
|
|
services.gpg-agent = {
|
|
enable = true;
|
|
enableSshSupport = true;
|
|
};
|
|
|
|
nmt.script = ''
|
|
assertFileContains \
|
|
home-files/.profile \
|
|
'export SSH_AUTH_SOCK="$(@gnupg@/bin/gpgconf --list-dirs agent-ssh-socket)"'
|
|
assertFileContains \
|
|
home-files/.config/fish/config.fish \
|
|
'set -x SSH_AUTH_SOCK (@gnupg@/bin/gpgconf --list-dirs agent-ssh-socket)'
|
|
assertFileContains \
|
|
home-files/.config/nushell/config.nu \
|
|
'$env.SSH_AUTH_SOCK = $"(@gnupg@/bin/gpgconf --list-dirs agent-ssh-socket)"'
|
|
assertFileContains \
|
|
home-files/.zshenv \
|
|
'export SSH_AUTH_SOCK="$(@gnupg@/bin/gpgconf --list-dirs agent-ssh-socket)"'
|
|
|
|
assertFileContains \
|
|
home-files/.bashrc \
|
|
'@gnupg@/bin/gpg-connect-agent --quiet updatestartuptty /bye'
|
|
assertFileContains \
|
|
home-files/.config/fish/config.fish \
|
|
'@gnupg@/bin/gpg-connect-agent --quiet updatestartuptty /bye'
|
|
assertFileContains \
|
|
home-files/.config/nushell/config.nu \
|
|
'@gnupg@/bin/gpg-connect-agent --quiet updatestartuptty /bye'
|
|
assertFileContains \
|
|
home-files/.zshrc \
|
|
'@gnupg@/bin/gpg-connect-agent --quiet updatestartuptty /bye'
|
|
'';
|
|
}
|