mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-10 08:16:15 +02:00
feat: add always-allow-substitutes
This adds a new configuration option to Nix, `always-allow-substitutes`, whose effect is simple: it causes the `allowSubstitutes` attribute in derivations to be ignored, and for substituters to always be used. This is extremely valuable for users of Nix in CI, where usually `nix-build-uncached` is used. There, derivations which disallow substitutes cause headaches as the inputs for building already-cached derivations need to be fetched to spuriously rebuild some simple text file. This option should be a good middle-ground, since it doesn't imply rebuilding the world, such as the approach I took in https://github.com/NixOS/nixpkgs/pull/221048
This commit is contained in:
parent
494a09c6df
commit
bf693319f6
3 changed files with 12 additions and 1 deletions
|
@ -261,6 +261,9 @@ Derivations can declare some infrequently used optional attributes.
|
||||||
useful for very trivial derivations (such as `writeText` in Nixpkgs)
|
useful for very trivial derivations (such as `writeText` in Nixpkgs)
|
||||||
that are cheaper to build than to substitute from a binary cache.
|
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**
|
> **Note**
|
||||||
>
|
>
|
||||||
> You need to have a builder configured which satisfies the
|
> You need to have a builder configured which satisfies the
|
||||||
|
|
|
@ -255,6 +255,14 @@ public:
|
||||||
For the exact format and examples, see [the manual chapter on remote builds](../advanced-topics/distributed-builds.md)
|
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{
|
Setting<bool> buildersUseSubstitutes{
|
||||||
this, false, "builders-use-substitutes",
|
this, false, "builders-use-substitutes",
|
||||||
R"(
|
R"(
|
||||||
|
|
|
@ -122,7 +122,7 @@ bool ParsedDerivation::willBuildLocally(Store & localStore) const
|
||||||
|
|
||||||
bool ParsedDerivation::substitutesAllowed() const
|
bool ParsedDerivation::substitutesAllowed() const
|
||||||
{
|
{
|
||||||
return getBoolAttr("allowSubstitutes", true);
|
return settings.alwaysAllowSubstitutes ? true : getBoolAttr("allowSubstitutes", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ParsedDerivation::useUidRange() const
|
bool ParsedDerivation::useUidRange() const
|
||||||
|
|
Loading…
Reference in a new issue