{lib, ...}: { imports = [ # Paths to other modules. # Compose this module out of smaller ones. ]; # this needs to mirror ../applications/dns.nix options.skynet.records = lib.mkOption { description = "Records, sorted based on therir type"; type = with lib.types; listOf (submodule { options = { record = lib.mkOption { type = str; }; r_type = lib.mkOption { type = enum ["A" "CNAME" "TXT" "PTR" "SRV" "MX"]; }; value = lib.mkOption { type = str; }; server = lib.mkOption { description = "Core record for a server"; type = bool; default = false; }; }; }); }; config = { skynet.records = [ { record = "optimus"; r_type = "A"; value = "193.1.99.90"; server = true; } { record = "panel.games"; r_type = "CNAME"; value = "optimus-reborn"; } { record = "bumblebee"; r_type = "A"; value = "193.1.99.91"; server = true; } { record = "minecraft.compsoc.games"; r_type = "CNAME"; value = "bumblebee"; } { record = "_minecraft._tcp.minecraft.compsoc.games.skynet.ie."; r_type = "SRV"; value = "0 10 25518 minecraft.compsoc.games.skynet.ie."; } { record = "minecraft-classic.compsoc.games"; r_type = "CNAME"; value = "bumblebee"; } { record = "_minecraft._tcp.minecraft-classic.compsoc.games.skynet.ie."; r_type = "SRV"; value = "0 10 25520 minecraft-classic.compsoc.games.skynet.ie."; } { record = "minecraft.gsoc.games"; r_type = "CNAME"; value = "bumblebee"; } { record = "_minecraft._tcp.minecraft.gsoc.games.skynet.ie."; r_type = "SRV"; value = "0 10 25521 minecraft.gsoc.games.skynet.ie."; } { record = "minecraft.phildeb.games"; r_type = "CNAME"; value = "bumblebee"; } { record = "_minecraft._tcp.minecraft.phildeb.games.skynet.ie."; r_type = "SRV"; value = "0 10 25522 minecraft.phildeb.games.skynet.ie."; } ]; }; }