aboutsummaryrefslogtreecommitdiff
path: root/pkgs/top-level/default.nix
diff options
context:
space:
mode:
authorJohn Ericson <Ericson2314@Yahoo.com>2016-11-27 12:32:56 -0800
committerJohn Ericson <jericson@galois.com>2016-11-30 19:04:22 -0500
commit07a2b17cbf541c485e04f1a8ec98ffe8c24ac713 (patch)
treed9505361a7a9c9502cbba76f9428b8ebe81a6bad /pkgs/top-level/default.nix
parent2df990967be3c21f074c56682f8fa47bdd7cba7b (diff)
top-level: Split some of `pkgs/top-level/default.nix` to `pkgs/top-level/stage.nix`
This is preparation for the latter just building a single stage, and the former building a package set with the bootstrapped stdenv.
Diffstat (limited to 'pkgs/top-level/default.nix')
-rw-r--r--pkgs/top-level/default.nix98
1 files changed, 8 insertions, 90 deletions
diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix
index 831b1db0cea..c5b8bbac31c 100644
--- a/pkgs/top-level/default.nix
+++ b/pkgs/top-level/default.nix
@@ -4,37 +4,22 @@
packages in the Nix Packages collection for some particular
platform. */
-
{ # The system (e.g., `i686-linux') for which to build the packages.
system
-, # The standard environment to use. Only used for bootstrapping. If
- # null, the default standard environment is used.
- bootStdenv ? null
-
-, # This is used because stdenv replacement and the stdenvCross do benefit from
- # the overridden configuration provided by the user, as opposed to the normal
- # bootstrapping stdenvs.
- allowCustomOverrides ? (bootStdenv == null)
-
-, # Non-GNU/Linux OSes are currently "impure" platforms, with their libc
- # outside of the store. Thus, GCC, GFortran, & co. must always look for
- # files in standard system directories (/usr/include, etc.)
- noSysDirs ? (system != "x86_64-freebsd" && system != "i686-freebsd"
- && system != "x86_64-solaris"
- && system != "x86_64-kfreebsd-gnu")
-
, # Allow a configuration attribute set to be passed in as an argument.
config ? {}
, crossSystem ? null
, platform ? null
+, ...
} @ args:
+let # Rename the function arguments
+ configExpr = config;
+ platform_ = platform;
-let configExpr = config; platform_ = platform; in # rename the function arguments
-
-let
+in let
lib = import ../../lib;
# Allow both:
@@ -72,75 +57,8 @@ let
# deterministically inferred the same way.
nixpkgsFun = newArgs: import ./. (args // newArgs);
- stdenvAdapters = self: super:
- let res = import ../stdenv/adapters.nix self; in res // {
- stdenvAdapters = res;
- };
-
- trivialBuilders = self: super:
- import ../build-support/trivial-builders.nix {
- inherit lib; inherit (self) stdenv stdenvNoCC; inherit (self.xorg) lndir;
- };
-
- stdenvDefault = self: super:
- import ./stdenv.nix {
- inherit system bootStdenv crossSystem config platform lib nixpkgsFun;
- };
-
- allPackages = self: super:
- let res = import ./all-packages.nix
- { inherit system noSysDirs config crossSystem platform lib nixpkgsFun; }
- res self;
- in res;
-
- aliases = self: super: import ./aliases.nix super;
-
- # stdenvOverrides is used to avoid circular dependencies for building
- # the standard build environment. This mechanism uses the override
- # mechanism to implement some staged compilation of the stdenv.
- #
- # We don't want stdenv overrides in the case of cross-building, or
- # otherwise the basic overridden packages will not be built with the
- # crossStdenv adapter.
- stdenvOverrides = self: super:
- lib.optionalAttrs (crossSystem == null && super.stdenv ? overrides)
- (super.stdenv.overrides super);
-
- # Allow packages to be overridden globally via the `packageOverrides'
- # configuration option, which must be a function that takes `pkgs'
- # as an argument and returns a set of new or overridden packages.
- # The `packageOverrides' function is called with the *original*
- # (un-overridden) set of packages, allowing packageOverrides
- # attributes to refer to the original attributes (e.g. "foo =
- # ... pkgs.foo ...").
- configOverrides = self: super:
- lib.optionalAttrs allowCustomOverrides
- ((config.packageOverrides or (super: {})) super);
-
- # The complete chain of package set builders, applied from top to bottom
- toFix = lib.foldl' (lib.flip lib.extends) (self: {}) [
- stdenvAdapters
- trivialBuilders
- stdenvDefault
- allPackages
- aliases
- stdenvOverrides
- configOverrides
- ];
-
- # Use `overridePackages` to easily override this package set.
- # Warning: this function is very expensive and must not be used
- # from within the nixpkgs repository.
- #
- # Example:
- # pkgs.overridePackages (self: super: {
- # foo = super.foo.override { ... };
- # }
- #
- # The result is `pkgs' where all the derivations depending on `foo'
- # will use the new version.
+ pkgs = import ./stage.nix ({
+ inherit lib nixpkgsFun config platform;
+ } // args);
- # Return the complete set of packages. Warning: this function is very
- # expensive!
- pkgs = lib.makeExtensibleWithCustomName "overridePackages" toFix;
in pkgs