summary refs log tree commit diff
path: root/pkgs/top-level/stdenvs.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/top-level/stdenvs.nix')
-rw-r--r--pkgs/top-level/stdenvs.nix91
1 files changed, 91 insertions, 0 deletions
diff --git a/pkgs/top-level/stdenvs.nix b/pkgs/top-level/stdenvs.nix
new file mode 100644
index 0000000000000..b96c3d17674cc
--- /dev/null
+++ b/pkgs/top-level/stdenvs.nix
@@ -0,0 +1,91 @@
+# This file defines the various standard build environments.
+#
+# 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, allPackages}: rec {
+
+  gccWrapper = import ../build-support/gcc-wrapper;
+  genericStdenv = import ../stdenv/generic;
+
+
+  # Trivial environment used for building other environments.
+  stdenvInitial = (import ../stdenv/initial) {
+    name = "stdenv-initial";
+    inherit system;
+  };
+
+
+  # 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) {
+    stdenv = stdenvInitial;
+    inherit genericStdenv gccWrapper;
+  };
+
+  stdenvNativePkgs = allPackages {
+    stdenv = stdenvNative;
+    bootCurl = null;
+    noSysDirs = false;
+  };
+
+
+  # The Nix build environment.
+  stdenvNix = (import ../stdenv/nix) {
+    stdenv = stdenvNative;
+    pkgs = stdenvNativePkgs;
+    inherit genericStdenv gccWrapper;
+  };
+
+  stdenvNixPkgs = allPackages {
+    stdenv = stdenvNix;
+    bootCurl = stdenvNativePkgs.curl;
+    noSysDirs = false;
+  };
+
+
+  # Linux standard environment.
+  inherit (import ../stdenv/linux {inherit allPackages;})
+    stdenvLinux stdenvLinuxPkgs;
+
+    
+  # Darwin (Mac OS X) standard environment.  Very simple for now
+  # (essentially it's just the native environment).
+  stdenvDarwin = (import ../stdenv/darwin) {
+    stdenv = stdenvInitial;
+    inherit genericStdenv gccWrapper;
+  };
+
+  stdenvDarwinPkgs = allPackages {
+    stdenv = stdenvDarwin;
+    bootCurl = null;
+    noSysDirs = false;
+  };
+
+
+  # FreeBSD standard environment.  Right now this is more or less the
+  # same as the native environemnt.  Eventually we'll want a pure
+  # environment similar to stdenvLinux.
+  stdenvFreeBSD = (import ../stdenv/freebsd) {
+    stdenv = stdenvInitial;
+    inherit genericStdenv gccWrapper;
+  };
+
+  stdenvFreeBSDPkgs = allPackages {
+    stdenv = stdenvFreeBSD;
+    bootCurl = null;
+    noSysDirs = false;
+  };
+
+
+  stdenvTestPkgs = allPackages {
+    stdenv = (import ../stdenv/nix-linux-static).stdenvInitial;
+    bootCurl = (import ../stdenv/nix-linux-static).curl;
+    noSysDirs = true;
+  };
+}