From a3d0c03903d693a9d5dc271ba379ce2dc0ac4d1f Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Sun, 27 Jul 2025 22:18:56 +0200 Subject: [PATCH] Fix gpg-agent startup via keychain --- zsh/.profile.d/ssh-agent.sh | 40 ++++++++++++++++++------------------- zsh/.zshrc | 2 +- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/zsh/.profile.d/ssh-agent.sh b/zsh/.profile.d/ssh-agent.sh index f5a67aa..a3a7f8d 100755 --- a/zsh/.profile.d/ssh-agent.sh +++ b/zsh/.profile.d/ssh-agent.sh @@ -1,29 +1,17 @@ #!/usr/bin/env zsh -# This script sets up ssh-agent and gpg-agent differently for WSL and Linux Mint. -# On WSL, it uses keychain to start agents. -# On Linux Mint (or other Linux), it assumes gnome-keyring manages agents automatically. - -# Detect if running inside WSL by checking /proc/version for "Microsoft" -if grep -qi microsoft /proc/version; then - IS_WSL=true -else - IS_WSL=false -fi - -if [ "$IS_WSL" = true ]; then - # We are in WSL - start keychain for ssh and gpg agents - # Adjust these variables to your actual SSH and GPG key names - SSH_KEY="$HOME/.ssh/id_rsa_deadalus" - #GPG_KEY=9DDD59AD62494FB2 +# This script sets up ssh-agent and gpg-agent differently for WSL and non-WSL. +start_keychain() { + local ssh_key="$1" + local gpg_key="$2" # Check if keychain is installed if command -v keychain >/dev/null 2>&1; then SHORT_HOST=${SHORT_HOST:-${(%):-%m}} - + # Start keychain quietly with no GUI prompts for ssh agents - eval "$(keychain --quiet --nogui --agents ssh $SSH_KEY)" - + eval "$(keychain --quiet --nogui $ssh_key $gpg_key)" + # Get the filenames to store/lookup the environment from _keychain_env_sh="$HOME/.keychain/$SHORT_HOST-sh" _keychain_env_sh_gpg="$HOME/.keychain/$SHORT_HOST-sh-gpg" @@ -34,8 +22,18 @@ if [ "$IS_WSL" = true ]; then else echo "Warning: keychain is not installed. Please install keychain to manage ssh/gpg agents." fi +} + +# Detect if running inside WSL by checking /proc/version for "Microsoft" +if grep -qi microsoft /proc/version; then + IS_WSL=true else - # Not WSL - assume gnome-keyring handles ssh-agent and gpg-agent - # Do nothing here to avoid conflicts with gnome-keyring + IS_WSL=false +fi + +if [ "$IS_WSL" = true ]; then + start_keychain "$HOME/.ssh/id_rsa_deadalus" "9DDD59AD62494FB2" +else + start_keychain "$HOME/.ssh/id_ed25519_nymph" "9DDD59AD62494FB2" fi diff --git a/zsh/.zshrc b/zsh/.zshrc index 2cbb4d4..063249c 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -78,7 +78,6 @@ plugins=( command-not-found fzf gitignore - keychain mise zoxide zsh-autosuggestions @@ -127,3 +126,4 @@ export FZF_HOME=$HOME/.oh-my-zsh/custom/plugins/fzf source <(fzf --zsh) source "$FZF_HOME/shell/key-bindings.zsh" source "$FZF_HOME/shell/completion.zsh" +