{ config, lib, ... }: let servers = { atm6 = "atm6.alicehuston.xyz"; stoneblock3 = "sb3.alicehuston.xyz"; RAD2 = "rad.alicehuston.xyz"; skyfactory = "sf.alicehuston.xyz"; divinejourney = "dj.alicehuston.xyz"; rlcraft = "rlcraft.alicehuston.xyz"; arcanum-institute = "arcanum.alicehuston.xyz"; # bcg-plus = "bcg.alicehuston.xyz"; }; defaultServer = "rlcraft"; # defaultEnv = { # EULA = "true"; # TYPE = "AUTO_CURSEFORGE"; # STOP_SERVER_ANNOUNCE_DELAY = "120"; # STOP_DURATION = "600"; # SYNC_CHUNK_WRITES = "false"; # USE_AIKAR_FLAGS = "true"; # MEMORY = "8GB"; # ALLOW_FLIGHT = "true"; # MAX_TICK_TIME = "-1"; # }; # defaultOptions = [ # "--stop-signal=SIGTERM" # "--stop-timeout=1800" # "--network=minecraft-net" # ]; # vars = import ../vars.nix; # minecraft_path = "${vars.primary_games}/minecraft"; in { virtualisation.oci-containers.containers = { mc-router = { image = "itzg/mc-router:latest"; extraOptions = [ "--network=haproxy-net" "--network=minecraft-net" ]; cmd = [ ( "--mapping=mc.alicehuston.xyz=${defaultServer}:25565" + (lib.rad-dev.mapAttrsToString (hostname: url: "," + url + "=" + hostname + ":25565") servers) ) ]; }; # rlcraft = { # image = "itzg/minecraft-server:java8"; # volumes = [ # "${minecraft_path}/rlcraft/modpacks:/modpacks:ro" # "${minecraft_path}/rlcraft/data:/data" # ]; # hostname = "rlcraft"; # environment = defaultEnv // { # VERSION = "1.12.2"; # CF_SLUG = "rlcraft"; # DIFFICULTY = "hard"; # ENABLE_COMMAND_BLOCK = "true"; # }; # extraOptions = defaultOptions; # log-driver = "local"; # environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; # }; # bcg-plus = { # image = "itzg/minecraft-server:java17"; # volumes = [ # "${minecraft_path}/bcg-plus/modpacks:/modpacks:ro" # "${minecraft_path}/bcg-plus/data:/data" # ]; # hostname = "bcg-plus"; # environment = defaultEnv // { # VERSION = "1.17"; # CF_SLUG = "bcg"; # DIFFICULTY = "normal"; # DEBUG = "true"; # # ENABLE_COMMAND_BLOCK = "true"; # }; # extraOptions = defaultOptions; # log-driver = "local"; # environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; # }; }; sops = { defaultSopsFile = ../secrets.yaml; secrets = { "docker/minecraft".owner = "docker-service"; }; }; }