aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-11-04 13:48:58 +0100
committerEelco Dolstra <edolstra@gmail.com>2019-11-06 00:55:03 +0100
commitc119ab9db0edf65379593883c5ed5253549ebbd0 (patch)
treea0cd244d0f0a7b77cb99ab564c1985aa03e02a65 /src
parent2af9561316606892ce0337939c01f3c0d43d75bd (diff)
Enable recursive Nix using a feature
Derivations that want to use recursion should now set requiredSystemFeatures = [ "recursive-nix" ]; to make the daemon socket appear. Also, Nix should be configured with "experimental-features = recursive-nix".
Diffstat (limited to 'src')
-rw-r--r--src/libstore/build.cc5
-rw-r--r--src/libstore/globals.cc2
2 files changed, 5 insertions, 2 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index e8b23d396..e77512ca4 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2248,7 +2248,8 @@ void DerivationGoal::startBuilder()
/* Fire up a Nix daemon to process recursive Nix calls from the
builder. */
- startDaemon();
+ if (parsedDrv->getRequiredSystemFeatures().count("recursive-nix"))
+ startDaemon();
/* Run the builder. */
printMsg(lvlChatty, format("executing builder '%1%'") % drv->builder);
@@ -2832,6 +2833,8 @@ struct RestrictedStore : public LocalFSStore
void DerivationGoal::startDaemon()
{
+ settings.requireExperimentalFeature("recursive-nix");
+
Store::Params params;
params["path-info-cache-size"] = "0";
params["store"] = worker.store.storeDir;
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index 249c36673..042aaea95 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -95,7 +95,7 @@ StringSet Settings::getDefaultSystemFeatures()
/* For backwards compatibility, accept some "features" that are
used in Nixpkgs to route builds to certain machines but don't
actually require anything special on the machines. */
- StringSet features{"nixos-test", "benchmark", "big-parallel"};
+ StringSet features{"nixos-test", "benchmark", "big-parallel", "recursive-nix"};
#if __linux__
if (access("/dev/kvm", R_OK | W_OK) == 0)