diff options
author | Kane York <kanepyork@gmail.com> | 2020-08-05T06·05-0700 |
---|---|---|
committer | kanepyork <rikingcoding@gmail.com> | 2020-08-18T12·05+0000 |
commit | 290df663afdfcbc6c3cc0665948b198d875ddcf8 (patch) | |
tree | 6a7561c0eb78e336e962276ff76f273adfc38f52 | |
parent | b76cd7253a1d0e6ce2260071c375eae7a8141468 (diff) |
fix(tvix/config): properly handle nonexistent config files r/1674
If the global nix config, or any available user nix config location, does not exist, then the loadConfFile() function will throw and not finish initalizing the Nix configuration. Change-Id: I6db83bca54d9b66699356d107720603476e32c23 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1657 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
-rw-r--r-- | third_party/nix/src/libstore/globals.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/third_party/nix/src/libstore/globals.cc b/third_party/nix/src/libstore/globals.cc index 1e194135cc9a..34f5d4605bf5 100644 --- a/third_party/nix/src/libstore/globals.cc +++ b/third_party/nix/src/libstore/globals.cc @@ -1,6 +1,7 @@ #include "libstore/globals.hh" #include <algorithm> +#include <filesystem> #include <map> #include <thread> @@ -70,7 +71,9 @@ Settings::Settings() } void loadConfFile() { - globalConfig.applyConfigFile(settings.nixConfDir + "/nix.conf"); + if (std::filesystem::exists(settings.nixConfDir + "/nix.conf")) { + globalConfig.applyConfigFile(settings.nixConfDir + "/nix.conf"); + } /* We only want to send overrides to the daemon, i.e. stuff from ~/.nix/nix.conf or the command line. */ @@ -80,7 +83,9 @@ void loadConfFile() { // Iterate over them in reverse so that the ones appearing first in the path // take priority for (auto dir = dirs.rbegin(); dir != dirs.rend(); dir++) { - globalConfig.applyConfigFile(*dir + "/nix/nix.conf"); + if (std::filesystem::exists(*dir + "/nix.conf")) { + globalConfig.applyConfigFile(*dir + "/nix/nix.conf"); + } } } |