Refactor ATM10 Minecraft server configuration by making it systemd instead, because of script bakedness.

This commit is contained in:
Root User 2026-04-09 18:21:26 +03:00
parent 17be3bdb66
commit 244a3f9826
Signed by: root
GPG key ID: 087F0A95E5766D72

View file

@ -7,10 +7,6 @@
choose = paths: builtins.head (builtins.filter (p: builtins.pathExists p) paths);
# Domain and Cloudflare DDNS records configured here. Update this list to add/remove records.
domain = "prg-radio.org";
# 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/atm10;
in {
options.local = {
hostname = lib.mkOption {
@ -70,130 +66,6 @@ in {
eula = true;
openFirewall = true;
servers.all-the-mods-tss = {
enable = true;
autoStart = true;
restart = "always";
package = pkgs.neoforgeServers.neoforge-1_21_1-21_1_224;
jvmOpts = lib.concatStringsSep " " [
"-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 = {
server-port = 25566;
motd = "The Sub Server All the Mods 10";
difficulty = "hard";
gamemode = "survival";
max-players = 64;
online-mode = true;
white-list = false;
spawn-protection = 0;
view-distance = 9;
simulation-distance = 3;
enforce-secure-profile = false;
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.
# Update `name` to the player's Minecraft username if you know it.
operators = {
username1 = {
uuid = "5e52c4ba-9b1a-469b-8f68-b9d684eae31d";
level = 4; # 4 = highest permission (operator)
bypassesPlayerLimit = true;
};
};
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 = {
enable = true;
autoStart = true;
@ -509,24 +381,6 @@ in {
);
};
# 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
pkgs.findutils
pkgs.gnugrep
pkgs.gnused
pkgs.systemd
]
+ ":/run/current-system/sw/bin"
);
};
# The nix-minecraft module creates the `minecraft` user/group automatically.
users.users.minecraftprg.extraGroups = ["minecraft"];
@ -534,8 +388,36 @@ in {
postgresql_jdbc
git
git-lfs
openjdk21
];
systemd.services.minecraft-atm10 = {
description = "All the Mods 10 Minecraft Server";
after = ["network.target"];
wantedBy = ["multi-user.target"];
serviceConfig = {
Type = "simple";
User = "minecraft";
Group = "minecraft";
WorkingDirectory = "/srv/minecraft/atm10tss";
ExecStart = "/srv/minecraft/atm10tss/run.sh";
Restart = "on-failure";
RestartSec = "10s";
StandardOutput = "journal";
StandardError = "journal";
};
};
# Optionally, ensure the user exists:
users.users.minecraft = {
isSystemUser = true;
home = "/srv/minecraft";
group = "minecraft";
};
users.groups.minecraft = {};
system.stateVersion = "25.11";
};
}