{ pkgs, pkgs-unstable, ... }: { services.minecraft-server = { enable = true; package = pkgs-unstable.minecraft-server; # use latest version only! declarative = true; eula = true; openFirewall = false; # do this manually instead whitelist = { "SECRET1" = ""; "SECRET2" = ""; }; # REF: https://minecraft.wiki/w/Server.properties#Java_Edition serverProperties = { # server-ip = "" # listen on all addresses if unset server-port = 45000; # connection port "query.port" = 45000; # share game info/advertising information user-native-transport = true; # Linux packet RX/TX optimizations # Users Connections enforce-secure-profile = true; online-mode = true; # don't allow unlicensed minecraft accounts to join prevent-proxy-connections = false; rate-limit = 0; # Server Functionality enable-status = true; # where the server appears as "online" hide-online-players = false; log-ips = true; pause-when-empty-seconds = 60; # pause server when no player online for x seconds view-distance = 10; # range: 3-32 simulation-distance = 10; # range: 3-32 # Players motd = "M&M's Cozycraft Realm <3"; max-players = 2; white-list = true; idle-player-timeout = 0; # never kick idle players # Gameplay gamemode = "survival"; force-gamemode = true; difficulty = "normal"; hardcore = false; pvp = true; allow-cheats = true; # World level-name = "M&M's Cozycraft"; # world name # level-seed = "" # random seed if unset level-type = "minecraft:normal"; # world generation preset generate-structures = true; spawn-monsters = true; spawn-protection = 0; }; jvmOpts = "-Xms2046M -Xmx2046M -XX:+UseG1GC -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2 -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10"; }; }