d240a0da1a
This commit changes the dependencies of stdenv, and clean-up the stdenv story by removing the `defaultStdenv` attribute as well as the `bootStdenv` parameter. Before, the final bootstrapping stage's stdenv was provided by all-packages, which was iterating multiple times over the top-level/default.nix expression, and non-final bootstrapping stages' stdenvs were explicitly specified with the `bootStdenv` parameter. Now, all stages' stdenvs are specified with the `stdenv` parameter. For non-final bootstrapping stages, this is a small change---basically just rename the parameter. For the final stage, top-level/default.nix takes the chosen stdenv and makes the final stage with it. `allPackages` is used to make all bootstrapping stages, final and non-final alike. It's basically the expression of `stage.nix` (along with a few partially-applied default arguments) Note, the make-bootstrap-tools scripts are temporarily broken
18 lines
508 B
Nix
18 lines
508 B
Nix
{ system, allPackages, platform, crossSystem, config, ... } @ args:
|
|
|
|
rec {
|
|
vanillaStdenv = import ../. (args // {
|
|
# Remove config.replaceStdenv to ensure termination.
|
|
config = builtins.removeAttrs config [ "replaceStdenv" ];
|
|
});
|
|
|
|
buildPackages = allPackages {
|
|
inherit system platform crossSystem config;
|
|
# It's OK to change the built-time dependencies
|
|
allowCustomOverrides = true;
|
|
stdenv = vanillaStdenv;
|
|
};
|
|
|
|
stdenvCustom = config.replaceStdenv { pkgs = buildPackages; };
|
|
}
|