From e4c49db668f9142644677f6ae4a9ddc3979984b9 Mon Sep 17 00:00:00 2001 From: Atemu Date: Sat, 14 Mar 2020 14:42:52 +0100 Subject: nixos/dnscrypt-proxy2: base settings on example config Dnscrypt-proxy needs some options to be set before it can do anything useful. Currently, we only apply what the user configured which, by default, is nothing. This leads to the dnscrypt-proxy2 service failing to start when you only set `enable = true;` which is not a great user experience. This patch makes the module take the example config from the upstream repo as a base on top of which the user-specified settings are applied (it contains sane defaults). An option has been added to restore the old behaviour. --- nixos/modules/services/networking/dnscrypt-proxy2.nix | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'nixos/modules/services/networking/dnscrypt-proxy2.nix') diff --git a/nixos/modules/services/networking/dnscrypt-proxy2.nix b/nixos/modules/services/networking/dnscrypt-proxy2.nix index dda61212216..ff8a2ab3077 100644 --- a/nixos/modules/services/networking/dnscrypt-proxy2.nix +++ b/nixos/modules/services/networking/dnscrypt-proxy2.nix @@ -27,6 +27,16 @@ in default = {}; }; + upstreamDefaults = mkOption { + description = '' + Whether to base the config declared in services.dnscrypt-proxy2.settings on the upstream example config () + + Disable this if you want to declare your dnscrypt config from scratch. + ''; + type = types.bool; + default = true; + }; + configFile = mkOption { description = '' Path to TOML config file. See: @@ -38,7 +48,13 @@ in json = builtins.toJSON cfg.settings; passAsFile = [ "json" ]; } '' - ${pkgs.remarshal}/bin/json2toml < $jsonPath > $out + ${if cfg.upstreamDefaults then '' + ${pkgs.remarshal}/bin/toml2json ${pkgs.dnscrypt-proxy2.src}/dnscrypt-proxy/example-dnscrypt-proxy.toml > example.json + ${pkgs.jq}/bin/jq --slurp add example.json $jsonPath > config.json # merges the two + '' else '' + cp $jsonPath config.json + ''} + ${pkgs.remarshal}/bin/json2toml < config.json > $out ''; defaultText = literalExample "TOML file generated from services.dnscrypt-proxy2.settings"; }; -- cgit 1.4.1