{ config, lib, ... }: let servers = { atm6 = "atm6.alicehuston.xyz"; stoneblock3 = "sb3.alicehuston.xyz"; stoneblock-4 = "sb4.alicehuston.xyz"; submerged-2 = "sm4.alicehuston.xyz"; RAD2 = "rad.alicehuston.xyz"; skyfactory = "sf.alicehuston.xyz"; divinejourney = "dj.alicehuston.xyz"; rlcraft = "rlcraft.alicehuston.xyz"; arcanum-institute = "arcanum.alicehuston.xyz"; meits = "meits.alicehuston.xyz"; # bcg-plus = "bcg.alicehuston.xyz"; pii = "pii.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 = "12G"; ALLOW_FLIGHT = "true"; MAX_TICK_TIME = "-1"; ENABLE_RCON = "true"; TZ = "America/New_York"; REGION_FILE_COMPRESSION = "none"; OPS = '' magpiecat chesiregirl1105 ''; }; 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"; pull = "always"; extraOptions = [ "--network=haproxy-net" "--network=minecraft-net" ]; cmd = [ ( "--mapping=mc.alicehuston.xyz=${defaultServer}:25565" + (lib.adev.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 ]; #}; #prominence-ii = { # image = "itzg/minecraft-server:java25-graalvm"; # volumes = [ # "${minecraft_path}/prominence-ii/modpacks:/modpacks:ro" # "${minecraft_path}/prominence-ii/data:/data" # ]; # hostname = "pii"; # environment = defaultEnv // { # VERSION = "1.20.1"; # CF_SLUG = "prominence-2-hasturian-era"; # CF_FILENAME_MATCHER = "3.9.14hf"; # USE_AIKAR_FLAGS = "false"; # USE_MEOWICE_FLAGS = "true"; # USE_MEOWICE_GRAALVM_FLAGS = "true"; # DIFFICULTY = "hard"; # ENABLE_COMMAND_BLOCK = "true"; # CF_FORCE_INCLUDE_FILES = '' # emi # ''; # }; # extraOptions = defaultOptions; # log-driver = "local"; # environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; #}; #stoneblock-4 = { # image = "itzg/minecraft-server:java25-graalvm"; # volumes = [ # "${minecraft_path}/stoneblock-4/modpacks:/modpacks:ro" # "${minecraft_path}/stoneblock-4/data:/data" # ]; # hostname = "stoneblock-4"; # environment = defaultEnv // { # VERSION = "1.21.1"; # CF_SLUG = "prominence-2-hasturian-era"; # CF_FILENAME_MATCHER = "3.9.14hf"; # USE_AIKAR_FLAGS = "false"; # USE_MEOWICE_FLAGS = "true"; # USE_MEOWICE_GRAALVM_FLAGS = "true"; # DIFFICULTY = "hard"; # ENABLE_COMMAND_BLOCK = "true"; # CF_FORCE_INCLUDE_FILES = '' # emi # ''; # }; # extraOptions = defaultOptions; # log-driver = "local"; # environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; #}; submerged-2 = { image = "itzg/minecraft-server:java25-graalvm"; volumes = [ "${minecraft_path}/submerged-2/modpacks:/modpacks:ro" "${minecraft_path}/submerged-2/data:/data" ]; hostname = "submerged-2"; environment = defaultEnv // { VERSION = "1.21.1"; CF_SLUG = "submerged-2"; CF_FILENAME_MATCHER = "B6.1"; USE_AIKAR_FLAGS = "false"; USE_MEOWICE_FLAGS = "true"; USE_MEOWICE_GRAALVM_FLAGS = "true"; DIFFICULTY = "hard"; ENABLE_COMMAND_BLOCK = "true"; }; extraOptions = defaultOptions; log-driver = "local"; environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; }; }; sops = { secrets = { "docker/minecraft".owner = "docker-service"; }; }; }