aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/manual/src/language/advanced-attributes.md3
-rw-r--r--src/libstore/globals.hh8
-rw-r--r--src/libstore/parsed-derivations.cc2
3 files changed, 12 insertions, 1 deletions
diff --git a/doc/manual/src/language/advanced-attributes.md b/doc/manual/src/language/advanced-attributes.md
index 5e8aaeba0..4907f7457 100644
--- a/doc/manual/src/language/advanced-attributes.md
+++ b/doc/manual/src/language/advanced-attributes.md
@@ -261,6 +261,9 @@ Derivations can declare some infrequently used optional attributes.
useful for very trivial derivations (such as `writeText` in Nixpkgs)
that are cheaper to build than to substitute from a binary cache.
+ You may disable the effects of this attibute by enabling the
+ `always-allow-substitutes` configuration option in Nix.
+
> **Note**
>
> You need to have a builder configured which satisfies the
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index dba7d78ef..229f1a96a 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -261,6 +261,14 @@ public:
For the exact format and examples, see [the manual chapter on remote builds](../advanced-topics/distributed-builds.md)
)"};
+ Setting<bool> alwaysAllowSubstitutes{
+ this, false, "always-allow-substitutes",
+ R"(
+ If set to `true`, Nix will ignore the `allowSubstitutes` attribute in
+ derivations and always attempt to use available substituters.
+ For more information on `allowSubstitutes`, see [the manual chapter on advanced attributes](../language/advanced-attributes.md).
+ )"};
+
Setting<bool> buildersUseSubstitutes{
this, false, "builders-use-substitutes",
R"(
diff --git a/src/libstore/parsed-derivations.cc b/src/libstore/parsed-derivations.cc
index cc4a94fab..1d900c272 100644
--- a/src/libstore/parsed-derivations.cc
+++ b/src/libstore/parsed-derivations.cc
@@ -122,7 +122,7 @@ bool ParsedDerivation::willBuildLocally(Store & localStore) const
bool ParsedDerivation::substitutesAllowed() const
{
- return getBoolAttr("allowSubstitutes", true);
+ return settings.alwaysAllowSubstitutes ? true : getBoolAttr("allowSubstitutes", true);
}
bool ParsedDerivation::useUidRange() const