mirror of
https://codeberg.org/polyteknisk-radiogruppe/the_prg_server_configuration.git
synced 2026-10-21 03:15:46 +02:00
Compare commits
No commits in common. "4d35e3ab65761b8aca2d77257e760017090b696c" and "17be3bdb66869a826da145b35d0c89517386124d" have entirely different histories.
4d35e3ab65
...
17be3bdb66
2 changed files with 146 additions and 36 deletions
|
|
@ -7,6 +7,10 @@
|
||||||
choose = paths: builtins.head (builtins.filter (p: builtins.pathExists p) paths);
|
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 and Cloudflare DDNS records configured here. Update this list to add/remove records.
|
||||||
domain = "prg-radio.org";
|
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 {
|
in {
|
||||||
options.local = {
|
options.local = {
|
||||||
hostname = lib.mkOption {
|
hostname = lib.mkOption {
|
||||||
|
|
@ -66,6 +70,130 @@ in {
|
||||||
eula = true;
|
eula = true;
|
||||||
openFirewall = 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 = {
|
servers.fabric-modded = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autoStart = true;
|
autoStart = true;
|
||||||
|
|
@ -381,6 +509,24 @@ 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.
|
# The nix-minecraft module creates the `minecraft` user/group automatically.
|
||||||
users.users.minecraftprg.extraGroups = ["minecraft"];
|
users.users.minecraftprg.extraGroups = ["minecraft"];
|
||||||
|
|
||||||
|
|
@ -388,37 +534,8 @@ in {
|
||||||
postgresql_jdbc
|
postgresql_jdbc
|
||||||
git
|
git
|
||||||
git-lfs
|
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";
|
|
||||||
Environment = "PATH=${pkgs.coreutils}/bin:${pkgs.bash}/bin:/run/wrappers/bin:${pkgs.openjdk21}/bin";
|
|
||||||
WorkingDirectory = "/srv/minecraft/atm10tss";
|
|
||||||
ExecStart = "${pkgs.bash}/bin/bash /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";
|
system.stateVersion = "25.11";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -600,13 +600,6 @@ in {
|
||||||
service = "minecraft";
|
service = "minecraft";
|
||||||
entryPoints = ["minecraft"];
|
entryPoints = ["minecraft"];
|
||||||
};
|
};
|
||||||
# TCP router for Minecraft Modded (plain TCP on 25566)
|
|
||||||
minecraft_modded = {
|
|
||||||
# Use catch-all SNI rule because Minecraft clients don't use TLS/SNI
|
|
||||||
rule = "HostSNI(`*`)";
|
|
||||||
service = "minecraft_modded";
|
|
||||||
entryPoints = ["minecraft_modded"];
|
|
||||||
};
|
|
||||||
|
|
||||||
# TCP router for Minecraft Bedrock (19132)
|
# TCP router for Minecraft Bedrock (19132)
|
||||||
minecraft-bedrock-tcp = {
|
minecraft-bedrock-tcp = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue