From 0f4e5b4999fd6a42ece5da8a3a2439a50e48e486 Mon Sep 17 00:00:00 2001 From: jakob Date: Thu, 14 Sep 2023 14:13:08 +0200 Subject: [PATCH] keychain: fix edge-cases in nushell integration - If the parse does not match/returns an empty list, transpose does not transform it into a record and thus load-env fails. - The parsing assumes keychain to emit bash-style completions, so set SHELL=bash to ensure keychain output is in the expected format. PR #4459 --- modules/programs/keychain.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/programs/keychain.nix b/modules/programs/keychain.nix index d59855f5..4aeef413 100644 --- a/modules/programs/keychain.nix +++ b/modules/programs/keychain.nix @@ -117,7 +117,10 @@ in { eval "$(SHELL=zsh ${shellCommand})" ''; programs.nushell.extraConfig = mkIf cfg.enableNushellIntegration '' - ${shellCommand} | parse -r '(\w+)=(.*); export \1' | transpose -ird | load-env + let keychain_shell_command = (SHELL=bash ${shellCommand}| parse -r '(\w+)=(.*); export \1' | transpose -ird) + if not ($keychain_shell_command|is-empty) { + $keychain_shell_command | load-env + } ''; xsession.initExtra = mkIf cfg.enableXsessionIntegration '' eval "$(SHELL=bash ${shellCommand})"