{ lib, ... }: with lib; { options.local.ns.zones = mkOption { type = with lib.types; attrsOf (submodule ({ config, name, ... }: let cfg = config.localNS; in { options.localNS = { enable = mkEnableOption "local NS settings"; primary = mkOption { type = str; }; }; config = mkIf cfg.enable { # https://docs.gandi.net/en/domain_names/advanced_users/secondary_nameserver.html nsdConfig = let gandiSecondary = [ "17.70.177.40 NOKEY" "2001:4b98:d:1::40 NOKEY" ]; in { notify = gandiSecondary; provideXFR = gandiSecondary; }; ns = [ { name = "@"; host = cfg.primary; } { name = "@"; host = "ns6.gandi.net."; } ]; a = [ { name = cfg.primary; ipv4 = "37.205.12.147"; } ]; aaaa = [ { name = cfg.primary; ipv6 = "2a03:3b40:fe:3ec::1"; } ]; }; })); }; }