{ config, lib, pkgs, ... }: let survivalPort = 25565; creativePort = 25566; users = { clay53_clayton = "bc2653cd-6cb1-4d15-9d24-cce0d1e8811c"; fire_chase = "c2b1a7ff-abff-41cb-af2a-4a89e942d288"; piggywhipster = "6b4419bf-2a5f-4932-b779-33dcdbbf4c06"; }; defaultWhitelist = { inherit (users) clay53_clayton fire_chase piggywhipster ; }; defaultOperators = { inherit (users) clay53_clayton fire_chase; }; minRam = "512M"; maxRam = "1G"; in { config = lib.mkMerge [ (lib.mkIf (config.networking.hostName == "nixnas") { services.minecraft-servers = { enable = true; eula = true; openFirewall = false; dataDir = "/Block/minecraft-servers"; }; services.minecraft-servers.servers.survival = { enable = true; autoStart = true; restart = "always"; enableReload = false; whitelist = defaultWhitelist; operators = defaultOperators; serverProperties = { server-port = survivalPort; difficulty = 3; gamemode = 0; motd = "Clayton Hickey's Survival"; white-list = true; }; package = pkgs.minecraftServers.vanilla-1_21_11; jvmOpts = "-Xms${minRam} -Xmx${maxRam}"; }; services.minecraft-servers.servers.creative = { enable = true; autoStart = true; restart = "always"; enableReload = false; whitelist = defaultWhitelist; operators = defaultOperators; serverProperties = { server-port = creativePort; difficulty = 3; gamemode = 1; motd = "Clayton Hickey's Creative"; white-list = true; }; package = pkgs.minecraftServers.vanilla-1_21_11; jvmOpts = "-Xms${minRam} -Xmx${maxRam}"; }; networking.firewall.interfaces.${config.cos.wireguard.interface}.allowedTCPPorts = [ survivalPort creativePort ]; }) ]; }