# 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 }