aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstuebinm <stuebinm@disroot.org>2024-05-27 22:09:57 +0200
committerstuebinm <stuebinm@disroot.org>2024-05-27 22:09:57 +0200
commit7a12bc2007accb5022037b5a04b0e5475a8bb409 (patch)
tree285249d5c937418245fa96e8ead751e1001bbced
parent2cd1ef2201cd046cbf041b52040c6e86efd927d8 (diff)
package: don't run shellHook in nested nix-shells
If a nested nix-shell is run inside a nix-shell, then the outer shell's shellHook will be passed through and run again, unless the nested shell defines its own. With lix's hook, this can be annoying: forgetting to exit its nix-shell, cd'ing to another repository & entering a nested nix-shell will happily install lix's pre-commit hook in it. This change makes lix's hook return early in such cases. Change-Id: I91cb6eb6668f3a8eace36ecbdb01eb367861d77b
-rw-r--r--package.nix7
1 files changed, 7 insertions, 0 deletions
diff --git a/package.nix b/package.nix
index c888d67d4..05503ae98 100644
--- a/package.nix
+++ b/package.nix
@@ -414,6 +414,8 @@ stdenv.mkDerivation (finalAttrs: {
glibcFix
// {
+ name = "lix-shell-env";
+
inputsFrom = [ finalAttrs ];
# For Meson to find Boost.
@@ -437,6 +439,11 @@ stdenv.mkDerivation (finalAttrs: {
++ finalAttrs.checkInputs;
shellHook = ''
+ # don't re-run the hook in (other) nested nix-shells
+ if [[ $name != lix-shell-env ]]; then
+ return;
+ fi
+
PATH=$prefix/bin:$PATH
unset PYTHONPATH
export MANPATH=$out/share/man:$MANPATH