mirror of
https://codeberg.org/polyteknisk-radiogruppe/the_prg_server_configuration.git
synced 2026-06-13 18:28:55 +02:00
Refactor ATM10 Minecraft server configuration by making it systemd instead, because of script bakedness.
This commit is contained in:
parent
17be3bdb66
commit
244a3f9826
1 changed files with 28 additions and 146 deletions
|
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue