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"