diff --git a/flake.nix b/flake.nix index a7d1c5d..1ee1ae0 100644 --- a/flake.nix +++ b/flake.nix @@ -75,7 +75,7 @@ modules = [ # Apply the overlay first so pkgs in later modules (like our local # `minecraft.nix`) see the extra helpers provided by the overlay - { nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; } + {nixpkgs.overlays = [inputs.nix-minecraft.overlay];} nix-minecraft.nixosModules.minecraft-servers diff --git a/nix-system-configs/modules/system/minecraft.nix b/nix-system-configs/modules/system/minecraft.nix index 743bded..c120017 100644 --- a/nix-system-configs/modules/system/minecraft.nix +++ b/nix-system-configs/modules/system/minecraft.nix @@ -10,7 +10,7 @@ # Try to use the nix-minecraft helper if the overlay is present; otherwise # fall back to a local path. If you use the fallback, ensure the path is an # unpacked modpack directory with `mods` and `config` subdirectories. - modpack = /srv/minecraft/modpacks/AllTheMods10-prg.mrpack; + modpack = /srv/minecraft/modpacks/atm10; in { options.local = { hostname = lib.mkOption { @@ -70,7 +70,7 @@ in { eula = true; openFirewall = true; - servers.all-the-mods-ten-tss = { + servers.all-the-mods-tss = { enable = true; autoStart = true; restart = "always"; @@ -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,57 @@ 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; + 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. @@ -110,34 +178,20 @@ in { }; }; - #symlinks = { - # "mods" = "${modpack}/overrides/mods"; - # "moddata" = "${modpack}/overrides/moddata"; - # "resourcepacks" = "${modpack}/overrides/resourcepacks"; - # "shaderpacks" = "${modpack}/overrides/shaderpacks"; - # "dynamic-resource-pack-cache" = "${modpack}/overrides/dynamic-resource-pack-cache"; - # "dynamic-data-pack-cache" = "${modpack}/overrides/dynamic-data-pack-cache"; - #}; - #files = { - # "backup" = "${modpack}/overrides/backup"; - # "blueprints" = "${modpack}/overrides/blueprints"; - # "command_history.txt" = "${modpack}/overrides/command_history.txt"; - # "config" = "${modpack}/overrides/config"; - # "datapacks" = "${modpack}/overrides/datapacks"; - # "downloads" = "${modpack}/overrides/downloads"; - # "ESM" = "${modpack}/overrides/ESM"; - # "eula.txt" = "${modpack}/overrides/eula.txt"; - # "fancymenu_data" = "${modpack}/overrides/fancymenu_data"; - # "journeymap" = "${modpack}/overrides/journeymap"; - # "kubejs" = "${modpack}/overrides/kubejs"; - # "manifest.json" = "${modpack}/overrides/manifest.json"; - # "minecraftinstance.json" = "${modpack}/overrides/minecraftinstance.json"; - # "observable_announce" = "${modpack}/overrides/observable_announce"; - # "options.txt" = "${modpack}/overrides/options.txt"; - # "patchouli_books" = "${modpack}/overrides/patchouli_books"; - # "patchouli_data.json" = "${modpack}/overrides/patchouli_data.json"; - # "schematics" = "${modpack}/overrides/schematics"; - #}; + 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"; + "dynamic-data-pack-cache" = "${modpack}/dynamic-data-pack-cache"; + }; }; servers.fabric-modded = { @@ -435,10 +489,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