From 237f538fd4e204a5e796539f8ad025873d803220 Mon Sep 17 00:00:00 2001 From: Christine Elisabeth Koppel Date: Thu, 9 Apr 2026 01:46:16 +0300 Subject: [PATCH] Update Minecraft server configuration with new JVM options and properties --- .../modules/system/minecraft.nix | 100 +++++++++++++++++- 1 file changed, 98 insertions(+), 2 deletions(-) diff --git a/nix-system-configs/modules/system/minecraft.nix b/nix-system-configs/modules/system/minecraft.nix index 78ad93d..965784d 100644 --- a/nix-system-configs/modules/system/minecraft.nix +++ b/nix-system-configs/modules/system/minecraft.nix @@ -78,8 +78,26 @@ in { package = pkgs.neoforgeServers.neoforge-1_21_1-21_1_224; jvmOpts = lib.concatStringsSep " " [ - "-Xms18G" + "-Xms4G" "-Xmx45G" + "-XX:+UseG1GC + -XX:+ParallelRefProcEnabled + -XX:MaxGCPauseMillis=200 + -XX:+UnlockExperimentalVMOptions + -XX:+DisableExplicitGC + -XX:+AlwaysPreTouch + -XX:G1NewSizePercent=30 + -XX:G1MaxNewSizePercent=40 + -XX:G1HeapRegionSize=8M + -XX:G1ReservePercent=20 + -XX:G1HeapWastePercent=5 + -XX:G1MixedGCCountTarget=4 + -XX:InitiatingHeapOccupancyPercent=15 + -XX:G1MixedGCLiveThresholdPercent=90 + -XX:G1RSetUpdatingPauseTimePercent=5 + -XX:SurvivorRatio=32 + -XX:+PerfDisableSharedMem + -XX:MaxTenuringThreshold=1" ]; serverProperties = { @@ -97,7 +115,58 @@ in { enable-command-block = false; enable-rcon = false; require-resource-pack = false; + level-type = "minecraft:amplified"; level-seed = "-2032795982907864146"; + + # Added properties (do not overwrite existing ones above) + accepts-transfers = false; + allow-flight = true; + allow-nether = true; + broadcast-console-to-ops = true; + broadcast-rcon-to-ops = true; + bug-report-link = ""; + enable-jmx-monitoring = false; + enable-query = false; + enable-status = true; + enforce-whitelist = false; + entity-broadcast-range-percentage = 100; + force-gamemode = false; + function-permission-level = 2; + generate-structures = true; + generator-settings = {}; + hardcore = false; + hide-online-players = false; + initial-disabled-packs = ""; + initial-enabled-packs = "vanilla"; + level-name = "world"; + log-ips = true; + max-chained-neighbor-updates = 1000000; + max-tick-time = 180000; + max-world-size = 29999984; + network-compression-threshold = 256; + op-permission-level = 4; + player-idle-timeout = 0; + prevent-proxy-connections = false; + pvp = true; + # dotted keys must be quoted + "query.port" = 25566; + rate-limit = 0; + "rcon.password" = ""; + "rcon.port" = 25575; + region-file-compression = "deflate"; + resource-pack = ""; + resource-pack-id = ""; + resource-pack-prompt = ""; + resource-pack-sha1 = ""; + server-ip = ""; + spawn-animals = true; + spawn-monsters = true; + spawn-npcs = true; + sync-chunk-writes = true; + text-filtering-config = ""; + use-native-transport = true; + # white-list, view-distance, simulation-distance, spawn-protection, etc. + # were kept above to avoid overwriting existing values. }; # Grant operator privileges to the user with the given UUID. @@ -113,12 +182,17 @@ in { symlinks = { "mods" = "${modpack}/mods"; "datapacks" = "${modpack}/datapacks"; + "user_jvm_args.txt" = "${modpack}/user_jvm_args.txt"; }; files = { "config" = "${modpack}/config"; + "patchouli_books" = "${modpack}/patchouli_books"; "defaultconfigs" = "${modpack}/defaultconfigs"; "kubejs" = "${modpack}/kubejs"; "local" = "${modpack}/local"; + ".mixin.out" = "${modpack}/.mixin.out"; + "patchouli_books" = "${modpack}/patchouli_books"; + "dynamic-data-pack-cache" = "${modpack}/dynamic-data-pack-cache"; }; }; @@ -417,10 +491,32 @@ in { }; }; - # For FastBackup force etc to have PATH + # For FastBackup and to force OpenJDK 21 for the Minecraft services, + # set JAVA_HOME and include the OpenJDK bin in the service environment. + # Add matching environment for both server units created by nix-minecraft. systemd.services."minecraft-server-fabric-modded".environment = { + JAVA_HOME = lib.mkForce "${pkgs.openjdk21}"; PATH = lib.mkForce ( lib.makeBinPath [ + pkgs.openjdk21 + pkgs.git + pkgs.git-lfs + pkgs.coreutils + pkgs.findutils + pkgs.gnugrep + pkgs.gnused + pkgs.systemd + ] + + ":/run/current-system/sw/bin" + ); + }; + + # Ensure the other server unit also uses OpenJDK 21 + systemd.services."minecraft-server-all-the-mods-tss".environment = { + JAVA_HOME = lib.mkForce "${pkgs.openjdk21}"; + PATH = lib.mkForce ( + lib.makeBinPath [ + pkgs.openjdk21 pkgs.git pkgs.git-lfs pkgs.coreutils