aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libmain/common-args.cc11
-rw-r--r--src/libstore/download.cc18
-rw-r--r--src/libstore/download.hh23
-rw-r--r--src/libstore/globals.hh2
-rw-r--r--src/libstore/http-binary-cache-store.cc1
5 files changed, 35 insertions, 20 deletions
diff --git a/src/libmain/common-args.cc b/src/libmain/common-args.cc
index 4c35a4199..94dd092c5 100644
--- a/src/libmain/common-args.cc
+++ b/src/libmain/common-args.cc
@@ -1,5 +1,6 @@
#include "common-args.hh"
#include "globals.hh"
+#include "download.hh"
namespace nix {
@@ -35,6 +36,16 @@ MixCommonArgs::MixCommonArgs(const string & programName)
}
});
+ mkFlag()
+ .longName("no-net")
+ .description("disable substituters and consider all previously downloaded files up-to-date")
+ .handler([]() {
+ settings.useSubstitutes = false;
+ settings.tarballTtl = std::numeric_limits<unsigned int>::max();
+ downloadSettings.tries = 0;
+ downloadSettings.connectTimeout = 1;
+ });
+
std::string cat = "config";
globalConfig.convertToArgs(*this, cat);
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 0338727c1..5c1705e2f 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -30,23 +30,7 @@ using namespace std::string_literals;
namespace nix {
-struct DownloadSettings : Config
-{
- Setting<bool> enableHttp2{this, true, "http2",
- "Whether to enable HTTP/2 support."};
-
- Setting<std::string> userAgentSuffix{this, "", "user-agent-suffix",
- "String appended to the user agent in HTTP requests."};
-
- Setting<size_t> httpConnections{this, 25, "http-connections",
- "Number of parallel HTTP connections.",
- {"binary-caches-parallel-connections"}};
-
- Setting<unsigned long> connectTimeout{this, 0, "connect-timeout",
- "Timeout for connecting to servers during downloads. 0 means use curl's builtin default."};
-};
-
-static DownloadSettings downloadSettings;
+DownloadSettings downloadSettings;
static GlobalConfig::Register r1(&downloadSettings);
diff --git a/src/libstore/download.hh b/src/libstore/download.hh
index 43b1c5c09..c095ad053 100644
--- a/src/libstore/download.hh
+++ b/src/libstore/download.hh
@@ -9,13 +9,34 @@
namespace nix {
+struct DownloadSettings : Config
+{
+ Setting<bool> enableHttp2{this, true, "http2",
+ "Whether to enable HTTP/2 support."};
+
+ Setting<std::string> userAgentSuffix{this, "", "user-agent-suffix",
+ "String appended to the user agent in HTTP requests."};
+
+ Setting<size_t> httpConnections{this, 25, "http-connections",
+ "Number of parallel HTTP connections.",
+ {"binary-caches-parallel-connections"}};
+
+ Setting<unsigned long> connectTimeout{this, 0, "connect-timeout",
+ "Timeout for connecting to servers during downloads. 0 means use curl's builtin default."};
+
+ Setting<unsigned int> tries{this, 5, "download-attempts",
+ "How often Nix will attempt to download a file before giving up."};
+};
+
+extern DownloadSettings downloadSettings;
+
struct DownloadRequest
{
std::string uri;
std::string expectedETag;
bool verifyTLS = true;
bool head = false;
- size_t tries = 5;
+ size_t tries = downloadSettings.tries;
unsigned int baseRetryTimeMs = 250;
ActivityId parentAct;
bool decompress = true;
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index 80d70fba3..2aecebe3d 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -255,7 +255,7 @@ public:
"Secret keys with which to sign local builds."};
Setting<unsigned int> tarballTtl{this, 60 * 60, "tarball-ttl",
- "How soon to expire files fetched by builtins.fetchTarball and builtins.fetchurl."};
+ "How long downloaded files are considered up-to-date."};
Setting<bool> requireSigs{this, true, "require-sigs",
"Whether to check that any non-content-addressed path added to the "
diff --git a/src/libstore/http-binary-cache-store.cc b/src/libstore/http-binary-cache-store.cc
index 105e1dcdd..11c34fdac 100644
--- a/src/libstore/http-binary-cache-store.cc
+++ b/src/libstore/http-binary-cache-store.cc
@@ -84,7 +84,6 @@ protected:
try {
DownloadRequest request(cacheUri + "/" + path);
request.head = true;
- request.tries = 5;
getDownloader()->download(request);
return true;
} catch (DownloadError & e) {