{ config, ... }: let inherit (config.networking) domain hostName; backend = config.services.adguardhome; in { services.adguardhome = { enable = true; host = "[::1]"; mutableSettings = false; settings = { dhcp.enabled = false; dns = { bind_hosts = [ "::" ]; hostsfile_enabled = false; trusted_proxies = [ "::1" ]; enable_dnssec = true; filtering = { protection_enabled = true; filtering_enabled = true; blocking_mode = "refused"; }; cache_enabled = true; cache_optimistic = true; }; }; }; services.dnsmasq.settings.cname = [ "dns.${domain},${hostName}.${domain}" ]; services.caddy.virtualHosts = { "dns.${domain}" = { extraConfig = '' tls { issuer internal { ca home } } encode reverse_proxy http://${backend.host}:${toString backend.port} ''; }; }; }