Merge pull request #82584 from Atemu/dnscrypt-default-config

dnscrypt-proxy2: base settings on example config

Changed files
+24 -1
nixos
doc
manual
release-notes
modules
services
networking
+7
nixos/doc/manual/release-notes/rl-2103.xml
···
</listitem>
<listitem>
<para>
+
The <literal>services.dnscrypt-proxy2</literal> module now takes the upstream's example configuration and updates it with the user's settings.
+
+
An option has been added to restore the old behaviour if you prefer to declare the configuration from scratch.
+
</para>
+
</listitem>
+
<listitem>
+
<para>
NixOS now defaults to the unified cgroup hierarchy (cgroupsv2).
See the <link xlink:href="https://www.redhat.com/sysadmin/fedora-31-control-group-v2">Fedora Article for 31</link>
for details on why this is desirable, and how it impacts containers.
+17 -1
nixos/modules/services/networking/dnscrypt-proxy2.nix
···
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"/>
···
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";
};