{ 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"; 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 ]; }; #stop_signal: SIGTERM #stop_grace_period: 5m # 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 = { secrets = { "docker/minecraft".owner = "docker-service"; }; }; }