diff --git a/nixos/modules/config/shells-environment.nix b/nixos/modules/config/shells-environment.nix
index 555db459f57..6379b52870e 100644
--- a/nixos/modules/config/shells-environment.nix
+++ b/nixos/modules/config/shells-environment.nix
@@ -108,14 +108,14 @@ in
};
environment.shellAliases = mkOption {
- default = {};
- example = { ll = "ls -l"; };
+ example = { l = null; ll = "ls -l"; };
description = ''
An attribute set that maps aliases (the top level attribute names in
this option) to command strings or directly to build outputs. The
aliases are added to all users' shells.
+ Aliases mapped to null
are ignored.
'';
- type = types.attrs; # types.attrsOf types.stringOrPath;
+ type = with types; attrsOf (nullOr (either str path));
};
environment.binsh = mkOption {
@@ -157,6 +157,12 @@ in
# terminal instead of logging out of X11).
environment.variables = config.environment.sessionVariables;
+ environment.shellAliases = mapAttrs (name: mkDefault) {
+ ls = "ls --color=tty";
+ ll = "ls -l";
+ l = "ls -alh";
+ };
+
environment.etc."shells".text =
''
${concatStringsSep "\n" (map utils.toShellPath cfg.shells)}
diff --git a/nixos/modules/programs/bash/bash.nix b/nixos/modules/programs/bash/bash.nix
index f664e222555..0fbc77ea44c 100644
--- a/nixos/modules/programs/bash/bash.nix
+++ b/nixos/modules/programs/bash/bash.nix
@@ -33,7 +33,8 @@ let
'';
bashAliases = concatStringsSep "\n" (
- mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}") cfg.shellAliases
+ mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}")
+ (filterAttrs (k: v: !isNull v) cfg.shellAliases)
);
in
@@ -59,12 +60,12 @@ in
*/
shellAliases = mkOption {
- default = config.environment.shellAliases;
+ default = {};
description = ''
- Set of aliases for bash shell. See
- for an option format description.
+ Set of aliases for bash shell, which overrides .
+ See for an option format description.
'';
- type = types.attrs; # types.attrsOf types.stringOrPath;
+ type = with types; attrsOf (nullOr (either str path));
};
shellInit = mkOption {
@@ -125,6 +126,8 @@ in
programs.bash = {
+ shellAliases = mapAttrs (name: mkDefault) cfge.shellAliases;
+
shellInit = ''
if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]; then
. ${config.system.build.setEnvironment}
diff --git a/nixos/modules/programs/fish.nix b/nixos/modules/programs/fish.nix
index 5948fe11f92..b38af07b92c 100644
--- a/nixos/modules/programs/fish.nix
+++ b/nixos/modules/programs/fish.nix
@@ -9,7 +9,8 @@ let
cfg = config.programs.fish;
fishAliases = concatStringsSep "\n" (
- mapAttrsFlatten (k: v: "alias ${k} ${escapeShellArg v}") cfg.shellAliases
+ mapAttrsFlatten (k: v: "alias ${k} ${escapeShellArg v}")
+ (filterAttrs (k: v: !isNull v) cfg.shellAliases)
);
in
@@ -53,12 +54,12 @@ in
};
shellAliases = mkOption {
- default = config.environment.shellAliases;
+ default = {};
description = ''
- Set of aliases for fish shell. See
- for an option format description.
+ Set of aliases for fish shell, which overrides .
+ See for an option format description.
'';
- type = types.attrs;
+ type = with types; attrsOf (nullOr (either str path));
};
shellInit = mkOption {
@@ -99,6 +100,8 @@ in
config = mkIf cfg.enable {
+ programs.fish.shellAliases = mapAttrs (name: mkDefault) cfge.shellAliases;
+
environment.etc."fish/foreign-env/shellInit".text = cfge.shellInit;
environment.etc."fish/foreign-env/loginShellInit".text = cfge.loginShellInit;
environment.etc."fish/foreign-env/interactiveShellInit".text = cfge.interactiveShellInit;
diff --git a/nixos/modules/programs/shell.nix b/nixos/modules/programs/shell.nix
index 944a8bdf16f..6aa0262e3a4 100644
--- a/nixos/modules/programs/shell.nix
+++ b/nixos/modules/programs/shell.nix
@@ -8,12 +8,6 @@ with lib;
config = {
- environment.shellAliases =
- { ls = "ls --color=tty";
- ll = "ls -l";
- l = "ls -alh";
- };
-
environment.shellInit =
''
# Set up the per-user profile.
diff --git a/nixos/modules/programs/zsh/zsh.nix b/nixos/modules/programs/zsh/zsh.nix
index 865d148c162..164d8db5859 100644
--- a/nixos/modules/programs/zsh/zsh.nix
+++ b/nixos/modules/programs/zsh/zsh.nix
@@ -11,7 +11,8 @@ let
cfg = config.programs.zsh;
zshAliases = concatStringsSep "\n" (
- mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}") cfg.shellAliases
+ mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}")
+ (filterAttrs (k: v: !isNull v) cfg.shellAliases)
);
in
@@ -34,13 +35,12 @@ in
};
shellAliases = mkOption {
- default = config.environment.shellAliases;
+ default = {};
description = ''
- Set of aliases for zsh shell. Overrides the default value taken from
- .
+ Set of aliases for zsh shell, which overrides .
See for an option format description.
'';
- type = types.attrs; # types.attrsOf types.stringOrPath;
+ type = with types; attrsOf (nullOr (either str path));
};
shellInit = mkOption {
@@ -106,6 +106,8 @@ in
config = mkIf cfg.enable {
+ programs.zsh.shellAliases = mapAttrs (name: mkDefault) cfge.shellAliases;
+
environment.etc."zshenv".text =
''
# /etc/zshenv: DO NOT EDIT -- this file has been generated automatically.