1
0
Fork 0
forked from lukas/nixos-config
nixos-config/hosts/blunix/localServices/adguard.nix
2026-07-30 10:55:25 +02:00

58 lines
2.3 KiB
Nix

{config, ...}:
{
services.adguardhome = {
enable = true;
# Keep DNS behavior reproducible and prevent stale UI settings from
# overriding the declared upstream resolvers.
mutableSettings = false;
port = 3007;
settings = {
http.address = "127.0.0.1";
http.port = 3007;
dns = {
bind_hosts = [ "0.0.0.0" ];
port = 53;
# Query independent providers in parallel so one unavailable upstream
# cannot break DNS for the complete Headscale network.
upstream_dns = [
"1.1.1.1"
"8.8.8.8"
];
upstream_mode = "parallel";
fallback_dns = [
"9.9.9.9"
];
# Bootstrap resolvers are IP addresses to avoid a DNS dependency loop.
bootstrap_dns = [
"1.1.1.1"
"8.8.8.8"
];
};
filtering = {
rewrites = [
{ domain = "desk.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "webhook.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "files.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
#{ domain = "git.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "dash.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "calendar.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
#fastpi
{ domain = "radio.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "navidrome.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "quantum.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "metadata.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "couchdb.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "jellyfin.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
{ domain = "obsidian.${config.domain}"; answer = config.tailnetIPs.blunix; enabled = true; }
];
filtering_enabled = true;
protection_enabled = true;
safe_search.enabled = true;
};
statistics.enabled = true;
};
};
}