3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #154791 from CRTified/fix-154775-adguardhome-settings

This commit is contained in:
legendofmiracles 2022-01-17 12:45:24 -06:00 committed by GitHub
commit 59a07c683a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 77 additions and 2 deletions

View file

@ -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

View 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)
'';
}

View file

@ -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 {};

View file

@ -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; {