diff --git a/hosts/hyrule/default.nix b/hosts/hyrule/default.nix index e68d0d3..64d69d7 100755 --- a/hosts/hyrule/default.nix +++ b/hosts/hyrule/default.nix @@ -73,6 +73,7 @@ in { # 3306 (INTERNAL) forgejo sqlite3 database 5000 # debug (for my job) # 8222 (INTERNAL) vaultwarden + 45000 # minecaft server ]; }; }; diff --git a/hosts/hyrule/minecraft-server.nix b/hosts/hyrule/minecraft-server.nix new file mode 100644 index 0000000..24917cb --- /dev/null +++ b/hosts/hyrule/minecraft-server.nix @@ -0,0 +1,59 @@ +{pkgs, ...}: { + services.minecraft-server = { + enable = true; + eula = true; + + openFirewall = false; # do this manually instead + declarative = true; + + 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"; + }; +}