aboutsummaryrefslogtreecommitdiff
path: root/src/libfetchers
diff options
context:
space:
mode:
Diffstat (limited to 'src/libfetchers')
-rw-r--r--src/libfetchers/fetch-settings.cc26
-rw-r--r--src/libfetchers/fetch-settings.hh3
2 files changed, 29 insertions, 0 deletions
diff --git a/src/libfetchers/fetch-settings.cc b/src/libfetchers/fetch-settings.cc
index 007f2725f..b278835ad 100644
--- a/src/libfetchers/fetch-settings.cc
+++ b/src/libfetchers/fetch-settings.cc
@@ -7,6 +7,32 @@
namespace nix {
+void to_json(nlohmann::json & j, const AcceptFlakeConfig & e)
+{
+ if (e == AcceptFlakeConfig::False) {
+ j = false;
+ } else if (e == AcceptFlakeConfig::Ask) {
+ j = "ask";
+ } else if (e == AcceptFlakeConfig::True) {
+ j = true;
+ } else {
+ abort();
+ }
+}
+
+void from_json(const nlohmann::json & j, AcceptFlakeConfig & e)
+{
+ if (j == false) {
+ e = AcceptFlakeConfig::False;
+ } else if (j == "ask") {
+ e = AcceptFlakeConfig::Ask;
+ } else if (j == true) {
+ e = AcceptFlakeConfig::True;
+ } else {
+ throw Error("Invalid accept-flake-config value '%s'", std::string(j));
+ }
+}
+
template<> AcceptFlakeConfig BaseSetting<AcceptFlakeConfig>::parse(const std::string & str, const ApplyConfigOptions & options) const
{
if (str == "true") return AcceptFlakeConfig::True;
diff --git a/src/libfetchers/fetch-settings.hh b/src/libfetchers/fetch-settings.hh
index 93123463c..0bdc707ec 100644
--- a/src/libfetchers/fetch-settings.hh
+++ b/src/libfetchers/fetch-settings.hh
@@ -13,6 +13,9 @@ namespace nix {
enum class AcceptFlakeConfig { False, Ask, True };
+void to_json(nlohmann::json & j, const AcceptFlakeConfig & e);
+void from_json(const nlohmann::json & j, AcceptFlakeConfig & e);
+
struct FetchSettings : public Config
{
FetchSettings();