forked from mirrors/nixpkgs
Merge pull request #154791 from CRTified/fix-154775-adguardhome-settings
This commit is contained in:
commit
59a07c683a
|
@ -87,6 +87,22 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.settings != { }
|
||||||
|
-> (hasAttrByPath [ "dns" "bind_host" ] cfg.settings)
|
||||||
|
|| (hasAttrByPath [ "dns" "bind_hosts" ] cfg.settings);
|
||||||
|
message =
|
||||||
|
"AdGuard setting dns.bind_host or dns.bind_hosts needs to be configured for a minimal working configuration";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
assertion = cfg.settings != { }
|
||||||
|
-> hasAttrByPath [ "dns" "bootstrap_dns" ] cfg.settings;
|
||||||
|
message =
|
||||||
|
"AdGuard setting dns.bootstrap_dns needs to be configured for a minimal working configuration";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
systemd.services.adguardhome = {
|
systemd.services.adguardhome = {
|
||||||
description = "AdGuard Home: Network-level blocker";
|
description = "AdGuard Home: Network-level blocker";
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
|
@ -96,7 +112,7 @@ in {
|
||||||
StartLimitBurst = 10;
|
StartLimitBurst = 10;
|
||||||
};
|
};
|
||||||
|
|
||||||
preStart = ''
|
preStart = optionalString (cfg.settings != { }) ''
|
||||||
if [ -e "$STATE_DIRECTORY/AdGuardHome.yaml" ] \
|
if [ -e "$STATE_DIRECTORY/AdGuardHome.yaml" ] \
|
||||||
&& [ "${toString cfg.mutableSettings}" = "1" ]; then
|
&& [ "${toString cfg.mutableSettings}" = "1" ]; then
|
||||||
# Writing directly to AdGuardHome.yaml results in empty file
|
# Writing directly to AdGuardHome.yaml results in empty file
|
||||||
|
|
57
nixos/tests/adguardhome.nix
Normal file
57
nixos/tests/adguardhome.nix
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
import ./make-test-python.nix {
|
||||||
|
name = "adguardhome";
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
minimalConf = { ... }: {
|
||||||
|
services.adguardhome = { enable = true; };
|
||||||
|
};
|
||||||
|
|
||||||
|
declarativeConf = { ... }: {
|
||||||
|
services.adguardhome = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
mutableSettings = false;
|
||||||
|
settings = {
|
||||||
|
dns = {
|
||||||
|
bind_host = "0.0.0.0";
|
||||||
|
bootstrap_dns = "127.0.0.1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mixedConf = { ... }: {
|
||||||
|
services.adguardhome = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
mutableSettings = true;
|
||||||
|
settings = {
|
||||||
|
dns = {
|
||||||
|
bind_host = "0.0.0.0";
|
||||||
|
bootstrap_dns = "127.0.0.1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
with subtest("Minimal config test"):
|
||||||
|
minimalConf.wait_for_unit("adguardhome.service")
|
||||||
|
minimalConf.wait_for_open_port(3000)
|
||||||
|
|
||||||
|
with subtest("Declarative config test, DNS will be reachable"):
|
||||||
|
declarativeConf.wait_for_unit("adguardhome.service")
|
||||||
|
declarativeConf.wait_for_open_port(53)
|
||||||
|
declarativeConf.wait_for_open_port(3000)
|
||||||
|
|
||||||
|
with subtest("Mixed config test, check whether merging works"):
|
||||||
|
mixedConf.wait_for_unit("adguardhome.service")
|
||||||
|
mixedConf.wait_for_open_port(53)
|
||||||
|
mixedConf.wait_for_open_port(3000)
|
||||||
|
# Test whether merging works properly, even if nothing is changed
|
||||||
|
mixedConf.systemctl("restart adguardhome.service")
|
||||||
|
mixedConf.wait_for_unit("adguardhome.service")
|
||||||
|
mixedConf.wait_for_open_port(3000)
|
||||||
|
'';
|
||||||
|
}
|
|
@ -23,6 +23,7 @@ in
|
||||||
{
|
{
|
||||||
_3proxy = handleTest ./3proxy.nix {};
|
_3proxy = handleTest ./3proxy.nix {};
|
||||||
acme = handleTest ./acme.nix {};
|
acme = handleTest ./acme.nix {};
|
||||||
|
adguardhome = handleTest ./adguardhome.nix {};
|
||||||
aesmd = handleTest ./aesmd.nix {};
|
aesmd = handleTest ./aesmd.nix {};
|
||||||
agda = handleTest ./agda.nix {};
|
agda = handleTest ./agda.nix {};
|
||||||
airsonic = handleTest ./airsonic.nix {};
|
airsonic = handleTest ./airsonic.nix {};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ lib, stdenv, fetchurl, fetchzip }:
|
{ lib, stdenv, fetchurl, fetchzip, nixosTests }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "adguardhome";
|
pname = "adguardhome";
|
||||||
|
@ -12,6 +12,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
updateScript = ./update.sh;
|
updateScript = ./update.sh;
|
||||||
|
tests.adguardhome = nixosTests.adguardhome;
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
Loading…
Reference in a new issue