at 24.11-pre 3.7 kB view raw
1{ 2 name = "adguardhome"; 3 4 nodes = { 5 nullConf = { services.adguardhome.enable = true; }; 6 7 emptyConf = { 8 services.adguardhome = { 9 enable = true; 10 11 settings = { }; 12 }; 13 }; 14 15 schemaVersionBefore23 = { 16 services.adguardhome = { 17 enable = true; 18 19 settings.schema_version = 20; 20 }; 21 }; 22 23 declarativeConf = { 24 services.adguardhome = { 25 enable = true; 26 27 mutableSettings = false; 28 settings.dns.bootstrap_dns = [ "127.0.0.1" ]; 29 }; 30 }; 31 32 mixedConf = { 33 services.adguardhome = { 34 enable = true; 35 36 mutableSettings = true; 37 settings.dns.bootstrap_dns = [ "127.0.0.1" ]; 38 }; 39 }; 40 41 dhcpConf = { lib, ... }: { 42 virtualisation.vlans = [ 1 ]; 43 44 networking = { 45 # Configure static IP for DHCP server 46 useDHCP = false; 47 interfaces."eth1" = lib.mkForce { 48 useDHCP = false; 49 ipv4 = { 50 addresses = [{ 51 address = "10.0.10.1"; 52 prefixLength = 24; 53 }]; 54 55 routes = [{ 56 address = "10.0.10.0"; 57 prefixLength = 24; 58 }]; 59 }; 60 }; 61 62 # Required for DHCP 63 firewall.allowedUDPPorts = [ 67 68 ]; 64 }; 65 66 services.adguardhome = { 67 enable = true; 68 allowDHCP = true; 69 mutableSettings = false; 70 settings = { 71 dns.bootstrap_dns = [ "127.0.0.1" ]; 72 dhcp = { 73 # This implicitly enables CAP_NET_RAW 74 enabled = true; 75 interface_name = "eth1"; 76 local_domain_name = "lan"; 77 dhcpv4 = { 78 gateway_ip = "10.0.10.1"; 79 range_start = "10.0.10.100"; 80 range_end = "10.0.10.101"; 81 subnet_mask = "255.255.255.0"; 82 }; 83 }; 84 }; 85 }; 86 }; 87 88 client = { lib, ... }: { 89 virtualisation.vlans = [ 1 ]; 90 networking = { 91 interfaces.eth1 = { 92 useDHCP = true; 93 ipv4.addresses = lib.mkForce [ ]; 94 }; 95 }; 96 }; 97 }; 98 99 testScript = '' 100 with subtest("Minimal (settings = null) config test"): 101 nullConf.wait_for_unit("adguardhome.service") 102 nullConf.wait_for_open_port(3000) 103 104 with subtest("Default config test"): 105 emptyConf.wait_for_unit("adguardhome.service") 106 emptyConf.wait_for_open_port(3000) 107 108 with subtest("Default schema_version 23 config test"): 109 schemaVersionBefore23.wait_for_unit("adguardhome.service") 110 schemaVersionBefore23.wait_for_open_port(3000) 111 112 with subtest("Declarative config test, DNS will be reachable"): 113 declarativeConf.wait_for_unit("adguardhome.service") 114 declarativeConf.wait_for_open_port(53) 115 declarativeConf.wait_for_open_port(3000) 116 117 with subtest("Mixed config test, check whether merging works"): 118 mixedConf.wait_for_unit("adguardhome.service") 119 mixedConf.wait_for_open_port(53) 120 mixedConf.wait_for_open_port(3000) 121 # Test whether merging works properly, even if nothing is changed 122 mixedConf.systemctl("restart adguardhome.service") 123 mixedConf.wait_for_unit("adguardhome.service") 124 mixedConf.wait_for_open_port(3000) 125 126 with subtest("Testing successful DHCP start"): 127 dhcpConf.wait_for_unit("adguardhome.service") 128 client.systemctl("start network-online.target") 129 client.wait_for_unit("network-online.target") 130 # Test IP assignment via DHCP 131 dhcpConf.wait_until_succeeds("ping -c 5 10.0.10.100") 132 # Test hostname resolution over DHCP-provided DNS 133 dhcpConf.wait_until_succeeds("ping -c 5 client.lan") 134 ''; 135}