mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-18 19:51:17 +00:00
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.
This commit is contained in:
parent
c8f26afbbf
commit
e4c49db668
|
@ -27,6 +27,16 @@ in
|
|||
default = {};
|
||||
};
|
||||
|
||||
upstreamDefaults = mkOption {
|
||||
description = ''
|
||||
Whether to base the config declared in <literal>services.dnscrypt-proxy2.settings</literal> on the upstream example config (<link xlink:href="https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml"/>)
|
||||
|
||||
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: <link xlink:href="https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml"/>
|
||||
|
@ -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";
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue