From 290df663afdfcbc6c3cc0665948b198d875ddcf8 Mon Sep 17 00:00:00 2001 From: Kane York Date: Tue, 4 Aug 2020 23:05:18 -0700 Subject: fix(tvix/config): properly handle nonexistent config files 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 --- third_party/nix/src/libstore/globals.cc | 9 +++++++-- 1 file 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 +#include #include #include @@ -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"); + } } } -- cgit 1.4.1