forked from NixOS/nixpkgs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
default.nix
61 lines (52 loc) · 1.74 KB
/
default.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# This file chooses a sane default stdenv given the system, platform, etc.
#
# Rather than returning a stdenv, this returns a list of functions---one per
# each bootstrapping stage. See `./booter.nix` for exactly what this list should
# contain.
{
# Args just for stdenvs' usage
lib,
# Args to pass on to the pkgset builder, too
localSystem,
crossSystem,
config,
overlays,
crossOverlays ? [ ],
}@args:
let
# The native (i.e., impure) build environment. This one uses the
# tools installed on the system outside of the Nix environment,
# i.e., the stuff in /bin, /usr/bin, etc. This environment should
# be used with care, since many Nix packages will not build properly
# with it (e.g., because they require GNU Make).
stagesNative = import ./native args;
# The Nix build environment.
stagesNix = import ./nix (args // { bootStages = stagesNative; });
stagesFreeBSD = import ./freebsd args;
# On Linux systems, the standard build environment consists of Nix-built
# instances glibc and the `standard' Unix tools, i.e., the Posix utilities,
# the GNU C compiler, and so on.
stagesLinux = import ./linux args;
stagesDarwin = import ./darwin args;
stagesCross = import ./cross args;
stagesCustom = import ./custom args;
in
# Select the appropriate stages for the platform `system'.
if crossSystem != localSystem || crossOverlays != [ ] then
stagesCross
else if config ? replaceStdenv then
stagesCustom
else if localSystem.isLinux then
stagesLinux
else if localSystem.isDarwin then
stagesDarwin
# misc special cases
else
{
# switch
x86_64-solaris = stagesNix;
i686-cygwin = stagesNative;
x86_64-cygwin = stagesNative;
x86_64-freebsd = stagesFreeBSD;
}
.${localSystem.system} or stagesNative