aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/globals.cc20
-rw-r--r--src/libstore/globals.hh6
2 files changed, 26 insertions, 0 deletions
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index 68add1982..c1ffc26fa 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -79,6 +79,7 @@ void Settings::processEnvironment()
#endif
substituters.push_back(nixLibexecDir + "/nix/substituters/download-using-manifests.pl");
substituters.push_back(nixLibexecDir + "/nix/substituters/download-from-binary-cache.pl");
+ substituters.push_back(nixLibexecDir + "/nix/substituters/download-via-ssh");
} else
substituters = tokenizeString<Strings>(subs, ":");
}
@@ -151,6 +152,7 @@ void Settings::update()
get(gcKeepDerivations, "gc-keep-derivations");
get(autoOptimiseStore, "auto-optimise-store");
get(envKeepDerivations, "env-keep-derivations");
+ get(sshSubstituterHosts, "ssh-substituter-hosts");
}
@@ -182,6 +184,13 @@ void Settings::get(StringSet & res, const string & name)
res.insert(ss.begin(), ss.end());
}
+void Settings::get(Strings & res, const string & name)
+{
+ SettingsMap::iterator i = settings.find(name);
+ if (i == settings.end()) return;
+ res = tokenizeString<Strings>(i->second);
+}
+
template<class N> void Settings::get(N & res, const string & name)
{
@@ -206,6 +215,17 @@ string Settings::pack()
}
+void Settings::unpack(string pack) {
+ Strings lines = tokenizeString<Strings>(pack, "\n");
+ foreach (Strings::iterator, i, lines) {
+ string::size_type eq = i->find('=');
+ if (eq == string::npos)
+ throw Error("illegal option name/value");
+ set(i->substr(0, eq), i->substr(eq + 1));
+ }
+}
+
+
Settings::SettingsMap Settings::getOverrides()
{
return overrides;
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index 9300edbe9..5e7cfda9a 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -25,6 +25,8 @@ struct Settings {
string pack();
+ void unpack(string pack);
+
SettingsMap getOverrides();
/* The directory where we store sources and derived files. */
@@ -144,6 +146,9 @@ struct Settings {
chroot. */
StringSet dirsInChroot;
+ /* Set of ssh connection strings for the ssh substituter */
+ Strings sshSubstituterHosts;
+
/* Whether to impersonate a Linux 2.6 machine on newer kernels. */
bool impersonateLinux26;
@@ -195,6 +200,7 @@ private:
void get(string & res, const string & name);
void get(bool & res, const string & name);
void get(StringSet & res, const string & name);
+ void get(Strings & res, const string & name);
template<class N> void get(N & res, const string & name);
};