diff --git a/nix.conf.example b/nix.conf.example index 13b4cfa3d..47973ce4e 100644 --- a/nix.conf.example +++ b/nix.conf.example @@ -68,6 +68,16 @@ #env-keep-derivations = false +### Option `build-max-jobs' +# +# This option defines the maximum number of jobs that Nix will try to +# build in parallel. The default is 1. You should generally set it +# to the number of CPUs in your system (e.g., 2 on a Athlon 64 X2). +# It can be overriden using the `--max-jobs' / `-j' command line +# switch. +#build-max-jobs = 1 + + ### Option `build-allow-root' # # This option controls Nix's behaviour when it is invoked under the diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index d176db7a7..2441cbf01 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -94,7 +94,14 @@ static void initAndRun(int argc, char * * argv) nixConfDir = canonPath(getEnv("NIX_CONF_DIR", NIX_CONF_DIR)); nixLibexecDir = canonPath(getEnv("NIX_LIBEXEC_DIR", NIX_LIBEXEC_DIR)); + /* Get some settings from the configuration file. */ thisSystem = querySetting("system", SYSTEM); + { + int n; + if (!string2Int(querySetting("build-max-jobs", "1"), n) || n < 0) + throw Error("invalid value for configuration setting `build-max-jobs'"); + maxBuildJobs = n; + } /* Catch SIGINT. */ struct sigaction act, oact;