{ config, depot, lib, ... }:

let
  cfg = config.services.dns;

  nsNodes = lib.imap1 (idx: node: {
    name = "eu${toString idx}.ns";
    value = {
      type = "A";
      target = [ depot.hours.${node}.interfaces.primary.addrPublic ];
    };
  }) cfg.nodes.authoritative;
in

{
  dns.records = lib.mkMerge [
    (lib.listToAttrs nsNodes)
    {
      NS = {
        name = "@";
        type = "NS";
        target = map (ns: "${ns.name}.${depot.lib.meta.domain}.") nsNodes;
      };
    }
  ];
}