about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKane York <kanepyork@gmail.com>2020-08-05T06·05-0700
committerkanepyork <rikingcoding@gmail.com>2020-08-18T12·05+0000
commit290df663afdfcbc6c3cc0665948b198d875ddcf8 (patch)
tree6a7561c0eb78e336e962276ff76f273adfc38f52
parentb76cd7253a1d0e6ce2260071c375eae7a8141468 (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.cc9
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 1e194135cc..34f5d4605b 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");
+    }
   }
 }