diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2020-09-22 13:19:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-22 13:19:22 +0200 |
commit | 5b107f2c5f5bb86042f9f65b022cf0ed0bfaccbd (patch) | |
tree | 6d51cd7a13ff30599d1087d01ff89fe7d8e1ba8f /src | |
parent | 35a0ac183858ecb03e313e088562c84fe211e20d (diff) | |
parent | f80ffeb8c9291f7168f098fdaadc15408492f3c2 (diff) |
Merge pull request #4038 from maljub01/master
Add a nix.conf option for allowing a symlinked store
Diffstat (limited to 'src')
-rw-r--r-- | src/libstore/globals.cc | 1 | ||||
-rw-r--r-- | src/libstore/globals.hh | 13 | ||||
-rw-r--r-- | src/libstore/local-store.cc | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index f94d97cc8..c5734852d 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -42,6 +42,7 @@ Settings::Settings() { buildUsersGroup = getuid() == 0 ? "nixbld" : ""; lockCPU = getEnv("NIX_AFFINITY_HACK") == "1"; + allowSymlinkedStore = getEnv("NIX_IGNORE_SYMLINK_STORE") == "1"; caFile = getEnv("NIX_SSL_CERT_FILE").value_or(getEnv("SSL_CERT_FILE").value_or("")); if (caFile == "") { diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh index 8a2d3ff75..ebcfa9d80 100644 --- a/src/libstore/globals.hh +++ b/src/libstore/globals.hh @@ -880,6 +880,19 @@ public: Setting<std::string> flakeRegistry{this, "https://github.com/NixOS/flake-registry/raw/master/flake-registry.json", "flake-registry", "Path or URI of the global flake registry."}; + + Setting<bool> allowSymlinkedStore{ + this, false, "allow-symlinked-store", + R"( + If set to `true`, Nix will stop complaining if the store directory + (typically /nix/store) contains symlink components. + + This risks making some builds "impure" because builders sometimes + "canonicalise" paths by resolving all symlink components. Problems + occur if those builds are then deployed to machines where /nix/store + resolves to a different location from that of the build machine. You + can enable this setting if you are sure you're not going to do that. + )"}; }; diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc index 94ff34cb8..c91f3fbf7 100644 --- a/src/libstore/local-store.cc +++ b/src/libstore/local-store.cc @@ -110,7 +110,7 @@ LocalStore::LocalStore(const Params & params) } /* Ensure that the store and its parents are not symlinks. */ - if (getEnv("NIX_IGNORE_SYMLINK_STORE") != "1") { + if (!settings.allowSymlinkedStore) { Path path = realStoreDir; struct stat st; while (path != "/") { |