{ config, ... }: let primaryInterface = config.systemd.network.networks."10-ethernet".matchConfig.Name; adguardPort = 3000; in { services = { resolved.enable = false; adguardhome = { enable = true; mutableSettings = true; allowDHCP = true; settings = { http.address = "0.0.0.0:${toString adguardPort}"; users = [ { name = "DerGrumpf"; password = "$2a$10$EyuPHKxu0YZ9sXl4ZNMzRuvYCKWOeCobTkpXUJBhL14CCkWCY6FRm"; } ]; dns = { bind_hosts = [ "0.0.0.0" "::" ]; port = 53; upstream_dns = [ "https://dns10.quad9.net/dns-query" "https://dns.adguard-dns.com/dns-query" "https://0ms.dev/dns-query" "https://dns.cloudflare.com/dns-query" "https://security.cloudflare-dns.com/dns-query" ]; bootstrap_dns = [ "9.9.9.10" "149.112.112.10" ]; fallback_dns = [ "1.1.1.1" "8.8.8.8" ]; upstream_mode = "load_balance"; }; dhcp = { enabled = true; interface_name = primaryInterface; local_domain_name = "lan"; dhcpv4 = { gateway_ip = "192.168.2.1"; subnet_mask = "255.255.255.0"; range_start = "192.168.2.150"; range_end = "192.168.2.200"; lease_duration = 86400; icmp_timeout_msec = 1000; }; dhcpv6 = { range_start = "fdbb:959a:27ee::100"; lease_duration = 86400; ra_slaac_only = false; ra_allow_slaac = false; }; }; filters = [ # --- existing --- { enabled = true; url = "https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt"; name = "AdGuard DNS filter"; id = 1; } { enabled = true; url = "https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt"; name = "AdAway Default Blocklist"; id = 2; } # --- malware & phishing --- { enabled = true; url = "https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt"; name = "The Big List of Hacked Malware Web Sites"; id = 3; } { enabled = true; url = "https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt"; name = "Malicious URL Blocklist (URLhaus)"; id = 4; } # --- telemetry --- { enabled = true; url = "https://adguardteam.github.io/HostlistsRegistry/assets/filter_3.txt"; name = "AWAvenue Ads Rule"; id = 5; } { enabled = true; url = "https://adguardteam.github.io/HostlistsRegistry/assets/filter_54.txt"; name = "HaGeZi's Windows/Office Tracker Blocklist"; id = 6; } # --- Smart TV / IoT --- { enabled = true; url = "https://adguardteam.github.io/HostlistsRegistry/assets/filter_59.txt"; name = "HaGeZi's Smart TV Blocklist"; id = 7; } ]; filtering = { filtering_enabled = true; protection_enabled = true; safe_search.enabled = false; parental_enabled = false; safebrowsing_enabled = false; }; }; }; }; networking.firewall = { allowedTCPPorts = [ 53 # DNS adguardPort ]; allowedUDPPorts = [ 53 # DNS 67 # DCHP ]; }; }