Compare commits

...

5 commits

2 changed files with 109 additions and 33 deletions

View file

@ -75,7 +75,7 @@
modules = [ modules = [
# Apply the overlay first so pkgs in later modules (like our local # Apply the overlay first so pkgs in later modules (like our local
# `minecraft.nix`) see the extra helpers provided by the overlay # `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 nix-minecraft.nixosModules.minecraft-servers

View file

@ -10,7 +10,7 @@
# Try to use the nix-minecraft helper if the overlay is present; otherwise # 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 # fall back to a local path. If you use the fallback, ensure the path is an
# unpacked modpack directory with `mods` and `config` subdirectories. # unpacked modpack directory with `mods` and `config` subdirectories.
modpack = /srv/minecraft/modpacks/AllTheMods10-prg.mrpack; modpack = /srv/minecraft/modpacks/atm10;
in { in {
options.local = { options.local = {
hostname = lib.mkOption { hostname = lib.mkOption {
@ -70,7 +70,7 @@ in {
eula = true; eula = true;
openFirewall = true; openFirewall = true;
servers.all-the-mods-ten-tss = { servers.all-the-mods-tss = {
enable = true; enable = true;
autoStart = true; autoStart = true;
restart = "always"; restart = "always";
@ -78,8 +78,26 @@ in {
package = pkgs.neoforgeServers.neoforge-1_21_1-21_1_224; package = pkgs.neoforgeServers.neoforge-1_21_1-21_1_224;
jvmOpts = lib.concatStringsSep " " [ jvmOpts = lib.concatStringsSep " " [
"-Xms18G" "-Xms4G"
"-Xmx45G" "-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 = { serverProperties = {
@ -97,7 +115,57 @@ in {
enable-command-block = false; enable-command-block = false;
enable-rcon = false; enable-rcon = false;
require-resource-pack = false; require-resource-pack = false;
level-type = "minecraft:amplified";
level-seed = "-2032795982907864146"; 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. # Grant operator privileges to the user with the given UUID.
@ -110,34 +178,20 @@ in {
}; };
}; };
#symlinks = { symlinks = {
# "mods" = "${modpack}/overrides/mods"; "mods" = "${modpack}/mods";
# "moddata" = "${modpack}/overrides/moddata"; "datapacks" = "${modpack}/datapacks";
# "resourcepacks" = "${modpack}/overrides/resourcepacks"; "user_jvm_args.txt" = "${modpack}/user_jvm_args.txt";
# "shaderpacks" = "${modpack}/overrides/shaderpacks"; };
# "dynamic-resource-pack-cache" = "${modpack}/overrides/dynamic-resource-pack-cache"; files = {
# "dynamic-data-pack-cache" = "${modpack}/overrides/dynamic-data-pack-cache"; "config" = "${modpack}/config";
#}; "patchouli_books" = "${modpack}/patchouli_books";
#files = { "defaultconfigs" = "${modpack}/defaultconfigs";
# "backup" = "${modpack}/overrides/backup"; "kubejs" = "${modpack}/kubejs";
# "blueprints" = "${modpack}/overrides/blueprints"; "local" = "${modpack}/local";
# "command_history.txt" = "${modpack}/overrides/command_history.txt"; ".mixin.out" = "${modpack}/.mixin.out";
# "config" = "${modpack}/overrides/config"; "dynamic-data-pack-cache" = "${modpack}/dynamic-data-pack-cache";
# "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";
#};
}; };
servers.fabric-modded = { 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 = { systemd.services."minecraft-server-fabric-modded".environment = {
JAVA_HOME = lib.mkForce "${pkgs.openjdk21}";
PATH = lib.mkForce ( PATH = lib.mkForce (
lib.makeBinPath [ 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
pkgs.git-lfs pkgs.git-lfs
pkgs.coreutils pkgs.coreutils