Files
nix-dotfiles/systems/palatine-hill/docker/minecraft.nix

130 lines
3.5 KiB
Nix
Raw Normal View History

{ 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";
2025-10-28 14:45:57 -04:00
meits = "meits.alicehuston.xyz";
# bcg-plus = "bcg.alicehuston.xyz";
2026-01-16 12:25:01 -05:00
pii = "pii.alicehuston.xyz";
};
defaultServer = "rlcraft";
2026-01-16 12:25:01 -05:00
defaultEnv = {
EULA = "true";
TYPE = "AUTO_CURSEFORGE";
STOP_SERVER_ANNOUNCE_DELAY = "120";
STOP_DURATION = "600";
SYNC_CHUNK_WRITES = "false";
USE_AIKAR_FLAGS = "true";
2026-01-16 12:51:38 -05:00
MEMORY = "12GB";
2026-01-16 12:25:01 -05:00
ALLOW_FLIGHT = "true";
MAX_TICK_TIME = "-1";
2026-01-16 12:51:38 -05:00
ENABLE_RCON = "true";
TZ = "America/New_York";
REGION_FILE_COMPRESSION = "none";
OPS = ''
magpiecat
chesiregirl1105
'';
2026-01-16 12:25:01 -05:00
};
2026-01-16 12:25:01 -05:00
defaultOptions = [
"--stop-signal=SIGTERM"
"--stop-timeout=1800"
"--network=minecraft-net"
];
2026-01-16 12:25:01 -05:00
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)
)
];
};
2026-01-16 12:25:01 -05:00
#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";
TYPE = "modrinth";
MODRINTH_MODPACK = "prominence-2-fabric";
MODRINTH_VERSION = "3.9.14hf";
USE_AIKAR_FLAGS = "false";
USE_MEOWICE_FLAGS = "true";
2026-01-16 12:51:38 -05:00
USE_MEOWICE_GRAALVM_FLAGS = "true";
2026-01-16 12:25:01 -05:00
DIFFICULTY = "hard";
ENABLE_COMMAND_BLOCK = "true";
};
extraOptions = defaultOptions;
log-driver = "local";
};
2026-01-16 12:51:38 -05:00
#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 = {
defaultSopsFile = ../secrets.yaml;
secrets = {
"docker/minecraft".owner = "docker-service";
};
};
}