From fea908fde99e4dc812e973459875a082c72523f4 Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Mon, 18 May 2026 13:43:58 +0200 Subject: [PATCH] stdenv: do not leak outputName out of loop This is an implementation detail leaking out into the bash environment and it did manange to confuse me as potentially being a way to get the "default" output name when structuredAttrs is enabled, because of the "outputName" derivation attribute. --- pkgs/stdenv/generic/setup.sh | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 1c5c82be25b7..98eeded49b8c 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -29,10 +29,15 @@ if [[ -n "${NIX_ATTRS_JSON_FILE:-}" ]]; then __structuredAttrs=1 echo "structuredAttrs is enabled" - for outputName in "${!outputs[@]}"; do - # ex: out=/nix/store/... - export "$outputName=${outputs[$outputName]}" - done + _exportOutputsByName() { + local outputName + for outputName in "${!outputs[@]}"; do + # ex: out=/nix/store/... + export "$outputName=${outputs[$outputName]}" + done + } + + _exportOutputsByName else __structuredAttrs= : "${outputs:=out}"