2023-07-26 21:19:30 +03:00
|
|
|
{ config, pkgs, lib, inputs, ... }:
|
|
|
|
let
|
|
|
|
jre17 = pkgs.temurin-bin-17;
|
|
|
|
jvmOpts = lib.concatStringsSep " " [
|
|
|
|
"-XX:+UseG1GC"
|
|
|
|
"-XX:+ParallelRefProcEnabled"
|
|
|
|
"-XX:MaxGCPauseMillis=200"
|
|
|
|
"-XX:+UnlockExperimentalVMOptions"
|
|
|
|
"-XX:+DisableExplicitGC"
|
|
|
|
"-XX:+AlwaysPreTouch"
|
|
|
|
"-XX:G1NewSizePercent=40"
|
|
|
|
"-XX:G1MaxNewSizePercent=50"
|
|
|
|
"-XX:G1HeapRegionSize=16M"
|
|
|
|
"-XX:G1ReservePercent=15"
|
|
|
|
"-XX:G1HeapWastePercent=5"
|
|
|
|
"-XX:G1MixedGCCountTarget=4"
|
|
|
|
"-XX:InitiatingHeapOccupancyPercent=20"
|
|
|
|
"-XX:G1MixedGCLiveThresholdPercent=90"
|
|
|
|
"-XX:G1RSetUpdatingPauseTimePercent=5"
|
|
|
|
"-XX:SurvivorRatio=32"
|
|
|
|
"-XX:+PerfDisableSharedMem"
|
|
|
|
"-XX:MaxTenuringThreshold=1"
|
|
|
|
];
|
|
|
|
|
|
|
|
rsyncSSHKeys = config.users.users.${config.mainuser}.openssh.authorizedKeys.keys;
|
|
|
|
|
|
|
|
defaults = {
|
|
|
|
allow-flight = true;
|
|
|
|
difficulty = 2;
|
|
|
|
# 5 minutes tick timeout, for heavy packs
|
|
|
|
max-tick-time = 5 * 60 * 1000;
|
|
|
|
online-mode = false;
|
|
|
|
spawn-protection = 0;
|
|
|
|
};
|
|
|
|
in {
|
|
|
|
imports = [ inputs.mms.module ];
|
|
|
|
services.modded-minecraft-servers = {
|
|
|
|
eula = true;
|
|
|
|
instances = {
|
|
|
|
statech = {
|
2023-11-11 03:17:51 +03:00
|
|
|
enable = false;
|
2023-07-26 21:19:30 +03:00
|
|
|
inherit rsyncSSHKeys jvmOpts;
|
|
|
|
jvmMaxAllocation = "6144m";
|
2023-09-16 00:54:08 +03:00
|
|
|
jvmInitialAllocation = "6144m";
|
2023-07-26 21:19:30 +03:00
|
|
|
jvmPackage = jre17;
|
|
|
|
serverConfig = defaults // {
|
|
|
|
server-port = 25565;
|
|
|
|
rcon-port = 25566;
|
|
|
|
motd = "StaTech";
|
|
|
|
max-world-size = 50000;
|
|
|
|
level-seed = "-4411466874705470064";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
persist.state.directories = [ "/var/lib/mc-statech" ];
|
|
|
|
|
2024-01-22 16:45:20 +03:00
|
|
|
# secrets.restic-mc-pass.services = [ "restic-backups-mc-servers.service" ];
|
|
|
|
# secrets.restic-mc-repo.services = [ "restic-backups-mc-servers.service" ];
|
|
|
|
# services.restic.backups.mc-servers = {
|
|
|
|
# initialize = true;
|
|
|
|
# passwordFile = config.secrets.restic-mc-pass.decrypted;
|
|
|
|
# repositoryFile = config.secrets.restic-mc-repo.decrypted;
|
|
|
|
# paths = [ "/var/lib/mc-statech" ];
|
|
|
|
# exclude = [ "/var/lib/mc-statech/backups" ];
|
|
|
|
# environmentFile = "${pkgs.writeText "restic.env" ''
|
|
|
|
# GOMAXPROCS=1
|
|
|
|
# MCRCON_PORT=25566
|
|
|
|
# MCRCON_PASS=whatisloveohbabydonthurtmedonthurtmenomore
|
|
|
|
# ''}";
|
|
|
|
# extraBackupArgs = [ "--no-scan" ];
|
|
|
|
# backupPrepareCommand = ''
|
|
|
|
# if ! systemctl is-active --quiet mc-statech.service; then
|
|
|
|
# echo "Minecraft server is not active. Skipping restic backup."
|
|
|
|
# exit 1
|
|
|
|
# fi
|
|
|
|
# ${pkgs.mcrcon}/bin/mcrcon "say Restic backup is started!" save-off "save-all"
|
|
|
|
# sleep 3
|
|
|
|
# '';
|
|
|
|
# backupCleanupCommand = ''
|
|
|
|
# systemctl is-active --quiet mc-statech.service && ${pkgs.mcrcon}/bin/mcrcon "say Restic backup is done!" save-on
|
|
|
|
# '';
|
|
|
|
# timerConfig = {
|
|
|
|
# OnCalendar = "*:0/15";
|
|
|
|
# };
|
|
|
|
# pruneOpts = [
|
|
|
|
# "--keep-last 12"
|
|
|
|
# "--keep-hourly 12"
|
|
|
|
# "--keep-daily 5"
|
|
|
|
# "--keep-weekly 2"
|
|
|
|
# "--keep-monthly 0"
|
|
|
|
# "--keep-yearly 0"
|
|
|
|
# ];
|
|
|
|
# };
|
2023-07-26 21:19:30 +03:00
|
|
|
}
|