From 7a12bc2007accb5022037b5a04b0e5475a8bb409 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Mon, 27 May 2024 22:09:57 +0200 Subject: [PATCH] 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 --- package.nix | 7 +++++++ 1 file changed, 7 insertions(+) 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