4242in {
4343 options . services . jae . router = with lib . types ; {
4444 enable = mkEnableOption "Whether to enable the router" ;
45- #disableDns = mkEnableOption "Whether to disable dns server";
46- useNextDns = mkEnableOption "Whether to use nextdns DoH for name resolution" ;
47- nextDnsEnvFile = mkOption {
48- type = nullOr str ;
49- example = "/path/to/envfile" ;
50- default = null ;
51- } ;
5245 upstreamDnsServers = mkOption {
5346 type = listOf str ;
5447 description = "List of upstream dns server addresses." ;
5548 } ;
49+ # disableIPv4 = mkOption {
50+ # type = bool;
51+ # description = "If ipv4 should be disabled on the local network.";
52+ # };
5653 restrictedMacs = mkOption {
5754 type = listOf str ;
5855 description = "List of mac addresses." ;
@@ -115,33 +112,17 @@ in {
115112 internalInterfaces ) ;
116113 } ;
117114
118- networking . nat = {
119- enable = true ;
120- inherit ( cfg ) externalInterface ;
121- internalInterfaces = internalInterfaceNames ;
122- } ;
115+ # networking.nat = {
116+ # enable = !cfg.disableIPv4 ;
117+ # inherit (cfg) externalInterface;
118+ # internalInterfaces = internalInterfaceNames;
119+ # };
123120
124121 environment . persistence . "/keep" . directories = [ "/var/lib/dnsmasq" ] ;
125122
126- systemd . timers . kill-nextdns = {
127- description = "Kill nextdns 5 minutes after boot. What a hack." ;
128- wantedBy = [ "timers.target" ] ;
129- timerConfig . OnBootSec = "5m" ;
130- } ;
131- systemd . services . kill-nextdns = {
132- description = "Kill nextdns 5 minutes after boot. What a hack." ;
133- after = [ "network-online.target" ] ;
134- wants = [ "network-online.target" ] ;
135- wantedBy = [ "multi-user.target" ] ;
136- serviceConfig = {
137- Type = "oneshot" ;
138- ExecStartPre = "/run/current-system/sw/bin/pkill -9 nextdns" ;
139- ExecStart = "/run/current-system/sw/bin/systemctl restart nextdns" ;
140- } ;
141- } ;
123+ ## NAT64 (Jool) should be configured per-host in the host configuration
124+ ## See configurations/nixos/x86_64-linux/sagittarius.nix for example
142125
143- ## enable jool nat64
144- networking . jool . enable = true ;
145126 ## enable ipv6 on local network
146127 services . corerad = {
147128 enable = true ;
@@ -151,15 +132,6 @@ in {
151132 prometheus = true ;
152133 } ;
153134 interfaces = [
154- {
155- name = "pref64" ;
156- advertise = true ;
157- prefix = [
158- {
159- prefix = "64:ff9b::/96" ;
160- }
161- ] ;
162- }
163135 {
164136 name = cfg . internalInterface ;
165137 advertise = true ;
@@ -179,36 +151,63 @@ in {
179151 } ;
180152 } ;
181153
182- services . dnsmasq . enable = true ;
183- services . dnsmasq . resolveLocalQueries = true ;
184- services . dnsmasq . settings =
185- {
186- dhcp-range = mapAttrsToList ( tag : net : "${ tag } ,${ net . base } .10,${ net . base } .128,255.255.255.0,24h" ) internalInterfaces ;
187- dhcp-option = ( mapAttrsToList ( tag : net : "${ tag } ,option:router,${ net . address } " ) internalInterfaces ) ++ [ "option:dns-server,${ cfg . internalInterfaceIP } " ] ;
188- interface = internalInterfaceNames ;
189- }
190- // {
191- server = mkIf ( ! cfg . useNextDns ) cfg . upstreamDnsServers ;
192- # server = mkMerge [
193- # (mkIf (!cfg.useNextDns) cfg.upstreamDnsServers)
194- # (mkIf cfg.useNextDns ["127.0.0.1#5555"])
195- # ];
196- dhcp-authoritative = true ;
197- dhcp-leasefile = "/var/lib/dnsmasq/dnsmasq.leases" ;
198- add-mac = "text" ;
199- add-subnet = "32,128" ;
200- port = 5342 ;
201- }
202- // cfg . dnsMasqSettings ;
154+ # . {
155+ # bind ::
156+ # dns64 64:ff9b::/96
157+ # forward . tls://2606:4700:4700::1111 {
158+ # tls_servername 1dot1dot1dot1.cloudflare-dns.com
159+ # }
160+ # cache 30
161+ # log
162+ # errors
163+ # }
203164
204- services . resolved . enable = false ;
205- services . nextdns . enable = cfg . useNextDns ;
206- services . nextdns . arguments = ( flatten ( map ( mac : [ "-profile" "${ mac } =\ ${KIDSDNS_ID}" ] ) cfg . restrictedMacs ) ) ++ [ "-profile" "${ cfg . internalInterfaceIP } /24=\ ${NEXTDNS_ID}" "-cache-size" "10MB" "-discovery-dns" "127.0.0.1:5342" "-report-client-info" "-listen" "${ cfg . internalInterfaceIP } :53" "-listen" "127.0.0.1:53" ] ;
207- systemd . services . nextdns = mkIf cfg . useNextDns {
208- serviceConfig . EnvironmentFile = cfg . nextDnsEnvFile ;
209- after = [ "systemd-networkd-wait-online.service" ] ;
165+ services . coredns = {
166+ enable = true ;
167+ config = ''
168+ . {
169+ bind ::
170+ dns64 64:ff9b::/96
171+ forward . tls://2606:4700:4700::1111 {
172+ tls_servername 1dot1dot1dot1.cloudflare-dns.com
173+ }
174+ cache 300
175+ log
176+ }
177+ '' ;
210178 } ;
211179
180+ # services.dnsmasq.enable = true;
181+ # services.dnsmasq.resolveLocalQueries = true;
182+ # services.dnsmasq.settings =
183+ # {
184+ # dhcp-range = lib.mkIf (!cfg.disableIPv4) mapAttrsToList (tag: net: "${tag},${net.base}.10,${net.base}.128,255.255.255.0,24h") internalInterfaces;
185+ # dhcp-option = lib.mkIf (!cfg.disableIPv4) (mapAttrsToList (tag: net: "${tag},option:router,${net.address}") internalInterfaces) ++ ["option:dns-server,${cfg.internalInterfaceIP}"];
186+ # interface = internalInterfaceNames;
187+ # except-interface = cfg.externalInterface;
188+ # }
189+ # // {
190+ # server = mkIf (!cfg.useNextDns) cfg.upstreamDnsServers;
191+ # # server = mkMerge [
192+ # # (mkIf (!cfg.useNextDns) cfg.upstreamDnsServers)
193+ # # (mkIf cfg.useNextDns ["127.0.0.1#5555"])
194+ # # ];
195+ # dhcp-authoritative = true;
196+ # dhcp-leasefile = "/var/lib/dnsmasq/dnsmasq.leases";
197+ # add-mac = "text";
198+ # add-subnet = "32,128";
199+ # port = 5342;
200+ # }
201+ # // cfg.dnsMasqSettings;
202+
203+ services . resolved . enable = false ;
204+ # services.nextdns.enable = cfg.useNextDns;
205+ # services.nextdns.arguments = (flatten (map (mac: ["-profile" "${mac}=\${KIDSDNS_ID}"]) cfg.restrictedMacs)) ++ ["-profile" "${cfg.internalInterfaceIP}/24=\${NEXTDNS_ID}" "-cache-size" "10MB" "-discovery-dns" "127.0.0.1:5342" "-report-client-info" "-listen" "${cfg.internalInterfaceIP}:53" "-listen" "127.0.0.1:53"];
206+ # systemd.services.nextdns = mkIf cfg.useNextDns {
207+ # serviceConfig.EnvironmentFile = cfg.nextDnsEnvFile;
208+ # after = ["systemd-networkd-wait-online.service"];
209+ # };
210+
212211 boot . kernel . sysctl . "net.ipv4.conf.all.forwarding" = true ;
213212 boot . kernel . sysctl . "net.ipv6.conf.all.forwarding" = true ;
214213
0 commit comments