support eilean and ocaml-dns-eio multiple DNS zones

Changed files
+40 -37
hosts
modules
+15 -15
flake.lock
···
]
},
"locked": {
-
"lastModified": 1674649580,
-
"narHash": "sha256-r6e3oAQVDmL9QsHnTDw715Qo0SdXEo8fk8LLhBOo9fI=",
+
"lastModified": 1676990576,
+
"narHash": "sha256-oljhdlGy7v5bMI7gy0lfmUFl0wIMFczvlamWgH/6TFE=",
"ref": "main",
-
"rev": "419027863b0dd7e37cee356873a10c554485ef4d",
-
"revCount": 12,
+
"rev": "9d7027b80ab57fece64090d7da9214e1d2b763df",
+
"revCount": 13,
"type": "git",
"url": "ssh://git@git.freumh.org/ryan/eilean-nix.git"
},
···
]
},
"locked": {
-
"lastModified": 1676928470,
-
"narHash": "sha256-CGuXLhCXiEEC724ZSBWhgXkhGFHeKVekyE6GmDuG1A0=",
+
"lastModified": 1676980151,
+
"narHash": "sha256-31/8wJG0VUndUaZoIMGWLulIJmXfKb0IT5Q1qSB5E/A=",
"owner": "RyanGibb",
"repo": "ocaml-dns-eio",
-
"rev": "a4d5f0b29b90195397f1881138ea9d9f2c569154",
+
"rev": "62d9ccb45bdd133e5affe8e26847075b0dcbc697",
"type": "github"
},
"original": {
···
]
},
"locked": {
-
"lastModified": 1676912279,
-
"narHash": "sha256-KWFYibR9VQa+VbhhUXTXMc0pfcw5QfhpsFDwRc82jS8=",
+
"lastModified": 1676988764,
+
"narHash": "sha256-ES3fiVeJFklvL4u+qeL+4qzGWCB3Ea/D/xUTflfyAQ0=",
"ref": "refs/heads/master",
-
"rev": "78b36aeadf3dd0cadbf51db05b50927b25c5c4d5",
-
"revCount": 413,
+
"rev": "ebad86e5618db68ea1c64ee784d7231bf92f10a1",
+
"revCount": 414,
"type": "git",
"url": "ssh://git@git.freumh.org/ryan/website.git"
},
···
]
},
"locked": {
-
"lastModified": 1669825363,
-
"narHash": "sha256-VnmzHGe6xk7DjHn+XqgYOo5t7rLq5mkhIYmoKFoawZg=",
+
"lastModified": 1676988665,
+
"narHash": "sha256-2yEamAhBR6Y3/SqxvFYAArz6+5fl+o7PT1xBERCfZ80=",
"ref": "refs/heads/master",
-
"rev": "87fe5ba115534376bd00359ec43c80a0c32cadff",
-
"revCount": 210,
+
"rev": "3139087fe212e33e77e6cd67f9fa9764a6a64145",
+
"revCount": 211,
"type": "git",
"url": "ssh://git@git.freumh.org/ryan/twitcher.git"
},
+22 -19
hosts/vps/default.nix
···
};
dns = {
-
soa.serial = lib.mkForce 2018011625;
-
records = [
-
{ name = "@"; type = "TXT"; data = "google-site-verification=rEvwSqf7RYKRQltY412qMtTuoxPp64O3L7jMotj9Jnc"; }
-
{ name = "teapot"; type = "CNAME"; data = "vps"; }
+
zones.${config.networking.domain} = {
+
soa.serial = lib.mkDefault 0;
+
records = [
+
{ name = "@"; type = "TXT"; data = "google-site-verification=rEvwSqf7RYKRQltY412qMtTuoxPp64O3L7jMotj9Jnc"; }
+
{ name = "teapot"; type = "CNAME"; data = "vps"; }
-
{ name = "@"; type = "NS"; data = "ns1"; }
-
{ name = "@"; type = "NS"; data = "ns2"; }
+
{ name = "@"; type = "NS"; data = "ns1"; }
+
{ name = "@"; type = "NS"; data = "ns2"; }
-
{ name = "ns1"; type = "A"; data = config.eilean.serverIpv4; }
-
{ name = "ns1"; type = "AAAA"; data = config.eilean.serverIpv6; }
-
{ name = "ns2"; type = "A"; data = config.eilean.serverIpv4; }
-
{ name = "ns2"; type = "AAAA"; data = config.eilean.serverIpv6; }
+
{ name = "ns1"; type = "A"; data = config.eilean.serverIpv4; }
+
{ name = "ns1"; type = "AAAA"; data = config.eilean.serverIpv6; }
+
{ name = "ns2"; type = "A"; data = config.eilean.serverIpv4; }
+
{ name = "ns2"; type = "AAAA"; data = config.eilean.serverIpv6; }
-
{ name = "www"; type = "CNAME"; data = "@"; }
+
{ name = "www"; type = "CNAME"; data = "@"; }
-
{ name = "@"; type = "A"; data = config.eilean.serverIpv4; }
-
{ name = "@"; type = "AAAA"; data = config.eilean.serverIpv6; }
-
{ name = "vps"; type = "A"; data = config.eilean.serverIpv4; }
-
{ name = "vps"; type = "AAAA"; data = config.eilean.serverIpv6; }
+
{ name = "@"; type = "A"; data = config.eilean.serverIpv4; }
+
{ name = "@"; type = "AAAA"; data = config.eilean.serverIpv6; }
+
{ name = "vps"; type = "A"; data = config.eilean.serverIpv4; }
+
{ name = "vps"; type = "AAAA"; data = config.eilean.serverIpv6; }
-
{ name = "@"; type = "LOC"; data = "52 12 40.4 N 0 5 31.9 E 22m 10m 10m 10m"; }
-
];
+
{ name = "@"; type = "LOC"; data = "52 12 40.4 N 0 5 31.9 E 22m 10m 10m 10m"; }
+
];
+
};
};
services.nginx.virtualHosts."teapot.${config.networking.domain}" = {
···
};
ocaml-dns-eio = {
enable = true;
-
# todo make this zonefile derivation a config parameter `services.dns.zonefile`
-
zoneFile = import "${eilean}/modules/dns/zonefile.nix" { inherit pkgs config lib; };
+
# TODO make this zonefile derivation a config parameter `services.dns.zonefile`
+
# TODO add module in eilean for ocaml-dns-eio
+
zoneFile = "${import "${eilean}/modules/dns/zonefile.nix" { inherit pkgs config lib; zonename = config.networking.domain; zone = config.dns.zones.${config.networking.domain}; }}/${config.networking.domain}";
logLevel = 2;
};
};
+1 -1
modules/hosting/nix-cache.nix
···
};
};
-
dns.records = [
+
dns.zones.${config.networking.domain}.records = [
{
name = "binarycache";
type = "CNAME";
+1 -1
modules/hosting/rmfakecloud.nix
···
};
};
-
dns.records = [
+
dns.zones.${config.networking.domain}.records = [
{
name = "rmfakecloud";
type = "CNAME";
+1 -1
modules/personal/tailscale.nix
···
services.tailscale.enable = true;
networking.firewall.checkReversePath = mkDefault "loose";
-
dns.records = attrsets.mapAttrsToList (hostName: values: {
+
dns.zones.${config.networking.domain}.records = attrsets.mapAttrsToList (hostName: values: {
name = "${hostName}.vpn";
type = "A";
data = values.ip;