{...}: { config = { fileSystems."/var/lib/knot" = { device = "surtr/safe/var-lib-knot"; fsType = "zfs"; }; systemd.services.knot.unitConfig.RequiresMountsFor = [ "/var/lib/knot" ]; services.knot = { enable = true; extraConfig = '' server: listen: 127.0.0.1@53 listen: ::1@53 listen: 202.61.241.61@53 listen: 2a03:4000:52:ada::@53 remote: - id: inwx_notify address: 185.181.104.96@53 - id: google address: ["8.8.8.8"] acl: - id: inwx_acl address: 185.181.104.96 action: transfer mod-rrl: - id: default rate-limit: 200 slip: 2 mod-cookies: - id: default secret-lifetime: 4h badcookie-slip: 1 submission: - id: validating-resolver parent: google policy: - id: rsa2048 algorithm: rsasha256 ksk-size: 4096 zsk-size: 2048 zsk-lifetime: 30d ksk-submission: validating-resolver - id: ed25519 algorithm: ed25519 nsec3: on nsec3-iterations: 0 ksk-lifetime: 360d signing-threads: 2 ksk-submission: validating-resolver template: - id: default global-module: [mod-cookies/default, mod-rrl/default] - id: inwx_zone storage: /var/lib/knot zonefile-sync: -1 zonefile-load: difference-no-serial serial-policy: dateserial journal-content: all semantic-checks: on dnssec-signing: on dnssec-policy: ed25519 notify: [inwx_notify] acl: [inwx_acl] zone: - domain: yggdrasil.li template: inwx_zone file: ${./zones/li.yggdrasil.soa} - domain: nights.email template: inwx_zone file: ${./zones/email.nights.soa} - domain: 141.li template: inwx_zone file: ${./zones/li.141.soa} - domain: kleen.li template: inwx_zone file: ${./zones/li.kleen.soa} - domain: xmpp.li template: inwx_zone file: ${./zones/li.xmpp.soa} - domain: dirty-haskell.org template: inwx_zone file: ${./zones/org.dirty-haskell.soa} - domain: praseodym.org template: inwx_zone file: ${./zones/org.praseodym.soa} - domain: rheperire.org template: inwx_zone file: ${./zones/org.rheperire.soa} ''; }; }; }