diff --git a/pkgs/stdenv/generic/builder.sh b/pkgs/stdenv/generic/builder.sh index fd4c17ca2519..6274200900cc 100644 --- a/pkgs/stdenv/generic/builder.sh +++ b/pkgs/stdenv/generic/builder.sh @@ -9,9 +9,15 @@ mkdir $out echo "$preHook" > $out/setup cat "$setup" >> $out/setup +if [ "$withNixImpure" == 1 ]; then + # sed wants \&\& for a && + niximpure='test -f /niximpure/impure.sh \&\& . /niximpure/impure.sh' +fi + sed -e "s^@initialPath@^$initialPath^g" \ -e "s^@gcc@^$gcc^g" \ -e "s^@shell@^$shell^g" \ + -e "s^@niximpure@^$niximpure^g" \ < $out/setup > $out/setup.tmp mv $out/setup.tmp $out/setup diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix index ea101ddb075c..d85d9dfc06af 100644 --- a/pkgs/stdenv/generic/default.nix +++ b/pkgs/stdenv/generic/default.nix @@ -1,5 +1,6 @@ { system, name ? "stdenv", preHook ? "", initialPath, gcc, shell , extraAttrs ? {}, overrides ? (pkgs: {}) +, withNixImpure ? false , # The `fetchurl' to use for downloading curl and its dependencies # (see all-packages.nix). @@ -26,7 +27,7 @@ let setup = setupScript; - inherit preHook initialPath gcc shell; + inherit preHook initialPath gcc shell withNixImpure; propagatedUserEnvPkgs = [gcc] ++ lib.filter lib.isDerivation initialPath; diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index e30b0656e623..230694ccf35c 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -270,6 +270,7 @@ elif [ "$NIX_BUILD_CORES" -le 0 ]; then fi export NIX_BUILD_CORES +@niximpure@ ###################################################################### # Misc. helper functions. diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 224e749e6090..cae95615a446 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -95,6 +95,7 @@ rec { initialPath = [bootstrapTools] ++ extraPath; fetchurlBoot = fetchurl; inherit gcc; + withNixImpure = if platform ? nixImpure then platform.nixImpure else false; # Having the proper 'platform' in all the stdenvs allows getting proper # linuxHeaders for example. extraAttrs = extraAttrs // { inherit platform; }; @@ -270,7 +271,7 @@ rec { inherit system; preHook = commonPreHook; - + initialPath = ((import ../common-path.nix) {pkgs = stdenvLinuxBoot4Pkgs;}) ++ [stdenvLinuxBoot4Pkgs.patchelf]; @@ -287,6 +288,8 @@ rec { shell = stdenvLinuxBoot4Pkgs.bash + "/bin/bash"; fetchurlBoot = fetchurl; + + withNixImpure = if platform ? nixImpure then platform.nixImpure else false; extraAttrs = { inherit (stdenvLinuxBoot3Pkgs) glibc;