Self-host your own digital island
1{ config, lib, ... }: 2 3let cfg = config.eilean; in 4{ 5 options.eilean.dns.enable = lib.mkEnableOption "dns"; 6 7 config.dns = lib.mkIf cfg.dns.enable { 8 enable = true; 9 soa.serial = lib.mkDefault 0; 10 records = builtins.concatMap (ns: [ 11 { 12 name = "@"; 13 type = "NS"; 14 data = ns; 15 } 16 { 17 name = ns; 18 type = "A"; 19 data = cfg.serverIpv4; 20 } 21 ]) [ "ns1" "ns2" ] ++ 22 [ 23 { 24 name = "www"; 25 type = "CNAME"; 26 data = "@"; 27 } 28 29 { 30 name = "@"; 31 type = "A"; 32 data = cfg.serverIpv4; 33 } 34 { 35 name = "@"; 36 type = "AAAA"; 37 data = cfg.serverIpv6; 38 } 39 40 { 41 name = "vps"; 42 type = "A"; 43 data = cfg.serverIpv4; 44 } 45 { 46 name = "vps"; 47 type = "AAAA"; 48 data = cfg.serverIpv6; 49 } 50 51 { 52 name = "@"; 53 type = "LOC"; 54 data = "52 12 40.4 N 0 5 31.9 E 22m 10m 10m 10m"; 55 } 56 ]; 57 }; 58}