{ lib, ... }: let serv = import ../config/services.nix; gtnh = serv.gtnh; minecraftUid = 2000; minecraftGid = 2000; gtnhEnvironment = { EULA = "TRUE"; TYPE = "FORGE"; VERSION = gtnh.version; GENERIC_PACK = gtnh.serverPackUrl; LOAD_ENV_FROM_GENERIC_PACK = "true"; REMOVE_OLD_MODS = "TRUE"; MEMORY = gtnh.memory; USE_AIKAR_FLAGS = "true"; TZ = gtnh.timezone; UID = toString minecraftUid; GID = toString minecraftGid; }; in { virtualisation.docker.enable = true; users.groups.minecraft.gid = minecraftGid; users.users.minecraft = { isSystemUser = true; group = "minecraft"; home = "/var/lib/minecraft"; createHome = true; uid = minecraftUid; }; networking.firewall.allowedTCPPorts = [ gtnh.port ]; virtualisation.oci-containers.containers.gtnh = { image = "itzg/minecraft-server:java21"; autoStart = true; ports = [ "${toString gtnh.port}:${toString gtnh.port}" ]; volumes = [ "/var/lib/minecraft:/data" ]; environment = gtnhEnvironment; }; }