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
|
# This file evaluates to a function that, when supplied with a system
# identifier, returns the set of all packages provided by the Nix
# Package Collection. It does this by supplying
# `all-packages-generic.nix' with a standard build environment.
#
# 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. On other systems,
# we use the native C library.
{system}: let {
allPackages = import ./all-packages-generic.nix;
# 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).
stdenvNative = (import ../stdenv/native) {system = system;};
stdenvNativePkgs = allPackages {system = system; stdenv = stdenvNative;};
# The Nix build environment.
stdenvNix = (import ../stdenv/nix) {
bootStdenv = stdenvNative;
pkgs = stdenvNativePkgs;
};
stdenvNixPkgs = allPackages {system = system; stdenv = stdenvNix;};
# The Linux build environment consists of the Nix build environment
# built against the GNU C Library.
stdenvLinuxGlibc = stdenvNativePkgs.glibc;
stdenvLinuxBoot = (import ../stdenv/nix-linux/boot.nix) {
system = system;
glibc = stdenvLinuxGlibc;
};
stdenvLinuxBootPkgs = allPackages {system = system; stdenv = stdenvLinuxBoot;};
stdenvLinux = (import ../stdenv/nix-linux) {
bootStdenv = stdenvLinuxBoot;
pkgs = stdenvLinuxBootPkgs;
glibc = stdenvLinuxGlibc;
};
stdenvLinuxPkgs =
allPackages {system = system; stdenv = stdenvLinux;} //
{inherit (stdenvLinuxBootPkgs)
gzip bzip2 /* bash */ binutils coreutils diffutils findutils gawk gcc
gnumake gnused gnutar gnugrep wget;
} //
{glibc = stdenvLinuxGlibc;};
# Select the right instantiation.
body =
if system == "i686-linux"
then stdenvLinuxPkgs
else stdenvNixPkgs;
}
|