diff options
Diffstat (limited to 'src/libstore')
-rw-r--r-- | src/libstore/globals.cc | 20 | ||||
-rw-r--r-- | src/libstore/globals.hh | 6 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index 68add1982f43..1d4bcd94f7b8 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(const 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 9300edbe9615..13772c65cbac 100644 --- a/src/libstore/globals.hh +++ b/src/libstore/globals.hh @@ -25,6 +25,8 @@ struct Settings { string pack(); + void unpack(const 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); }; |