diff options
author | Carl Richard Theodor Schneider <dev.github@crtified.me> | 2022-06-07 13:35:22 +0200 |
---|---|---|
committer | Carl Richard Theodor Schneider <dev.github@crtified.me> | 2022-10-25 17:35:27 +0200 |
commit | 1526a1b04145ba66e10127c7d6f0ef1a3d30cfcd (patch) | |
tree | 46777a52d8aa7886741e79823a7d7cc4e89d37de /nixos/modules/services/networking/adguardhome.nix | |
parent | 8ee9c8d3ed07609f36f9ffb1b399caf926301c28 (diff) | |
download | nixpkgs-1526a1b04145ba66e10127c7d6f0ef1a3d30cfcd.tar nixpkgs-1526a1b04145ba66e10127c7d6f0ef1a3d30cfcd.tar.gz nixpkgs-1526a1b04145ba66e10127c7d6f0ef1a3d30cfcd.tar.bz2 nixpkgs-1526a1b04145ba66e10127c7d6f0ef1a3d30cfcd.tar.lz nixpkgs-1526a1b04145ba66e10127c7d6f0ef1a3d30cfcd.tar.xz nixpkgs-1526a1b04145ba66e10127c7d6f0ef1a3d30cfcd.tar.zst nixpkgs-1526a1b04145ba66e10127c7d6f0ef1a3d30cfcd.zip |
adguardhome: Add schema_version
This will add `passthru.schema_version` to be used as default value for the adguardhome module. It will also update the `update.sh` to keep the `schema_version` in sync with the version by inspecting the sourcecode. This might break existing configs, if they use deprecated values that don't appear in newer schema_versions and schema_version wasn't set explicitly. Explicit declarations of schema_version always have higher priority. This also removes the `host` and `config` settings in favour of using the appropriate `settings`. Fixes #173938 Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
Diffstat (limited to 'nixos/modules/services/networking/adguardhome.nix')
-rw-r--r-- | nixos/modules/services/networking/adguardhome.nix | 66 |
1 files changed, 41 insertions, 25 deletions
diff --git a/nixos/modules/services/networking/adguardhome.nix b/nixos/modules/services/networking/adguardhome.nix index 13b6f6efcd6..eaeaeaeb6a7 100644 --- a/nixos/modules/services/networking/adguardhome.nix +++ b/nixos/modules/services/networking/adguardhome.nix @@ -12,36 +12,25 @@ let "--config /var/lib/AdGuardHome/AdGuardHome.yaml" ] ++ cfg.extraArgs); - baseConfig = { - bind_host = cfg.host; - bind_port = cfg.port; - }; - configFile = pkgs.writeTextFile { name = "AdGuardHome.yaml"; - text = builtins.toJSON (recursiveUpdate cfg.settings baseConfig); + text = builtins.toJSON cfg.settings; checkPhase = "${pkgs.adguardhome}/bin/adguardhome -c $out --check-config"; }; -in { - options.services.adguardhome = with types; { - enable = mkEnableOption (lib.mdDoc "AdGuard Home network-wide ad blocker"); +in +{ - host = mkOption { - default = "0.0.0.0"; - type = str; - description = lib.mdDoc '' - Host address to bind HTTP server to. - ''; - }; + imports = + let cfgPath = [ "services" "adguardhome" ]; + in + [ + (mkRenamedOptionModuleWith { sinceRelease = 2211; from = cfgPath ++ [ "host" ]; to = cfgPath ++ [ "settings" "bind_host" ]; }) + (mkRenamedOptionModuleWith { sinceRelease = 2211; from = cfgPath ++ [ "port" ]; to = cfgPath ++ [ "settings" "bind_port" ]; }) + ]; - port = mkOption { - default = 3000; - type = port; - description = lib.mdDoc '' - Port to serve HTTP pages on. - ''; - }; + options.services.adguardhome = with types; { + enable = mkEnableOption (lib.mdDoc "AdGuard Home network-wide ad blocker"); openFirewall = mkOption { default = false; @@ -62,8 +51,35 @@ in { }; settings = mkOption { - type = (pkgs.formats.yaml { }).type; default = { }; + type = submodule { + freeformType = (pkgs.formats.yaml { }).type; + options = { + schema_version = mkOption { + default = pkgs.adguardhome.schema_version; + defaultText = literalExpression "pkgs.adguardhome.schema_version"; + type = int; + description = lib.mdDoc '' + Schema version for the configuration. + Defaults to the `schema_version` supplied by `pkgs.adguardhome`. + ''; + }; + bind_host = mkOption { + default = "0.0.0.0"; + type = str; + description = lib.mdDoc '' + Host address to bind HTTP server to. + ''; + }; + bind_port = mkOption { + default = 3000; + type = port; + description = lib.mdDoc '' + Port to serve HTTP pages on. + ''; + }; + }; + }; description = lib.mdDoc '' AdGuard Home configuration. Refer to <https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration#configuration-file> @@ -135,6 +151,6 @@ in { }; }; - networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.port ]; + networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.settings.bind_port ]; }; } |