diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2019-11-04 13:48:58 +0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2019-11-06 00:55:03 +0100 |
commit | c119ab9db0edf65379593883c5ed5253549ebbd0 (patch) | |
tree | a0cd244d0f0a7b77cb99ab564c1985aa03e02a65 /src | |
parent | 2af9561316606892ce0337939c01f3c0d43d75bd (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.cc | 5 | ||||
-rw-r--r-- | src/libstore/globals.cc | 2 |
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) |