system/settings/services/adguard-home.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | {
config,
lib,
...
}:
let
inherit (config.networking) domain;
netlib = import ../../../lib/net.nix { inherit lib; };
subdomain = "dns.${domain}";
backend = config.services.adguardhome;
addrs = backend.settings.dns.bind_hosts;
byFamily = builtins.partition netlib.isv6 addrs;
v6s = byFamily.right;
v4s = byFamily.wrong;
in
{
services.adguardhome = {
enable = true;
host = "[::1]";
# otherwise blocklists will be lost (prefer web UI configuration)
mutableSettings = true;
settings = {
dhcp.enabled = false;
dns = {
hostsfile_enabled = false;
trusted_proxies = [ "::1" ];
enable_dnssec = true;
filtering = {
protection_enabled = true;
filtering_enabled = true;
blocking_mode = "refused";
};
upstream_timeout = "2s";
cache_enabled = true;
cache_optimistic = false;
cache_size = 100 * 1024 * 1024;
};
tls = {
enabled = true;
server_name = subdomain;
port_https = 0; # disabled, not random
allow_unencrypted_doh = true; # for reverse_proxy usage
};
};
};
services.dnsmasq.settings.host-record = [
"${subdomain},${builtins.head v4s},${builtins.head v6s},${toString (24 * 60 * 60)}"
];
services.caddy.virtualHosts = {
${subdomain} = {
serverAliases = addrs;
extraConfig = ''
tls {
issuer internal {
ca home
}
}
reverse_proxy * ${backend.host}:${toString backend.port}
'';
};
};
}
|