Merge pull request #287299 from SuperSandro2000/unbound-checkconf
nixos/unbound: check validity of config file
This commit is contained in:
commit
daa33a4bf7
@ -24,12 +24,24 @@ let
|
|||||||
confNoServer = concatStringsSep "\n" ((mapAttrsToList (toConf "") (builtins.removeAttrs cfg.settings [ "server" ])) ++ [""]);
|
confNoServer = concatStringsSep "\n" ((mapAttrsToList (toConf "") (builtins.removeAttrs cfg.settings [ "server" ])) ++ [""]);
|
||||||
confServer = concatStringsSep "\n" (mapAttrsToList (toConf " ") (builtins.removeAttrs cfg.settings.server [ "define-tag" ]));
|
confServer = concatStringsSep "\n" (mapAttrsToList (toConf " ") (builtins.removeAttrs cfg.settings.server [ "define-tag" ]));
|
||||||
|
|
||||||
confFile = pkgs.writeText "unbound.conf" ''
|
confFileUnchecked = pkgs.writeText "unbound.conf" ''
|
||||||
server:
|
server:
|
||||||
${optionalString (cfg.settings.server.define-tag != "") (toOption " " "define-tag" cfg.settings.server.define-tag)}
|
${optionalString (cfg.settings.server.define-tag != "") (toOption " " "define-tag" cfg.settings.server.define-tag)}
|
||||||
${confServer}
|
${confServer}
|
||||||
${confNoServer}
|
${confNoServer}
|
||||||
'';
|
'';
|
||||||
|
confFile = if cfg.checkconf then pkgs.runCommandLocal "unbound-checkconf" { } ''
|
||||||
|
cp ${confFileUnchecked} unbound.conf
|
||||||
|
|
||||||
|
# fake stateDir which is not accesible in the sandbox
|
||||||
|
mkdir -p $PWD/state
|
||||||
|
sed -i unbound.conf \
|
||||||
|
-e '/auto-trust-anchor-file/d' \
|
||||||
|
-e "s|${cfg.stateDir}|$PWD/state|"
|
||||||
|
${cfg.package}/bin/unbound-checkconf unbound.conf
|
||||||
|
|
||||||
|
cp ${confFileUnchecked} $out
|
||||||
|
'' else confFileUnchecked;
|
||||||
|
|
||||||
rootTrustAnchorFile = "${cfg.stateDir}/root.key";
|
rootTrustAnchorFile = "${cfg.stateDir}/root.key";
|
||||||
|
|
||||||
@ -62,6 +74,17 @@ in {
|
|||||||
description = lib.mdDoc "Directory holding all state for unbound to run.";
|
description = lib.mdDoc "Directory holding all state for unbound to run.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
checkconf = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = !cfg.settings ? include;
|
||||||
|
defaultText = "!config.services.unbound.settings ? include";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Wether to check the resulting config file with unbound checkconf for syntax errors.
|
||||||
|
|
||||||
|
If settings.include is used, then this options is disabled, as the import can likely not be resolved at build time.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
resolveLocalQueries = mkOption {
|
resolveLocalQueries = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user