2003-11-02 17:42:19 +00:00
|
|
|
# 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
|
2003-11-18 12:12:56 +00:00
|
|
|
# `all-packages-generic.nix' with a standard build environment.
|
2003-11-02 17:42:19 +00:00
|
|
|
#
|
|
|
|
# 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.
|
2003-10-30 17:01:49 +00:00
|
|
|
|
2003-11-03 10:22:00 +00:00
|
|
|
{system}: let {
|
2003-11-18 12:12:56 +00:00
|
|
|
allPackages = import ./all-packages-generic.nix;
|
2003-10-30 17:01:49 +00:00
|
|
|
|
2003-11-02 17:42:19 +00:00
|
|
|
# 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).
|
2003-11-03 10:22:00 +00:00
|
|
|
stdenvNative = (import ../stdenv/native) {system = system};
|
|
|
|
stdenvNativePkgs = allPackages {system = system; stdenv = stdenvNative};
|
2003-11-02 17:42:19 +00:00
|
|
|
|
|
|
|
# The Nix build environment.
|
2003-11-03 10:22:00 +00:00
|
|
|
stdenvNix = (import ../stdenv/nix) {
|
|
|
|
bootStdenv = stdenvNative;
|
|
|
|
pkgs = stdenvNativePkgs;
|
|
|
|
};
|
|
|
|
stdenvNixPkgs = allPackages {system = system; stdenv = stdenvNix};
|
2003-11-02 17:42:19 +00:00
|
|
|
|
|
|
|
# The Linux build environment consists of the Nix build environment
|
|
|
|
# built against the GNU C Library.
|
2003-11-03 10:22:00 +00:00
|
|
|
stdenvLinuxGlibc = stdenvNativePkgs.glibc;
|
2003-11-18 12:12:56 +00:00
|
|
|
stdenvLinuxBoot = (import ../stdenv/nix-linux/boot.nix) {
|
2003-11-03 10:22:00 +00:00
|
|
|
system = system;
|
|
|
|
glibc = stdenvLinuxGlibc;
|
|
|
|
};
|
|
|
|
stdenvLinuxBootPkgs = allPackages {system = system; stdenv = stdenvLinuxBoot};
|
2003-11-02 17:42:19 +00:00
|
|
|
|
2003-11-03 10:22:00 +00:00
|
|
|
stdenvLinux = (import ../stdenv/nix-linux) {
|
|
|
|
bootStdenv = stdenvLinuxBoot;
|
|
|
|
pkgs = stdenvLinuxBootPkgs;
|
|
|
|
glibc = stdenvLinuxGlibc;
|
|
|
|
};
|
|
|
|
stdenvLinuxPkgs = allPackages {system = system; stdenv = stdenvLinux};
|
2003-11-02 17:42:19 +00:00
|
|
|
|
2003-11-02 22:25:26 +00:00
|
|
|
# Select the right instantiation.
|
2003-11-03 10:22:00 +00:00
|
|
|
body =
|
|
|
|
if system == "i686-suse-linux"
|
|
|
|
then stdenvLinuxPkgs
|
|
|
|
else stdenvNixPkgs;
|
|
|
|
}
|