about summary refs log tree commit diff
path: root/pkgs-ng/system/all-packages.fix
blob: 4410ce7f7b96e061e9758afda21a32b68d22e022 (plain) (blame)
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
# 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.fix' 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.fix

  # 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.fix)
      { 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}

  # Select the right instantiation.
  , body =
      if system == "i686-suse-linux"
      then stdenvLinuxPkgs
      else stdenvNixPkgs
  }