about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nix.conf.example10
-rw-r--r--src/libmain/shared.cc7
2 files changed, 17 insertions, 0 deletions
diff --git a/nix.conf.example b/nix.conf.example
index 13b4cfa3d99b..47973ce4e743 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 d176db7a7855..2441cbf0139d 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;