diff options
-rw-r--r-- | src/libstore/globals.cc | 30 | ||||
-rw-r--r-- | src/libstore/globals.hh | 3 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index c114e22dc..ffc2543ef 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -269,11 +269,31 @@ Path Settings::getDefaultSSLCertFile() const std::string nixVersion = PACKAGE_VERSION; -NLOHMANN_JSON_SERIALIZE_ENUM(SandboxMode, { - {SandboxMode::smEnabled, true}, - {SandboxMode::smRelaxed, "relaxed"}, - {SandboxMode::smDisabled, false}, -}); +void to_json(nlohmann::json & j, const SandboxMode & e) +{ + if (e == SandboxMode::smEnabled) { + j = true; + } else if (e == SandboxMode::smRelaxed) { + j = "relaxed"; + } else if (e == SandboxMode::smDisabled) { + j = false; + } else { + abort(); + } +} + +void from_json(const nlohmann::json & j, SandboxMode & e) +{ + if (j == true) { + e = SandboxMode::smEnabled; + } else if (j == "relaxed") { + e = SandboxMode::smRelaxed; + } else if (j == false) { + e = SandboxMode::smDisabled; + } else { + throw Error("Invalid sandbox mode '%s'", std::string(j)); + } +} template<> SandboxMode BaseSetting<SandboxMode>::parse(const std::string & str, const ApplyConfigOptions & options) const { diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh index 51550b2c3..ca2a917ed 100644 --- a/src/libstore/globals.hh +++ b/src/libstore/globals.hh @@ -14,6 +14,9 @@ namespace nix { typedef enum { smEnabled, smRelaxed, smDisabled } SandboxMode; +void to_json(nlohmann::json & j, const SandboxMode & e); +void from_json(const nlohmann::json & j, SandboxMode & e); + struct MaxBuildJobsSetting : public BaseSetting<unsigned int> { MaxBuildJobsSetting(Config * options, |