From a3cab812ac424ce6115c66d441ceaa454f59f3ae Mon Sep 17 00:00:00 2001 From: Tianyao Chou Date: Thu, 30 Jun 2022 17:42:57 +0200 Subject: [PATCH] add escape to shell aliases --- modules/environment/default.nix | 3 ++- modules/programs/fish.nix | 3 ++- tests/programs-zsh.nix | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/environment/default.nix b/modules/environment/default.nix index 601b0ca8..aa713f6f 100644 --- a/modules/environment/default.nix +++ b/modules/environment/default.nix @@ -9,7 +9,8 @@ let mapAttrsToList (n: v: ''export ${n}="${v}"'') cfg.variables; aliasCommands = - mapAttrsFlatten (n: v: ''alias ${n}="${v}"'') cfg.shellAliases; + mapAttrsFlatten (n: v: ''alias ${n}=${escapeShellArg v}'') + (filterAttrs (k: v: v != null) cfg.shellAliases); makeDrvBinPath = concatMapStringsSep ":" (p: if isDerivation p then "${p}/bin" else p); in diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 8285364d..7a1ba10d 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -9,7 +9,8 @@ let cfg = config.programs.fish; fishAliases = concatStringsSep "\n" ( - mapAttrsFlatten (k: v: "alias ${k} '${v}'") cfg.shellAliases + mapAttrsFlatten (k: v: "alias ${k} ${escapeShellArg v}") + (filterAttrs (k: v: v != null) cfg.shellAliases) ); envShellInit = pkgs.writeText "shellInit" cfge.shellInit; diff --git a/tests/programs-zsh.nix b/tests/programs-zsh.nix index ba032293..dd5f6e93 100644 --- a/tests/programs-zsh.nix +++ b/tests/programs-zsh.nix @@ -43,6 +43,6 @@ echo >&2 "checking zsh variables in /etc/zprofile" grep 'FOO="42"' ${config.out}/etc/zprofile echo >&2 "checking shell aliases in /etc/zprofile" - grep 'alias ls="ls -G"' ${config.out}/etc/zprofile + grep "alias ls='ls -G'" ${config.out}/etc/zprofile ''; }