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;
 
  31       bootstrap_resolvers = [
 
  37         # ExplanationNote: DNSSEC does not work for NTP servers
 
  38         # on machine with a clock set to far in the past.
 
  39         pkgs.writeText "dnscrypt-proxy2-cloaking_rules" ''
 
  40           0.nixos.pool.ntp.org 77.104.162.218
 
  41           0.nixos.pool.ntp.org 129.250.35.250
 
  42           0.nixos.pool.ntp.org 176.58.109.199
 
  43           0.nixos.pool.ntp.org 213.210.39.123
 
  44           1.nixos.pool.ntp.org 192.33.214.57
 
  45           1.nixos.pool.ntp.org 31.3.135.232
 
  46           1.nixos.pool.ntp.org 212.25.15.128
 
  47           1.nixos.pool.ntp.org 109.233.182.115
 
  48           2.nixos.pool.ntp.org 195.58.34.161
 
  49           2.nixos.pool.ntp.org 81.0.208.219
 
  50           2.nixos.pool.ntp.org 81.200.57.13
 
  51           2.nixos.pool.ntp.org 188.124.59.142
 
  52           2.nixos.pool.ntp.org 2606:4700:f1::123
 
  53           2.nixos.pool.ntp.org 2001:470:6f:483::101
 
  54           2.nixos.pool.ntp.org 2001:67c:d74:66::71be
 
  55           2.nixos.pool.ntp.org 2001:718:801:230::8c
 
  56           3.nixos.pool.ntp.org 88.198.200.96
 
  57           3.nixos.pool.ntp.org 78.47.168.188
 
  58           3.nixos.pool.ntp.org 62.128.1.18
 
  59           3.nixos.pool.ntp.org 80.153.195.191
 
  61       disabled_server_names = [
 
  64       dnscrypt_servers = true;
 
  66       fallback_resolvers = [
 
  71       forwarding_rules = pkgs.writeText "dnscrypt-proxy2-forwarding_rules" '''';
 
  72       ignore_system_dns = true;
 
  76       #proxy = "socks5://127.0.0.1:9050";
 
  78       netprobe_timeout = 60;
 
  84       require_dnssec = true;
 
  85       require_nofilter = true;
 
  87       sources.public-resolvers = {
 
  89           "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
 
  90           "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
 
  92         cache_file = "/var/lib/dnscrypt-proxy/public-resolvers.md";
 
  93         minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
 
  98         blocked_names_file = pkgs.writeText "dnscrypt-proxy2-blocked_names_file" ''
 
 102         #log_file = 'dnscrypt-blacklist-domains.log'
 
 107   networking.nftables.ruleset = ''
 
 110         meta l4proto { udp, tcp } th dport domain skuid ${config.users.users.dnscrypt-proxy2.name} counter accept comment "dnscrypt-proxy2: DNS"
 
 111         tcp dport https skuid ${config.users.users.dnscrypt-proxy2.name} counter accept comment "dnscrypt-proxy2: DNS over HTTPS"