Allows selectively adding environment variables to pure shells.

Includes documentation and test.
This commit is contained in:
Samuel Dionne-Riel
2018-08-02 08:21:30 -04:00
parent b27431b7cb
commit 438e02529d
3 changed files with 21 additions and 1 deletions
+6 -1
View File
@@ -99,6 +99,9 @@ void mainWrapped(int argc, char * * argv)
std::string outLink = "./result";
// List of environment variables kept for --pure
std::set<string> keepVars{"HOME", "USER", "LOGNAME", "DISPLAY", "PATH", "TERM", "IN_NIX_SHELL", "TZ", "PAGER", "NIX_BUILD_SHELL", "SHLVL"};
Strings args;
for (int i = 1; i < argc; ++i)
args.push_back(argv[i]);
@@ -218,6 +221,9 @@ void mainWrapped(int argc, char * * argv)
}
}
else if (*arg == "--keep")
keepVars.insert(getArg(*arg, arg, end));
else if (*arg == "-")
readStdin = true;
@@ -368,7 +374,6 @@ void mainWrapped(int argc, char * * argv)
auto tmp = getEnv("TMPDIR", getEnv("XDG_RUNTIME_DIR", "/tmp"));
if (pure) {
std::set<string> keepVars{"HOME", "USER", "LOGNAME", "DISPLAY", "PATH", "TERM", "IN_NIX_SHELL", "TZ", "PAGER", "NIX_BUILD_SHELL", "SHLVL"};
decltype(env) newEnv;
for (auto & i : env)
if (keepVars.count(i.first))