Turn NIX_PATH into a config setting
This allows it to be set in nix.conf.
This commit is contained in:
parent
ec9dd9a5ae
commit
d12d69ea1a
2 changed files with 24 additions and 14 deletions
|
@ -275,17 +275,6 @@ static Strings parseNixPath(const string & s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static Strings getDefaultNixPath()
|
|
||||||
{
|
|
||||||
Strings res;
|
|
||||||
auto add = [&](const Path & p) { if (pathExists(p)) { res.push_back(p); } };
|
|
||||||
add(getHome() + "/.nix-defexpr/channels");
|
|
||||||
add("nixpkgs=" + settings.nixStateDir + "/nix/profiles/per-user/root/channels/nixpkgs");
|
|
||||||
add(settings.nixStateDir + "/nix/profiles/per-user/root/channels");
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
EvalState::EvalState(const Strings & _searchPath, ref<Store> store)
|
EvalState::EvalState(const Strings & _searchPath, ref<Store> store)
|
||||||
: sWith(symbols.create("<with>"))
|
: sWith(symbols.create("<with>"))
|
||||||
, sOutPath(symbols.create("outPath"))
|
, sOutPath(symbols.create("outPath"))
|
||||||
|
@ -325,10 +314,8 @@ EvalState::EvalState(const Strings & _searchPath, ref<Store> store)
|
||||||
|
|
||||||
/* Initialise the Nix expression search path. */
|
/* Initialise the Nix expression search path. */
|
||||||
if (!evalSettings.pureEval) {
|
if (!evalSettings.pureEval) {
|
||||||
auto nixPath = getEnv("NIX_PATH");
|
|
||||||
auto paths = nixPath ? parseNixPath(*nixPath) : getDefaultNixPath();
|
|
||||||
for (auto & i : _searchPath) addToSearchPath(i);
|
for (auto & i : _searchPath) addToSearchPath(i);
|
||||||
for (auto & i : paths) addToSearchPath(i);
|
for (auto & i : evalSettings.nixPath.get()) addToSearchPath(i);
|
||||||
}
|
}
|
||||||
addToSearchPath("nix=" + canonPath(settings.nixDataDir + "/nix/corepkgs", true));
|
addToSearchPath("nix=" + canonPath(settings.nixDataDir + "/nix/corepkgs", true));
|
||||||
|
|
||||||
|
@ -1986,6 +1973,22 @@ 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) { if (pathExists(p)) { res.push_back(p); } };
|
||||||
|
add(getHome() + "/.nix-defexpr/channels");
|
||||||
|
add("nixpkgs=" + settings.nixStateDir + "/nix/profiles/per-user/root/channels/nixpkgs");
|
||||||
|
add(settings.nixStateDir + "/nix/profiles/per-user/root/channels");
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
EvalSettings evalSettings;
|
EvalSettings evalSettings;
|
||||||
|
|
||||||
static GlobalConfig::Register r1(&evalSettings);
|
static GlobalConfig::Register r1(&evalSettings);
|
||||||
|
|
|
@ -339,9 +339,16 @@ struct InvalidPathError : EvalError
|
||||||
|
|
||||||
struct EvalSettings : Config
|
struct EvalSettings : Config
|
||||||
{
|
{
|
||||||
|
EvalSettings();
|
||||||
|
|
||||||
|
static Strings getDefaultNixPath();
|
||||||
|
|
||||||
Setting<bool> enableNativeCode{this, false, "allow-unsafe-native-code-during-evaluation",
|
Setting<bool> enableNativeCode{this, false, "allow-unsafe-native-code-during-evaluation",
|
||||||
"Whether builtin functions that allow executing native code should be enabled."};
|
"Whether builtin functions that allow executing native code should be enabled."};
|
||||||
|
|
||||||
|
Setting<Strings> nixPath{this, getDefaultNixPath(), "nix-path",
|
||||||
|
"List of directories to be searched for <...> file references."};
|
||||||
|
|
||||||
Setting<bool> restrictEval{this, false, "restrict-eval",
|
Setting<bool> restrictEval{this, false, "restrict-eval",
|
||||||
"Whether to restrict file system access to paths in $NIX_PATH, "
|
"Whether to restrict file system access to paths in $NIX_PATH, "
|
||||||
"and network access to the URI prefixes listed in 'allowed-uris'."};
|
"and network access to the URI prefixes listed in 'allowed-uris'."};
|
||||||
|
|
Loading…
Reference in a new issue