9 networkmanager.dns = lib.mkForce "none";
14 #resolvconf.enable = lib.mkForce false;
15 resolvconf.useLocalResolver = true;
16 dhcpcd.extraConfig = "nohook resolv.conf";
19 # Create a user for matching egress on it in the firewall
20 systemd.services.dnscrypt-proxy2.serviceConfig.User = "dnscrypt-proxy2";
21 users.users.dnscrypt-proxy2 = {
23 group = "dnscrypt-proxy2";
25 users.groups.dnscrypt-proxy2 = { };
26 services.dnscrypt-proxy2 = {
28 # https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml
29 upstreamDefaults = true;
32 disabled_server_names = [
35 dnscrypt_servers = true;
37 fallback_resolvers = [
42 ignore_system_dns = true;
46 #proxy = "socks5://127.0.0.1:9050";
48 netprobe_timeout = 60;
54 require_dnssec = true;
55 require_nofilter = true;
57 sources.public-resolvers = {
59 "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
60 "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
62 cache_file = "/var/lib/dnscrypt-proxy/public-resolvers.md";
63 minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
68 blocked_names_file = pkgs.writeText "dnscrypt-proxy2-blocked_names_file" ''
72 #log_file = 'dnscrypt-blacklist-domains.log'
77 networking.nftables.ruleset = ''
80 meta l4proto { udp, tcp } th dport domain skuid ${config.users.users.dnscrypt-proxy2.name} counter accept comment "dnscrypt-proxy2: DNS"