From 953d02ba5958df017d9682f727d10a75cb8a0391 Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Thu, 12 Sep 2024 17:37:56 +0000 Subject: [PATCH] {bash,zsh}: remove nix-shell early return in /etc/{bashrc,zshenv} The condition does not match the comment, and therefore not the original intention. It currently returns early in *any* type of Nix shell, not just pure ones, including 'nix develop'. Besides being unnecessary, this check prevents Nix shells from functioning properly. For instance, it causes the initialization of the Zsh fpath to be skipped, which is critical. The fact that the user is unable to opt out of this behaviour makes this an ever bigger problem since /etc/zshenv is being loaded unconditionally by Zsh. For reference, NixOS does not perform such check, and apparently never did. --- modules/programs/bash/default.nix | 3 --- modules/programs/zsh/default.nix | 3 --- tests/programs-zsh.nix | 2 -- 3 files changed, 8 deletions(-) diff --git a/modules/programs/bash/default.nix b/modules/programs/bash/default.nix index 2e27ff9..3abb3e8 100644 --- a/modules/programs/bash/default.nix +++ b/modules/programs/bash/default.nix @@ -55,9 +55,6 @@ in if [ -n "$__ETC_BASHRC_SOURCED" -o -n "$NOSYSBASHRC" ]; then return; fi __ETC_BASHRC_SOURCED=1 - # Don't execute this file when running in a pure nix-shell. - if [ "$IN_NIX_SHELL" = "pure" ]; then return; fi - if [ -z "$__NIX_DARWIN_SET_ENVIRONMENT_DONE" ]; then . ${config.system.build.setEnvironment} fi diff --git a/modules/programs/zsh/default.nix b/modules/programs/zsh/default.nix index 7574f8e..bfbfc59 100644 --- a/modules/programs/zsh/default.nix +++ b/modules/programs/zsh/default.nix @@ -127,9 +127,6 @@ in if [ -n "''${__ETC_ZSHENV_SOURCED-}" ]; then return; fi __ETC_ZSHENV_SOURCED=1 - # Don't execute this file when running in a pure nix-shell. - if test -n "$IN_NIX_SHELL"; then return; fi - if [ -z "''${__NIX_DARWIN_SET_ENVIRONMENT_DONE-}" ]; then . ${config.system.build.setEnvironment} fi diff --git a/tests/programs-zsh.nix b/tests/programs-zsh.nix index dd5f6e9..9c98c33 100644 --- a/tests/programs-zsh.nix +++ b/tests/programs-zsh.nix @@ -22,8 +22,6 @@ echo >&2 "checking setEnvironment in /etc/zshenv" fgrep '. ${config.system.build.setEnvironment}' ${config.out}/etc/zshenv - echo >&2 "checking nix-shell return /etc/zshenv" - grep 'if test -n "$IN_NIX_SHELL"; then return; fi' ${config.out}/etc/zshenv echo >&2 "checking zshenv.d in /etc/zshenv" grep 'source /etc/zshenv.d/\*.conf' ${config.out}/etc/zshenv