Allow includes from nix.conf
This commit is contained in:
parent
f471aacff2
commit
6eb1040e90
|
@ -40,7 +40,12 @@
|
||||||
|
|
||||||
<para>The configuration files consist of
|
<para>The configuration files consist of
|
||||||
<literal><replaceable>name</replaceable> =
|
<literal><replaceable>name</replaceable> =
|
||||||
<replaceable>value</replaceable></literal> pairs, one per line.
|
<replaceable>value</replaceable></literal> pairs, one per line. Other
|
||||||
|
files can be included with a line like <literal>include
|
||||||
|
<replaceable>path</replaceable></literal>, where
|
||||||
|
<replaceable>path</replaceable> is interpreted relative to the current
|
||||||
|
conf file and a missing file is an error unless
|
||||||
|
<literal>!include</literal> is used instead.
|
||||||
Comments start with a <literal>#</literal> character. Here is an
|
Comments start with a <literal>#</literal> character. Here is an
|
||||||
example configuration file:</para>
|
example configuration file:</para>
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,31 @@ void Config::applyConfigFile(const Path & path, bool fatal)
|
||||||
vector<string> tokens = tokenizeString<vector<string> >(line);
|
vector<string> tokens = tokenizeString<vector<string> >(line);
|
||||||
if (tokens.empty()) continue;
|
if (tokens.empty()) continue;
|
||||||
|
|
||||||
if (tokens.size() < 2 || tokens[1] != "=")
|
if (tokens.size() < 2)
|
||||||
|
throw UsageError("illegal configuration line '%1%' in '%2%'", line, path);
|
||||||
|
|
||||||
|
auto include = false;
|
||||||
|
auto ignoreMissing = false;
|
||||||
|
if (tokens[0] == "include")
|
||||||
|
include = true;
|
||||||
|
else if (tokens[0] == "!include") {
|
||||||
|
include = true;
|
||||||
|
ignoreMissing = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (include) {
|
||||||
|
if (tokens.size() != 2)
|
||||||
|
throw UsageError("illegal configuration line '%1%' in '%2%'", line, path);
|
||||||
|
auto p = absPath(tokens[1], dirOf(path));
|
||||||
|
if (pathExists(p)) {
|
||||||
|
applyConfigFile(p, fatal);
|
||||||
|
} else if (!ignoreMissing) {
|
||||||
|
throw Error("file '%1%' included from '%2%' not found", p, path);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tokens[1] != "=")
|
||||||
throw UsageError("illegal configuration line '%1%' in '%2%'", line, path);
|
throw UsageError("illegal configuration line '%1%' in '%2%'", line, path);
|
||||||
|
|
||||||
string name = tokens[0];
|
string name = tokens[0];
|
||||||
|
|
|
@ -16,7 +16,12 @@ mkdir "$NIX_CONF_DIR"
|
||||||
cat > "$NIX_CONF_DIR"/nix.conf <<EOF
|
cat > "$NIX_CONF_DIR"/nix.conf <<EOF
|
||||||
build-users-group =
|
build-users-group =
|
||||||
keep-derivations = false
|
keep-derivations = false
|
||||||
|
include nix.conf.extra
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > "$NIX_CONF_DIR"/nix.conf.extra <<EOF
|
||||||
fsync-metadata = false
|
fsync-metadata = false
|
||||||
|
!include nix.conf.extra.not-there
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Initialise the database.
|
# Initialise the database.
|
||||||
|
|
Loading…
Reference in a new issue