{ imports = [ ../acme.nix ../nginx.nix ]; skynet_dns.records = { external = []; cname = [ # create a sub-subdomain for each game "compsoc_classic.minecraft.games CNAME games" "compsoc.minecraft.games CNAME games" "map.compsoc_classic.minecraft.games CNAME games" #"compsoc.minecraft.games CNAME games" ]; }; networking.firewall.allowedTCPPorts = [ # for the proxy 25565 # the servers 20000 20001 ]; services.nginx.virtualHosts."compsoc_classic.minecraft.games.skynet.ie" = { forceSSL = true; useACMEHost = "skynet"; locations."/map/".alias = "/etc/games/minecraft/compsoc/classic/config/plugins/dynmap/web/"; }; # arion is one way to use docker on nixos # see https://gitlab.com/c2842/computer_society/nixos/-/blob/733b867f4782afa795848135a83e97a5cafaf16a/applications/games/minecraft.nix # for an example of a single compose file with multiple services virtualisation.arion = { backend = "docker"; projects = { minecraft_proxy.settings.services.mc_proxy.service = { image = "itzg/mc-router:1.18.0"; ports = [ "25565:25565/tcp" ]; expose = [ "25565" ]; command = [ "--mapping=compsoc_classic.minecraft.games.skynet.ie=172.17.0.1:20000,compsoc.minecraft.games.skynet.ie=172.17.0.1:20001" ]; }; minecraft_compsoc_classic.settings.services.compsoc_classic.service = { image = "nimmis/spigot:latest"; # setting these here as they arent special environment = { # this is what it last ran on SPIGOT_VER="1.18.2"; EULA="true"; }; # where the config files are stored volumes = [ "/etc/games/minecraft/compsoc/classic/config:/minecraft" ]; ports = [ "20000:25565/tcp" ]; }; minecraft_compsoc.settings.services.compsoc_test.service = { image = "nimmis/spigot:latest"; environment = { # this is what it last ran on SPIGOT_VER="1.18.2"; EULA="true"; }; # where the config files are stored volumes = [ "/etc/games/minecraft/compsoc/current/config:/minecraft" ]; ports = [ "20001:25565/tcp" ]; }; }; }; }