summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornikstur <nikstur@outlook.com>2025-07-27 21:19:00 +0200
committernikstur <nikstur@outlook.com>2025-08-10 22:43:28 +0200
commit898ebf78ef1fc8f3bb90922fb4a95e939f69254b (patch)
tree567ee7e3318d31bebd5e29bfe5b983dc79ca092b
parentlinuxPackages.openafs: Patch for Linux kernel 6.16 (#430219) (diff)
downloadnixpkgs-898ebf78ef1fc8f3bb90922fb4a95e939f69254b.tar.gz
nixos/bash: re-introduce enable option
-rw-r--r--nixos/modules/programs/bash/bash.nix200
1 files changed, 97 insertions, 103 deletions
diff --git a/nixos/modules/programs/bash/bash.nix b/nixos/modules/programs/bash/bash.nix
index 05b41ae619fc..b21822369a51 100644
--- a/nixos/modules/programs/bash/bash.nix
+++ b/nixos/modules/programs/bash/bash.nix
@@ -23,28 +23,23 @@ let
in
{
- imports = [
- (lib.mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
- ];
options = {
programs.bash = {
- /*
- enable = lib.mkOption {
- default = true;
- description = ''
- Whenever to configure Bash as an interactive shell.
- Note that this tries to make Bash the default
- {option}`users.defaultUserShell`,
- which in turn means that you might need to explicitly
- set this variable if you have another shell configured
- with NixOS.
- '';
- type = lib.types.bool;
- };
- */
+ enable = lib.mkOption {
+ default = true;
+ description = ''
+ Whenever to configure Bash as an interactive shell.
+ Note that this tries to make Bash the default
+ {option}`users.defaultUserShell`,
+ which in turn means that you might need to explicitly
+ set this variable if you have another shell configured
+ with NixOS.
+ '';
+ type = lib.types.bool;
+ };
shellAliases = lib.mkOption {
default = { };
@@ -129,121 +124,120 @@ in
};
- config = # lib.mkIf cfg.enable
- {
+ config = lib.mkIf cfg.enable {
- programs.bash = {
+ programs.bash = {
- shellAliases = builtins.mapAttrs (name: lib.mkDefault) cfge.shellAliases;
+ shellAliases = builtins.mapAttrs (name: lib.mkDefault) cfge.shellAliases;
- shellInit = ''
- if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]; then
- . ${config.system.build.setEnvironment}
- fi
+ shellInit = ''
+ if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]; then
+ . ${config.system.build.setEnvironment}
+ fi
- ${cfge.shellInit}
- '';
+ ${cfge.shellInit}
+ '';
- loginShellInit = cfge.loginShellInit;
+ loginShellInit = cfge.loginShellInit;
- interactiveShellInit = ''
- # Check the window size after every command.
- shopt -s checkwinsize
+ interactiveShellInit = ''
+ # Check the window size after every command.
+ shopt -s checkwinsize
- # Disable hashing (i.e. caching) of command lookups.
- set +h
+ # Disable hashing (i.e. caching) of command lookups.
+ set +h
- ${cfg.promptInit}
- ${cfg.promptPluginInit}
- ${bashAliases}
+ ${cfg.promptInit}
+ ${cfg.promptPluginInit}
+ ${bashAliases}
- ${cfge.interactiveShellInit}
- '';
+ ${cfge.interactiveShellInit}
+ '';
- };
+ };
- environment.etc.profile.text = ''
- # /etc/profile: DO NOT EDIT -- this file has been generated automatically.
- # This file is read for login shells.
+ environment.etc.profile.text = ''
+ # /etc/profile: DO NOT EDIT -- this file has been generated automatically.
+ # This file is read for login shells.
- # Only execute this file once per shell.
- if [ -n "$__ETC_PROFILE_SOURCED" ]; then return; fi
- __ETC_PROFILE_SOURCED=1
+ # Only execute this file once per shell.
+ if [ -n "$__ETC_PROFILE_SOURCED" ]; then return; fi
+ __ETC_PROFILE_SOURCED=1
- # Prevent this file from being sourced by interactive non-login child shells.
- export __ETC_PROFILE_DONE=1
+ # Prevent this file from being sourced by interactive non-login child shells.
+ export __ETC_PROFILE_DONE=1
- ${cfg.shellInit}
- ${cfg.loginShellInit}
+ ${cfg.shellInit}
+ ${cfg.loginShellInit}
- # Read system-wide modifications.
- if test -f /etc/profile.local; then
- . /etc/profile.local
- fi
+ # Read system-wide modifications.
+ if test -f /etc/profile.local; then
+ . /etc/profile.local
+ fi
- if [ -n "''${BASH_VERSION:-}" ]; then
- . /etc/bashrc
- fi
- '';
+ if [ -n "''${BASH_VERSION:-}" ]; then
+ . /etc/bashrc
+ fi
+ '';
- environment.etc.bashrc.text = ''
- # /etc/bashrc: DO NOT EDIT -- this file has been generated automatically.
+ environment.etc.bashrc.text = ''
+ # /etc/bashrc: DO NOT EDIT -- this file has been generated automatically.
- # Only execute this file once per shell.
- if [ -n "$__ETC_BASHRC_SOURCED" ] || [ -n "$NOSYSBASHRC" ]; then return; fi
- __ETC_BASHRC_SOURCED=1
+ # Only execute this file once per shell.
+ if [ -n "$__ETC_BASHRC_SOURCED" ] || [ -n "$NOSYSBASHRC" ]; then return; fi
+ __ETC_BASHRC_SOURCED=1
- # If the profile was not loaded in a parent process, source
- # it. But otherwise don't do it because we don't want to
- # clobber overridden values of $PATH, etc.
- if [ -z "$__ETC_PROFILE_DONE" ]; then
- . /etc/profile
- fi
+ # If the profile was not loaded in a parent process, source
+ # it. But otherwise don't do it because we don't want to
+ # clobber overridden values of $PATH, etc.
+ if [ -z "$__ETC_PROFILE_DONE" ]; then
+ . /etc/profile
+ fi
- # We are not always an interactive shell.
- if [ -n "$PS1" ]; then
- ${cfg.interactiveShellInit}
- fi
+ # We are not always an interactive shell.
+ if [ -n "$PS1" ]; then
+ ${cfg.interactiveShellInit}
+ fi
- # Read system-wide modifications.
- if test -f /etc/bashrc.local; then
- . /etc/bashrc.local
- fi
- '';
+ # Read system-wide modifications.
+ if test -f /etc/bashrc.local; then
+ . /etc/bashrc.local
+ fi
+ '';
- environment.etc.bash_logout.text = ''
- # /etc/bash_logout: DO NOT EDIT -- this file has been generated automatically.
+ environment.etc.bash_logout.text = ''
+ # /etc/bash_logout: DO NOT EDIT -- this file has been generated automatically.
- # Only execute this file once per shell.
- if [ -n "$__ETC_BASHLOGOUT_SOURCED" ] || [ -n "$NOSYSBASHLOGOUT" ]; then return; fi
- __ETC_BASHLOGOUT_SOURCED=1
+ # Only execute this file once per shell.
+ if [ -n "$__ETC_BASHLOGOUT_SOURCED" ] || [ -n "$NOSYSBASHLOGOUT" ]; then return; fi
+ __ETC_BASHLOGOUT_SOURCED=1
- ${cfg.logout}
+ ${cfg.logout}
- # Read system-wide modifications.
- if test -f /etc/bash_logout.local; then
- . /etc/bash_logout.local
- fi
- '';
+ # Read system-wide modifications.
+ if test -f /etc/bash_logout.local; then
+ . /etc/bash_logout.local
+ fi
+ '';
- # Configuration for readline in bash. We use "option default"
- # priority to allow user override using both .text and .source.
- environment.etc.inputrc.source = lib.mkOptionDefault ./inputrc;
+ # Configuration for readline in bash. We use "option default"
+ # priority to allow user override using both .text and .source.
+ environment.etc.inputrc.source = lib.mkOptionDefault ./inputrc;
- users.defaultUserShell = lib.mkDefault pkgs.bashInteractive;
+ users.defaultUserShell = lib.mkDefault pkgs.bashInteractive;
- environment.pathsToLink = lib.optionals cfg.completion.enable [
- "/etc/bash_completion.d"
- "/share/bash-completion"
- ];
+ environment.pathsToLink = lib.optionals cfg.completion.enable [
+ "/etc/bash_completion.d"
+ "/share/bash-completion"
+ ];
- environment.shells = [
- "/run/current-system/sw/bin/bash"
- "/run/current-system/sw/bin/sh"
- "${pkgs.bashInteractive}/bin/bash"
- "${pkgs.bashInteractive}/bin/sh"
- ];
+ environment.shells = [
+ "/run/current-system/sw/bin/bash"
+ "/run/current-system/sw/bin/sh"
+ "${pkgs.bashInteractive}/bin/bash"
+ "${pkgs.bashInteractive}/bin/sh"
+ ];
- };
+ };
}