diff --git a/nix.conf.example b/nix.conf.example index 97c6f4b15c..13b4cfa3d9 100644 --- a/nix.conf.example +++ b/nix.conf.example @@ -97,3 +97,23 @@ # Example: # build-users = nix-builder-1 nix-builder-2 nix-builder-3 #build-users = + + +### Option `system' +# +# This option specifies the canonical Nix system name of the current +# installation, such as `i686-linux' or `powerpc-darwin'. Nix can +# only build derivations whose `system' attribute equals the value +# specified here. In general, it never makes sense to modify this +# value from its default, since you can use it to `lie' about the +# platform you are building on (e.g., perform a Mac OS build on a +# Linux machine; the result would obviously be wrong). It only makes +# sense if the Nix binaries can run on multiple platforms, e.g., +# `universal binaries' that run on `powerpc-darwin' and `i686-darwin'. +# +# It defaults to the canonical Nix system name detected by `configure' +# at build time. +# +# Example: +# system = i686-darwin +#system = diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index 97528f123e..fb24e83298 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -93,6 +93,8 @@ static void initAndRun(int argc, char * * argv) nixDBPath = getEnv("NIX_DB_DIR", nixStateDir + "/db"); nixConfDir = canonPath(getEnv("NIX_CONF_DIR", NIX_CONF_DIR)); + thisSystem = querySetting("system", SYSTEM); + /* Catch SIGINT. */ struct sigaction act, oact; act.sa_handler = sigintHandler; diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index 194e1165fa..ac8e19b7d4 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -17,6 +17,7 @@ bool tryFallback = false; Verbosity buildVerbosity = lvlInfo; unsigned int maxBuildJobs = 1; bool readOnlyMode = false; +string thisSystem = "unset"; static bool settingsRead = false; @@ -26,7 +27,7 @@ static map settings; string & at(Strings & ss, unsigned int n) { - Strings::iterator i =ss.begin(); + Strings::iterator i = ss.begin(); advance(i, n); return *i; } diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh index b5de709f7b..408076b751 100644 --- a/src/libstore/globals.hh +++ b/src/libstore/globals.hh @@ -53,6 +53,9 @@ extern unsigned int maxBuildJobs; database. */ extern bool readOnlyMode; +/* The canonical system name, as returned by config.guess. */ +extern string thisSystem; + Strings querySetting(const string & name, const Strings & def); diff --git a/src/libutil/util.cc b/src/libutil/util.cc index 973443cf13..9e3e0bae20 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -16,9 +16,6 @@ #include "util.hh" -string thisSystem = SYSTEM; - - Error::Error(const format & f) { err = f.str(); diff --git a/src/libutil/util.hh b/src/libutil/util.hh index 05cf777f1e..92bdf50d31 100644 --- a/src/libutil/util.hh +++ b/src/libutil/util.hh @@ -55,10 +55,6 @@ typedef list Paths; typedef set PathSet; -/* The canonical system name, as returned by config.guess. */ -extern string thisSystem; - - /* Return an environment variable. */ string getEnv(const string & key, const string & def = "");