Self-host your own digital island
1{ pkgs, config, lib, zonename, zone, ... }:
2
3pkgs.writeTextFile {
4 name = "zonefile-${zonename}";
5 destination = "/${zonename}";
6 text = ''
7 $ORIGIN ${zonename}.
8 $TTL ${builtins.toString zone.ttl}
9 @ IN SOA ${zone.soa.ns} ${zone.soa.email} (
10 ${builtins.toString zone.soa.serial}
11 ${builtins.toString zone.soa.refresh}
12 ${builtins.toString zone.soa.retry}
13 ${builtins.toString zone.soa.expire}
14 ${builtins.toString zone.soa.negativeCacheTtl}
15 )
16 ${lib.strings.concatStringsSep "\n" (builtins.map
17 (rr: "${rr.name} IN ${builtins.toString rr.ttl} ${rr.type} ${rr.value}")
18 zone.records)}
19 '';
20}