mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 13:40:28 +03:00
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>
This commit is contained in:
parent
8ee9c8d3ed
commit
1526a1b041
6 changed files with 60 additions and 33 deletions
|
@ -12,37 +12,26 @@ 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 {
|
||||
in
|
||||
{
|
||||
|
||||
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" ]; })
|
||||
];
|
||||
|
||||
options.services.adguardhome = with types; {
|
||||
enable = mkEnableOption (lib.mdDoc "AdGuard Home network-wide ad blocker");
|
||||
|
||||
host = mkOption {
|
||||
default = "0.0.0.0";
|
||||
type = str;
|
||||
description = lib.mdDoc ''
|
||||
Host address to bind HTTP server to.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
default = 3000;
|
||||
type = port;
|
||||
description = lib.mdDoc ''
|
||||
Port to serve HTTP pages on.
|
||||
'';
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
default = false;
|
||||
type = bool;
|
||||
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue