{ config, lib, pkgs, ... }:

let
  hostCfg = config.hosts.ni;
  cfg = hostCfg.services.dns-server;
in {
  options.hosts.ni.services.dns-server.enable =
    lib.mkEnableOption "preferred DNS server";

  config = lib.mkIf cfg.enable {
    services.nsd = {
      enable = true;
      ipv4 = true;
      ipv6 = true;

      zones."foodogsquared.internal".data = ''
        $ORIGIN foodogsquared.internal.
        $TTL 3600

        @ IN SOA ns1.foodogsquared.internal. admin.foodogsquared.one. (
          2025010101  ;Serial
          3600        ;Refresh
          3600        ;Retry
          3600        ;Expire
          3600        ;Negative response caching TTL
        )
          3600  IN  NS  ns1.foodogsquared.internal.

        ni   3600  IN  A  127.0.0.1
        ns1  3600  IN  A  127.0.0.1
        rss  3600  IN  A  127.0.0.1
      '';
    };

    services.resolved.domains = [ "~foodogsquared.internal" ];
    networking.nameservers = [ "127.0.0.1" ];
  };
}
