aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/eval.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libexpr/eval.cc')
-rw-r--r--src/libexpr/eval.cc89
1 files changed, 1 insertions, 88 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index be1bdb806..e57de6c1d 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -1,4 +1,5 @@
#include "eval.hh"
+#include "eval-settings.hh"
#include "hash.hh"
#include "types.hh"
#include "util.hh"
@@ -420,44 +421,6 @@ void initGC()
}
-/* Very hacky way to parse $NIX_PATH, which is colon-separated, but
- can contain URLs (e.g. "nixpkgs=https://bla...:foo=https://"). */
-static Strings parseNixPath(const std::string & s)
-{
- Strings res;
-
- auto p = s.begin();
-
- while (p != s.end()) {
- auto start = p;
- auto start2 = p;
-
- while (p != s.end() && *p != ':') {
- if (*p == '=') start2 = p + 1;
- ++p;
- }
-
- if (p == s.end()) {
- if (p != start) res.push_back(std::string(start, p));
- break;
- }
-
- if (*p == ':') {
- auto prefix = std::string(start2, s.end());
- if (EvalSettings::isPseudoUrl(prefix) || hasPrefix(prefix, "flake:")) {
- ++p;
- while (p != s.end() && *p != ':') ++p;
- }
- res.push_back(std::string(start, p));
- if (p == s.end()) break;
- }
-
- ++p;
- }
-
- return res;
-}
-
ErrorBuilder & ErrorBuilder::atPos(PosIdx pos)
{
info.errPos = state.positions[pos];
@@ -2626,54 +2589,4 @@ std::ostream & operator << (std::ostream & str, const ExternalValueBase & v) {
}
-EvalSettings::EvalSettings()
-{
- auto var = getEnv("NIX_PATH");
- if (var) nixPath = parseNixPath(*var);
-}
-
-Strings EvalSettings::getDefaultNixPath()
-{
- Strings res;
- auto add = [&](const Path & p, const std::string & s = std::string()) {
- if (pathAccessible(p)) {
- if (s.empty()) {
- res.push_back(p);
- } else {
- res.push_back(s + "=" + p);
- }
- }
- };
-
- if (!evalSettings.restrictEval && !evalSettings.pureEval) {
- add(settings.useXDGBaseDirectories ? getStateDir() + "/nix/defexpr/channels" : getHome() + "/.nix-defexpr/channels");
- add(rootChannelsDir() + "/nixpkgs", "nixpkgs");
- add(rootChannelsDir());
- }
-
- return res;
-}
-
-bool EvalSettings::isPseudoUrl(std::string_view s)
-{
- if (s.compare(0, 8, "channel:") == 0) return true;
- size_t pos = s.find("://");
- if (pos == std::string::npos) return false;
- std::string scheme(s, 0, pos);
- return scheme == "http" || scheme == "https" || scheme == "file" || scheme == "channel" || scheme == "git" || scheme == "s3" || scheme == "ssh";
-}
-
-std::string EvalSettings::resolvePseudoUrl(std::string_view url)
-{
- if (hasPrefix(url, "channel:"))
- return "https://nixos.org/channels/" + std::string(url.substr(8)) + "/nixexprs.tar.xz";
- else
- return std::string(url);
-}
-
-EvalSettings evalSettings;
-
-static GlobalConfig::Register rEvalSettings(&evalSettings);
-
-
}