main
1{ dns, globals, ... }:
2with dns.lib.combinators;
3let
4 # Machines that have VPN entries
5 machineList = [
6 "okinawa"
7 "aomi"
8 "shikoku"
9 "sakhalin"
10 "rhea"
11 "aion"
12 "athena"
13 "demeter"
14 "nagoya"
15 "kyushu"
16 "lutece"
17 ];
18
19 mkVpnMachineRecords = builtins.listToAttrs (
20 map (machineName: {
21 name = machineName;
22 value =
23 let
24 vpnIP = globals.machines.${machineName}.net.vpn.ips;
25 ip = if builtins.isList vpnIP then builtins.head vpnIP else vpnIP;
26 in
27 {
28 A = [ ip ];
29 subdomains."*".A = [ ip ];
30 };
31 }) machineList
32 );
33in
34{
35 SOA = {
36 nameServer = "ns1.vpn.";
37 adminEmail = "admin.vpn";
38 serial = 3;
39 refresh = 604800;
40 retry = 86400;
41 expire = 2419200;
42 minimum = 604800;
43 };
44
45 NS = [
46 "ns1.vpn."
47 "ns2.vpn."
48 ];
49
50 subdomains = {
51 # Name servers
52 ns1.A = [ (builtins.head globals.machines.shikoku.net.vpn.ips) ];
53 ns2.A = [ (builtins.head globals.machines.sakhalin.net.vpn.ips) ];
54
55 # hass - hardcoded as it's not in the machine list
56 hass.A = [ "10.100.0.81" ];
57 }
58 // mkVpnMachineRecords;
59}