cos/minecraft/minecraft-servers.nix
2026-02-08 15:39:12 -05:00

77 lines
2 KiB
Nix

{ 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
];
})
];
}