summary refs log tree commit diff
path: root/pkgs/stdenv
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/stdenv')
-rw-r--r--pkgs/stdenv/adapters.nix116
-rw-r--r--pkgs/stdenv/booter.nix15
-rw-r--r--pkgs/stdenv/cross/default.nix27
-rw-r--r--pkgs/stdenv/custom/default.nix9
-rw-r--r--pkgs/stdenv/darwin/default.nix17
-rw-r--r--pkgs/stdenv/default.nix4
-rw-r--r--pkgs/stdenv/freebsd/default.nix8
-rw-r--r--pkgs/stdenv/generic/default.nix14
-rw-r--r--pkgs/stdenv/linux/default.nix32
-rw-r--r--pkgs/stdenv/linux/make-bootstrap-tools-cross.nix58
-rw-r--r--pkgs/stdenv/native/default.nix13
-rw-r--r--pkgs/stdenv/nix/default.nix4
12 files changed, 179 insertions, 138 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index 11f9a43c035e..7e0eaeddd2c4 100644
--- a/pkgs/stdenv/adapters.nix
+++ b/pkgs/stdenv/adapters.nix
@@ -56,69 +56,59 @@ rec {
 
   # Return a modified stdenv that adds a cross compiler to the
   # builds.
-  makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv //
-    { mkDerivation = {name ? "", buildInputs ? [], nativeBuildInputs ? [],
-            propagatedBuildInputs ? [], propagatedNativeBuildInputs ? [],
-            selfNativeBuildInput ? false, ...}@args: let
-
-            # *BuildInputs exists temporarily as another name for
-            # *HostInputs.
-
-            # In nixpkgs, sometimes 'null' gets in as a buildInputs element,
-            # and we handle that through isAttrs.
-            getNativeDrv = drv: drv.nativeDrv or drv;
-            getCrossDrv = drv: drv.crossDrv or drv;
-            nativeBuildInputsDrvs = map getNativeDrv nativeBuildInputs;
-            buildInputsDrvs = map getCrossDrv buildInputs;
-            propagatedBuildInputsDrvs = map getCrossDrv propagatedBuildInputs;
-            propagatedNativeBuildInputsDrvs = map getNativeDrv propagatedNativeBuildInputs;
-
-            # The base stdenv already knows that nativeBuildInputs and
-            # buildInputs should be built with the usual gcc-wrapper
-            # And the same for propagatedBuildInputs.
-            nativeDrv = stdenv.mkDerivation args;
-
-            # Temporary expression until the cross_renaming, to handle the
-            # case of pkgconfig given as buildInput, but to be used as
-            # nativeBuildInput.
-            hostAsNativeDrv = drv:
-                builtins.unsafeDiscardStringContext drv.nativeDrv.drvPath
-                == builtins.unsafeDiscardStringContext drv.crossDrv.drvPath;
-            buildInputsNotNull = stdenv.lib.filter
-                (drv: builtins.isAttrs drv && drv ? nativeDrv) buildInputs;
-            nativeInputsFromBuildInputs = stdenv.lib.filter hostAsNativeDrv buildInputsNotNull;
-
-            # We should overwrite the input attributes in crossDrv, to overwrite
-            # the defaults for only-native builds in the base stdenv
-            crossDrv = if cross == null then nativeDrv else
-                stdenv.mkDerivation (args // {
-                    name = name + "-" + cross.config;
-                    nativeBuildInputs = nativeBuildInputsDrvs
-                      ++ nativeInputsFromBuildInputs
-                      ++ [ gccCross binutilsCross ]
-                      ++ stdenv.lib.optional selfNativeBuildInput nativeDrv
-                        # without proper `file` command, libtool sometimes fails
-                        # to recognize 64-bit DLLs
-                      ++ stdenv.lib.optional (cross.config  == "x86_64-w64-mingw32") pkgs.file
-                      ;
-
-                    # Cross-linking dynamic libraries, every buildInput should
-                    # be propagated because ld needs the -rpath-link to find
-                    # any library needed to link the program dynamically at
-                    # loader time. ld(1) explains it.
-                    buildInputs = [];
-                    propagatedBuildInputs = propagatedBuildInputsDrvs ++ buildInputsDrvs;
-                    propagatedNativeBuildInputs = propagatedNativeBuildInputsDrvs;
-
-                    crossConfig = cross.config;
-                } // args.crossAttrs or {});
-        in nativeDrv // {
-          inherit crossDrv nativeDrv;
-        };
-    } // {
-      inherit cross gccCross binutilsCross;
-      ccCross = gccCross;
-    };
+  makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv // {
+
+    mkDerivation =
+      { name ? "", buildInputs ? [], nativeBuildInputs ? []
+      , propagatedBuildInputs ? [], propagatedNativeBuildInputs ? []
+      , selfNativeBuildInput ? false, ...
+      } @ args:
+
+      let
+        # *BuildInputs exists temporarily as another name for
+        # *HostInputs.
+
+        # The base stdenv already knows that nativeBuildInputs and
+        # buildInputs should be built with the usual gcc-wrapper
+        # And the same for propagatedBuildInputs.
+        nativeDrv = stdenv.mkDerivation args;
+
+        # Temporary expression until the cross_renaming, to handle the
+        # case of pkgconfig given as buildInput, but to be used as
+        # nativeBuildInput.
+        hostAsNativeDrv = drv:
+            builtins.unsafeDiscardStringContext drv.nativeDrv.drvPath
+            == builtins.unsafeDiscardStringContext drv.crossDrv.drvPath;
+        buildInputsNotNull = stdenv.lib.filter
+            (drv: builtins.isAttrs drv && drv ? nativeDrv) buildInputs;
+        nativeInputsFromBuildInputs = stdenv.lib.filter hostAsNativeDrv buildInputsNotNull;
+      in
+        stdenv.mkDerivation (args // {
+          name = name + "-" + cross.config;
+          nativeBuildInputs = nativeBuildInputs
+            ++ nativeInputsFromBuildInputs
+            ++ [ gccCross binutilsCross ]
+            ++ stdenv.lib.optional selfNativeBuildInput nativeDrv
+              # without proper `file` command, libtool sometimes fails
+              # to recognize 64-bit DLLs
+            ++ stdenv.lib.optional (cross.config  == "x86_64-w64-mingw32") pkgs.file
+            ;
+
+          # Cross-linking dynamic libraries, every buildInput should
+          # be propagated because ld needs the -rpath-link to find
+          # any library needed to link the program dynamically at
+          # loader time. ld(1) explains it.
+          buildInputs = [];
+          propagatedBuildInputs = propagatedBuildInputs ++ buildInputs;
+          propagatedNativeBuildInputs = propagatedNativeBuildInputs;
+
+          crossConfig = cross.config;
+        } // args.crossAttrs or {});
+
+    inherit gccCross binutilsCross;
+    ccCross = gccCross;
+
+  };
 
 
   /* Modify a stdenv so that the specified attributes are added to
diff --git a/pkgs/stdenv/booter.nix b/pkgs/stdenv/booter.nix
index 11ca8e1440e1..2c82d12da95d 100644
--- a/pkgs/stdenv/booter.nix
+++ b/pkgs/stdenv/booter.nix
@@ -57,12 +57,17 @@ stageFuns: let
   # debugging purposes.
   folder = stageFun: finalSoFar: let
     args = stageFun finalSoFar;
-    stdenv = args.stdenv // {
-      # For debugging
-      __bootPackages = finalSoFar;
+    args' = args // {
+      stdenv = args.stdenv // {
+        # For debugging
+        __bootPackages = finalSoFar;
+      };
     };
-    args' = args // { inherit stdenv; };
   in
-    (if args.__raw or false then lib.id else allPackages) args';
+    if args.__raw or false
+    then args'
+    else allPackages ((builtins.removeAttrs args' ["selfBuild"]) // {
+      buildPackages = if args.selfBuild or true then null else finalSoFar;
+    });
 
 in lib.lists.fold folder {} withAllowCustomOverrides
diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix
index 16f41671b768..37f403acee9e 100644
--- a/pkgs/stdenv/cross/default.nix
+++ b/pkgs/stdenv/cross/default.nix
@@ -1,10 +1,10 @@
 { lib
-, system, platform, crossSystem, config, overlays
+, localSystem, crossSystem, config, overlays
 }:
 
 let
   bootStages = import ../. {
-    inherit lib system platform overlays;
+    inherit lib localSystem overlays;
     crossSystem = null;
     # Ignore custom stdenvs when cross compiling for compatability
     config = builtins.removeAttrs config [ "replaceStdenv" ];
@@ -12,25 +12,28 @@ let
 
 in bootStages ++ [
 
-  # Build Packages.
-  #
-  # For now, this is just used to build the native stdenv. Eventually, it
-  # should be used to build compilers and other such tools targeting the cross
-  # platform. Then, `forceNativeDrv` can be removed.
+  # Build Packages
   (vanillaPackages: {
-    inherit system platform crossSystem config overlays;
+    buildPlatform = localSystem;
+    hostPlatform = localSystem;
+    targetPlatform = crossSystem;
+    inherit config overlays;
+    # Should be false, but we're trying to preserve hashes for now
+    selfBuild = true;
     # It's OK to change the built-time dependencies
     allowCustomOverrides = true;
     stdenv = vanillaPackages.stdenv // {
-      # Needed elsewhere as a hacky way to pass the target
-      cross = crossSystem;
       overrides = _: _: {};
     };
   })
 
-  # Run packages
+  # Run Packages
   (buildPackages: {
-    inherit system platform crossSystem config overlays;
+    buildPlatform = localSystem;
+    hostPlatform = crossSystem;
+    targetPlatform = crossSystem;
+    inherit config overlays;
+    selfBuild = false;
     stdenv = if crossSystem.useiOSCross or false
       then let
           inherit (buildPackages.darwin.ios-cross {
diff --git a/pkgs/stdenv/custom/default.nix b/pkgs/stdenv/custom/default.nix
index d7e9bf53bed1..d5dc977b37a7 100644
--- a/pkgs/stdenv/custom/default.nix
+++ b/pkgs/stdenv/custom/default.nix
@@ -1,12 +1,12 @@
 { lib
-, system, platform, crossSystem, config, overlays
+, localSystem, crossSystem, config, overlays
 }:
 
 assert crossSystem == null;
 
 let
   bootStages = import ../. {
-    inherit lib system platform crossSystem overlays;
+    inherit lib localSystem crossSystem overlays;
     # Remove config.replaceStdenv to ensure termination.
     config = builtins.removeAttrs config [ "replaceStdenv" ];
   };
@@ -15,7 +15,10 @@ in bootStages ++ [
 
   # Additional stage, built using custom stdenv
   (vanillaPackages: {
-    inherit system platform crossSystem config overlays;
+    buildPlatform = localSystem;
+    hostPlatform = localSystem;
+    targetPlatform = localSystem;
+    inherit config overlays;
     stdenv = config.replaceStdenv { pkgs = vanillaPackages; };
   })
 
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix
index e3a87ea078fc..e647c81890e1 100644
--- a/pkgs/stdenv/darwin/default.nix
+++ b/pkgs/stdenv/darwin/default.nix
@@ -1,11 +1,12 @@
 { lib
-, system, platform, crossSystem, config, overlays
+, localSystem, crossSystem, config, overlays
 
 # Allow passing in bootstrap files directly so we can test the stdenv bootstrap process when changing the bootstrap tools
 , bootstrapFiles ? let
   fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> {
     url = "http://tarballs.nixos.org/stdenv-darwin/x86_64/33f59c9d11b8d5014dfd18cc11a425f6393c884a/${file}";
-    inherit sha256 system executable;
+    inherit (localSystem) system;
+    inherit sha256 executable;
   }; in {
     sh      = fetch { file = "sh";    sha256 = "1rx4kg6358xdj05z0m139a0zn4f4zfmq4n4vimlmnwyfiyn4x7wk"; };
     bzip2   = fetch { file = "bzip2"; sha256 = "104qnhzk79vkbp2yi0kci6lszgfppvrwk3rgxhry842ly1xz2r7l"; };
@@ -18,6 +19,8 @@
 assert crossSystem == null;
 
 let
+  inherit (localSystem) system platform;
+
   libSystemProfile = ''
     (import "${./standard-sandbox.sb}")
   '';
@@ -98,7 +101,10 @@ in rec {
       };
 
     in {
-      inherit system platform crossSystem config overlays;
+      buildPlatform = localSystem;
+      hostPlatform = localSystem;
+      targetPlatform = localSystem;
+      inherit config overlays;
       stdenv = thisStdenv;
     };
 
@@ -316,7 +322,10 @@ in rec {
     stage3
     stage4
     (prevStage: {
-      inherit system crossSystem platform config overlays;
+      buildPlatform = localSystem;
+      hostPlatform = localSystem;
+      targetPlatform = localSystem;
+      inherit config overlays;
       stdenv = stdenvDarwin prevStage;
     })
   ];
diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix
index f60ffec4b564..78dbde13b89d 100644
--- a/pkgs/stdenv/default.nix
+++ b/pkgs/stdenv/default.nix
@@ -7,7 +7,7 @@
 { # Args just for stdenvs' usage
   lib
   # Args to pass on to the pkgset builder, too
-, system, platform, crossSystem, config, overlays
+, localSystem, crossSystem, config, overlays
 } @ args:
 
 let
@@ -51,4 +51,4 @@ in
     "i686-cygwin" = stagesNative;
     "x86_64-cygwin" = stagesNative;
     "x86_64-freebsd" = stagesFreeBSD;
-  }.${system} or stagesNative
+  }.${localSystem.system} or stagesNative
diff --git a/pkgs/stdenv/freebsd/default.nix b/pkgs/stdenv/freebsd/default.nix
index 2cb059deb34b..b926c6bdd901 100644
--- a/pkgs/stdenv/freebsd/default.nix
+++ b/pkgs/stdenv/freebsd/default.nix
@@ -1,8 +1,9 @@
 { lib
-, system, platform, crossSystem, config, overlays
+, localSystem, crossSystem, config, overlays
 }:
 
 assert crossSystem == null;
+let inherit (localSystem) system; in
 
 
 [
@@ -58,7 +59,10 @@ assert crossSystem == null;
   })
 
   (prevStage: {
-    inherit system crossSystem platform config overlays;
+    buildPlatform = localSystem;
+    hostPlatform = localSystem;
+    targetPlatform = localSystem;
+    inherit config overlays;
     stdenv = import ../generic {
       name = "stdenv-freebsd-boot-3";
       inherit system config;
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 32e0d8948188..269d7ef893a1 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -115,7 +115,19 @@ let
     , sandboxProfile ? ""
     , propagatedSandboxProfile ? ""
     , ... } @ attrs:
-    let
+    let # Rename argumemnts to avoid cycles
+      buildInputs__ = buildInputs;
+      nativeBuildInputs__ = nativeBuildInputs;
+      propagatedBuildInputs__ = propagatedBuildInputs;
+      propagatedNativeBuildInputs__ = propagatedNativeBuildInputs;
+    in let
+      getNativeDrv = drv: drv.nativeDrv or drv;
+      getCrossDrv = drv: drv.crossDrv or drv;
+      nativeBuildInputs = map getNativeDrv nativeBuildInputs__;
+      buildInputs = map getCrossDrv buildInputs__;
+      propagatedBuildInputs = map getCrossDrv propagatedBuildInputs__;
+      propagatedNativeBuildInputs = map getNativeDrv propagatedNativeBuildInputs__;
+    in let
       pos' =
         if pos != null then
           pos
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index 12da007f2a76..611628b35aba 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -4,21 +4,23 @@
 # compiler and linker that do not search in default locations,
 # ensuring purity of components produced by it.
 { lib
-, system, platform, crossSystem, config, overlays
-
-, bootstrapFiles ?
-    if system == "i686-linux" then import ./bootstrap-files/i686.nix
-    else if system == "x86_64-linux" then import ./bootstrap-files/x86_64.nix
-    else if system == "armv5tel-linux" then import ./bootstrap-files/armv5tel.nix
-    else if system == "armv6l-linux" then import ./bootstrap-files/armv6l.nix
-    else if system == "armv7l-linux" then import ./bootstrap-files/armv7l.nix
-    else if system == "mips64el-linux" then import ./bootstrap-files/loongson2f.nix
-    else abort "unsupported platform for the pure Linux stdenv"
+, localSystem, crossSystem, config, overlays
+
+, bootstrapFiles ? { # switch
+    "i686-linux" = import ./bootstrap-files/i686.nix;
+    "x86_64-linux" = import ./bootstrap-files/x86_64.nix;
+    "armv5tel-linux" = import ./bootstrap-files/armv5tel.nix;
+    "armv6l-linux" = import ./bootstrap-files/armv6l.nix;
+    "armv7l-linux" = import ./bootstrap-files/armv7l.nix;
+    "mips64el-linux" = import ./bootstrap-files/loongson2f.nix;
+  }.${localSystem.system}
+    or (abort "unsupported platform for the pure Linux stdenv")
 }:
 
 assert crossSystem == null;
 
 let
+  inherit (localSystem) system platform;
 
   commonPreHook =
     ''
@@ -91,7 +93,10 @@ let
       };
 
     in {
-      inherit system platform crossSystem config overlays;
+      buildPlatform = localSystem;
+      hostPlatform = localSystem;
+      targetPlatform = localSystem;
+      inherit config overlays;
       stdenv = thisStdenv;
     };
 
@@ -246,7 +251,10 @@ in
   # dependency (`nix-store -qR') on bootstrapTools or the first
   # binutils built.
   (prevStage: {
-    inherit system crossSystem platform config overlays;
+    buildPlatform = localSystem;
+    hostPlatform = localSystem;
+    targetPlatform = localSystem;
+    inherit config overlays;
     stdenv = import ../generic rec {
       inherit system config;
 
diff --git a/pkgs/stdenv/linux/make-bootstrap-tools-cross.nix b/pkgs/stdenv/linux/make-bootstrap-tools-cross.nix
index 9f4a4517627e..b5dfcb73a122 100644
--- a/pkgs/stdenv/linux/make-bootstrap-tools-cross.nix
+++ b/pkgs/stdenv/linux/make-bootstrap-tools-cross.nix
@@ -57,46 +57,46 @@ let
 
   pkgs = pkgsFun ({inherit system;} // selectedCrossSystem);
 
-  inherit (pkgs) stdenv nukeReferences cpio binutilsCross;
-
-  glibc = pkgs.libcCross;
-  bash = pkgs.bash.crossDrv;
-  findutils = pkgs.findutils.crossDrv;
-  diffutils = pkgs.diffutils.crossDrv;
-  gnused = pkgs.gnused.crossDrv;
-  gnugrep = pkgs.gnugrep.crossDrv;
-  gawk = pkgs.gawk.crossDrv;
-  gzip = pkgs.gzip.crossDrv;
-  bzip2 = pkgs.bzip2.crossDrv;
-  gnumake = pkgs.gnumake.crossDrv;
-  patch = pkgs.patch.crossDrv;
-  patchelf = pkgs.patchelf.crossDrv;
-  gcc = pkgs.gcc.cc.crossDrv;
-  gmpxx = pkgs.gmpxx.crossDrv;
-  mpfr = pkgs.mpfr.crossDrv;
-  zlib = pkgs.zlib.crossDrv;
-  libmpc = pkgs.libmpc.crossDrv;
-  binutils = pkgs.binutils.crossDrv;
-  libelf = pkgs.libelf.crossDrv;
+  inherit (pkgs.buildPackages) stdenv nukeReferences cpio binutilsCross;
+
+  glibc = pkgs.buildPackages.libcCross;
+  bash = pkgs.bash;
+  findutils = pkgs.findutils;
+  diffutils = pkgs.diffutils;
+  gnused = pkgs.gnused;
+  gnugrep = pkgs.gnugrep;
+  gawk = pkgs.gawk;
+  gzip = pkgs.gzip;
+  bzip2 = pkgs.bzip2;
+  gnumake = pkgs.gnumake;
+  patch = pkgs.patch;
+  patchelf = pkgs.patchelf;
+  gcc = pkgs.gcc.cc;
+  gmpxx = pkgs.gmpxx;
+  mpfr = pkgs.mpfr;
+  zlib = pkgs.zlib;
+  libmpc = pkgs.libmpc;
+  binutils = pkgs.binutils;
+  libelf = pkgs.libelf;
 
   # Keep these versions in sync with the versions used in the current GCC!
-  isl = pkgs.isl_0_14.crossDrv;
+  isl = pkgs.isl_0_14;
 in
 
 rec {
 
 
-  coreutilsMinimal = (pkgs.coreutils.override (args: {
+  coreutilsMinimal = pkgs.coreutils.override (args: {
     # We want coreutils without ACL/attr support.
     aclSupport = false;
     attrSupport = false;
     # Our tooling currently can't handle scripts in bin/, only ELFs and symlinks.
     singleBinary = "symlinks";
-  })).crossDrv;
+  });
 
-  tarMinimal = (pkgs.gnutar.override { acl = null; }).crossDrv;
+  tarMinimal = pkgs.gnutar.override { acl = null; };
 
-  busyboxMinimal = (pkgs.busybox.override {
+  busyboxMinimal = pkgs.busybox.override {
     useMusl = true;
     enableStatic = true;
     enableMinimal = true;
@@ -109,13 +109,13 @@ rec {
       CONFIG_TAR y
       CONFIG_UNXZ y
     '';
-  }).crossDrv;
+  };
 
   build =
 
     stdenv.mkDerivation {
       name = "stdenv-bootstrap-tools-cross";
-      crossConfig = stdenv.cross.config;
+      crossConfig = pkgs.hostPlatform.config;
 
       buildInputs = [nukeReferences cpio binutilsCross];
 
@@ -173,7 +173,7 @@ rec {
         cp -d ${patch}/bin/* $out/bin
         cp ${patchelf}/bin/* $out/bin
 
-        cp -d ${gnugrep.pcre.crossDrv.out}/lib/libpcre*.so* $out/lib # needed by grep
+        cp -d ${gnugrep.pcre.out}/lib/libpcre*.so* $out/lib # needed by grep
 
         # Copy what we need of GCC.
         cp -d ${gcc.out}/bin/gcc $out/bin
diff --git a/pkgs/stdenv/native/default.nix b/pkgs/stdenv/native/default.nix
index 4028638009e1..f5c0976bf931 100644
--- a/pkgs/stdenv/native/default.nix
+++ b/pkgs/stdenv/native/default.nix
@@ -1,10 +1,11 @@
 { lib
-, system, platform, crossSystem, config, overlays
+, localSystem, crossSystem, config, overlays
 }:
 
 assert crossSystem == null;
 
 let
+  inherit (localSystem) system platform;
 
   shell =
     if system == "i686-freebsd" || system == "x86_64-freebsd" then "/usr/local/bin/bash"
@@ -134,7 +135,10 @@ in
 
   # First build a stdenv based only on tools outside the store.
   (prevStage: {
-    inherit system crossSystem platform config overlays;
+    buildPlatform = localSystem;
+    hostPlatform = localSystem;
+    targetPlatform = localSystem;
+    inherit config overlays;
     stdenv = makeStdenv {
       inherit (prevStage) cc fetchurl;
     } // { inherit (prevStage) fetchurl; };
@@ -143,7 +147,10 @@ in
   # Using that, build a stdenv that adds the ‘xz’ command (which most systems
   # don't have, so we mustn't rely on the native environment providing it).
   (prevStage: {
-    inherit system crossSystem platform config overlays;
+    buildPlatform = localSystem;
+    hostPlatform = localSystem;
+    targetPlatform = localSystem;
+    inherit config overlays;
     stdenv = makeStdenv {
       inherit (prevStage.stdenv) cc fetchurl;
       extraPath = [ prevStage.xz ];
diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix
index a5f0a18464c1..9aece3ce829d 100644
--- a/pkgs/stdenv/nix/default.nix
+++ b/pkgs/stdenv/nix/default.nix
@@ -9,9 +9,9 @@ assert crossSystem == null;
 bootStages ++ [
   (prevStage: let
     inherit (prevStage) stdenv;
-    inherit (stdenv) system platform;
   in {
-    inherit system platform crossSystem config;
+    inherit (prevStage) buildPlatform hostPlatform targetPlatform;
+    inherit config overlays;
 
     stdenv = import ../generic rec {
       inherit config;