rewrite minecraft profile
This commit is contained in:
parent
92e25958e5
commit
f0859a15b4
@ -1,25 +1,15 @@
|
||||
{ config, pkgs, lib, inputs, ... }:
|
||||
let
|
||||
jre21 = pkgs.temurin-bin;
|
||||
jre17 = pkgs.temurin-bin-17;
|
||||
jvmOpts = lib.concatStringsSep " " [
|
||||
"-XX:+UseG1GC"
|
||||
"-XX:+ParallelRefProcEnabled"
|
||||
"-XX:MaxGCPauseMillis=200"
|
||||
"-XX:+UnlockExperimentalVMOptions"
|
||||
"-XX:+DisableExplicitGC"
|
||||
"-XX:+UseZGC"
|
||||
"-XX:+ZGenerational"
|
||||
"-XX:-ZUncommit"
|
||||
"-XX:-ZProactive"
|
||||
"-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"
|
||||
"-XX:+UseTransparentHugePages"
|
||||
];
|
||||
|
||||
rsyncSSHKeys = config.users.users.${config.mainuser}.openssh.authorizedKeys.keys;
|
||||
@ -32,8 +22,14 @@ let
|
||||
online-mode = false;
|
||||
spawn-protection = 0;
|
||||
};
|
||||
in {
|
||||
imports = [ inputs.mms.module ];
|
||||
|
||||
instances = config.services.modded-minecraft-servers.instances;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.mms.module
|
||||
inputs.ataraxiasjel-nur.nixosModules.rustic
|
||||
];
|
||||
services.modded-minecraft-servers = {
|
||||
eula = true;
|
||||
instances = {
|
||||
@ -44,52 +40,123 @@ in {
|
||||
jvmInitialAllocation = "6144m";
|
||||
jvmPackage = jre17;
|
||||
serverConfig = defaults // {
|
||||
server-port = 25565;
|
||||
rcon-port = 25566;
|
||||
server-port = 25567;
|
||||
rcon-port = 25568;
|
||||
motd = "StaTech";
|
||||
max-world-size = 50000;
|
||||
level-seed = "-4411466874705470064";
|
||||
};
|
||||
};
|
||||
all-of-create = {
|
||||
enable = true;
|
||||
inherit rsyncSSHKeys jvmOpts;
|
||||
jvmMaxAllocation = "4096m";
|
||||
jvmInitialAllocation = "4096m";
|
||||
jvmPackage = jre21;
|
||||
serverConfig = defaults // {
|
||||
server-port = 25565;
|
||||
rcon-port = 25566;
|
||||
motd = "All of Create";
|
||||
max-world-size = 50000;
|
||||
level-seed = "-6893059259197159072";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
persist.state.directories = [ "/var/lib/mc-statech" ];
|
||||
persist.state.directories = map (x: "/var/lib/mc-${x}") (lib.attrNames instances);
|
||||
|
||||
# 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"
|
||||
# ];
|
||||
# };
|
||||
# Rustic backup for all servers, including disabled ones
|
||||
sops.secrets.rustic-workstation-pass.sopsFile = inputs.self.secretsDir + /rustic.yaml;
|
||||
sops.secrets.rustic-minecraft-s3-env.sopsFile = inputs.self.secretsDir + /rustic.yaml;
|
||||
services.rustic.backups = rec {
|
||||
workstation-minecraft-backup = {
|
||||
backup = true;
|
||||
prune = false;
|
||||
initialize = false;
|
||||
environmentFile = config.sops.secrets.rustic-minecraft-s3-env.path;
|
||||
pruneOpts = [ "--repack-cacheable-only=false" ];
|
||||
timerConfig = {
|
||||
OnCalendar = "*:0/15";
|
||||
};
|
||||
backupPrepareCommand = ''
|
||||
start_backup=false
|
||||
${lib.strings.concatLines (
|
||||
map (x: "systemctl is-active --quiet mc-${x}.service && start_backup=true") (
|
||||
lib.attrNames instances
|
||||
)
|
||||
)}
|
||||
if [ "$start_backup" = false ]; then
|
||||
echo "No Minecraft servers are running. Skip backup."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
${lib.strings.concatLines (
|
||||
map (x: ''
|
||||
if systemctl is-active --quiet mc-${x}.service; then
|
||||
export MCRCON_PORT=${toString instances.${x}.serverConfig.rcon-port}
|
||||
export MCRCON_PASS=${instances.${x}.serverConfig.rcon-password}
|
||||
${pkgs.mcrcon}/bin/mcrcon "say Rustic backup is started!" save-off "save-all"
|
||||
fi
|
||||
'') (lib.attrNames instances)
|
||||
)}
|
||||
sleep 3
|
||||
'';
|
||||
backupCleanupCommand = ''
|
||||
${lib.strings.concatLines (
|
||||
map (x: ''
|
||||
if systemctl is-active --quiet mc-${x}.service; then
|
||||
export MCRCON_PORT=${toString instances.${x}.serverConfig.rcon-port}
|
||||
export MCRCON_PASS=${instances.${x}.serverConfig.rcon-password}
|
||||
${pkgs.mcrcon}/bin/mcrcon "say Rustic backup is done!" save-on
|
||||
fi
|
||||
'') (lib.attrNames instances)
|
||||
)}
|
||||
'';
|
||||
settings = let
|
||||
label = "workstation-minecraft";
|
||||
in {
|
||||
repository = {
|
||||
repository = "opendal:s3";
|
||||
password-file = config.sops.secrets.rustic-workstation-pass.path;
|
||||
options = {
|
||||
root = label;
|
||||
bucket = "rustic-backups";
|
||||
region = "us-east-1";
|
||||
endpoint = "https://s3.ataraxiadev.com";
|
||||
};
|
||||
};
|
||||
backup = {
|
||||
host = config.device;
|
||||
label = label;
|
||||
ignore-devid = true;
|
||||
group-by = "label";
|
||||
skip-identical-parent = true;
|
||||
glob = [ "!/var/lib/**/backups" ];
|
||||
sources = [{
|
||||
source = lib.strings.concatStringsSep " " (map (x: "/var/lib/mc-${x}") (lib.attrNames instances));
|
||||
}];
|
||||
};
|
||||
forget = {
|
||||
filter-label = [ label ];
|
||||
group-by = "label";
|
||||
prune = true;
|
||||
keep-hourly = 6;
|
||||
keep-daily = 2;
|
||||
keep-weekly = 1;
|
||||
keep-monthly = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
workstation-minecraft-prune = workstation-minecraft-backup // {
|
||||
backup = false;
|
||||
prune = true;
|
||||
createWrapper = false;
|
||||
backupPrepareCommand = null;
|
||||
backupCleanupCommand = null;
|
||||
timerConfig = {
|
||||
OnCalendar = "hourly";
|
||||
Persistent = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -1,8 +1,10 @@
|
||||
rustic-backups-s3-env: ENC[AES256_GCM,data:XTUTtAmjBiy5mdlwT53Z9IDycs0s069182Emd0M6TSpPScqce3kxoN+hH8vgaOLU0b1jF3d9pkO0PpwfnUr2IkMpTd7ZKHeqHbYzS4gpKFnkQMhDexHLFBrQIfBrTbCGzspl83q5ksU9ENuY+sdkKXBhn99ja2mAFdfOVyNRttVNwKuv5/e8Bh0ySyTkogOgLyttLWo+pqKuvBP96BvSLOiGqfYBMgZU6uncg4YbdmOWPnvnTRPWHwIAyyXOSv56Sw36XfBkCBhZk2fmDRVJyRkuFthkhb6b2LkxhWFofilJupGTaQUHuZ3Efq9+eS5n1zOnudL7Gp7MmaQ4Hz3tQnzML16pJW1UcyT11uvWl8Zz5h+VlwJAfM7VNVaOs2FjEEy5imcUWurhIgRcrKHYc3mKNk5XYuvCI93aX9/LKEyeGQ==,iv:sPwKIYu/RyZQHYmz7aSYFhmx2ZqlH+RHRbdkOHGCa1s=,tag:eD5vRFkwEw4i97UQyRk6Hw==,type:str]
|
||||
rustic-postgresql-s3-env: ENC[AES256_GCM,data:m0G4G+i3fJo34rUGnQ0HOsA1GlOpLnJXDJltXFM5URUFaK1Jh5pGnOsYAiU2410enKafdf5eneW31j9r2GWmEFOoX89+yLmQxe22YnfLcFfaBdskVeaz/6HY2FK5euwdy70ZPNb05uYaS1QXPABJCS8p2APjx9bcz4MPSGgN6Ed/h7NdEU1FXgEfQZj9cysoVN9Qf3zYP4oqTBFVq11bV1yj0dsBMxHmY92aAdwUJWqjk4w2vi90zYxWNYk5PzNCh7qURtfmfNTHfEy55umbDayWjxZAsNgGOtxUsArUNSIU12GeBx7VCxepbNbDiej9fNnNqYvYnRspscag5w0oHSPa8a/qPY+R/imKqLU15xCG2EfnBm310zPyI9o/lgiU9Ua8z4cfuU5FcKr7ICIr5OdupiWy6aC1KYhkBZVViXEz3A==,iv:Hu9Bbynj5D9k2Rj0NWYZuuHQzcrauGyMmPex+T+VKIg=,tag:IAXAGK//SW890ZBKkUr8gw==,type:str]
|
||||
rustic-minecraft-s3-env: ENC[AES256_GCM,data:04sIa/w5exYkgUrAiaBuPJ8JaP8pNmAgbbToO54v1jHPCBmcuSLw1ncUi/jqUtJBTvj+8WRYUxe0a0ssPid28N8229yv1IbhDxvoosJj43SEnmbRtgegHLnrtLdd1y6cL6tDj/e2qFgC1LQvnPmkKe9YThyGAc4=,iv:WE1XNQTZGKhw7yN4THL4/gA1CD9oSmJ0TtCtxOcOQbE=,tag:7rHN2i7GGawhHY9ZcjuqIg==,type:str]
|
||||
rustic-nas-pass: ENC[AES256_GCM,data:uDiQQRxlpBfbwihXDR32aGjP41iZ,iv:qx6FJEllahkP9BPYFFfv9LHnnVTOl6B7Jv9OSfNkPok=,tag:MBUT77ccG/acr/U/X2zrCA==,type:str]
|
||||
rustic-vps-pass: ENC[AES256_GCM,data:LMdVK6j/TV9JLAxwWUtIfF//nf6r,iv:PjOYcNeLjlRx6uoZo+jr0oA9N60NJNNPloc9fc44raw=,tag:AjOzsfVIhDCb5a5D3yIdUA==,type:str]
|
||||
rustic-postgresql-pass: ENC[AES256_GCM,data:oUHakvIPSwkNy1lkQ4k14+CWIofO,iv:v3EFeZCkFyeY/ADK8vqYvAD0XDmnQFIq6XGd9B8jvXY=,tag:6+kGWMq+9iVLSf5p/TIp8g==,type:str]
|
||||
rustic-workstation-pass: ENC[AES256_GCM,data:dVuq75mlHStFO+k97yV0kUUqFtjF,iv:p2ApGtzHO9XUQJnnSyIMs1Cr6ODIt6RnBf2SXNrRbTk=,tag:b8WRap8QUtQrsYXVYdeRUw==,type:str]
|
||||
rustic-minio-secret-key: ENC[AES256_GCM,data:Jkn0mHcLFWS/euPCYtEF3hXN4Jx8PHZHA3RtZiMshuZdZTv0Y+tHteZB2i27Ka+u,iv:R2FEEhe+EoqFDQYbLJ3hrb+ENVvsP2c++WA0z3QQrxA=,tag:bifjyNyNouUhFGV6SpAg7Q==,type:str]
|
||||
rclone-s3-sync: ENC[AES256_GCM,data:oBDntYhuThzmImRgpBSsgqDwXs4+wJxAOZKH3vlKfH+9CXYNI1ks92t8Ywr/wltikvXiVbKuztY7Iuqe4Mkl0K9onYYcmrMDqyuLXRV/WPXNaAwyOyFUS17dxcqoyG51T0zzb1l4LH+GTrLw7m7RD7y7XFU/uidAUuBnQHAQpu8xRI/5PLcSaae+KfmoJGpZBX4BawXMHzRKKo462Muw/1FbBQpC0ERvTd34oSke32+Ni3MNdg/nOVyczYIQ+TPNhtgiSNXFJFPaXWMrIh29jhyJv7M2k4nYzNzb3A2miGCxWRDNy7bxZTDeVLgJUZT3KJNyb8BGLhu2v54WSbm01I1pP+//xYSZI0JER4fCZpdGodr2TV6u7YOyVxa1pZ7C7O9T/dd2O9NbgQY1Azc9MhiIXZnT58j72SNvhDNtCloM50R0LYmagCj2alP3Z4W7L+BdtaU58hWFCM2P8EIYbPkz8wK4/i1XARvZU9i+cRWZCoKi+yi0cV2yKOYlFEW0RmO9G3rC6a31YITwfpHhQw9IFuZXwdwZdf4OIuw12BIXfeUQJWqIl4QRSnOSzCggSZngwhoq/r46Oh2Jn9xXuVO6Hlod8pGyxKovO9bGQl3ioIU/KAhKp88k/BDS7YM4HhAEPNjvsSZgRGf21G7Z4ypi6a2grMTGgIKbOA3KEe2CKrSEVq7JRF5m1uAPJ2zrgbBrSwI0qkhGfn+SERMVtyzkIvTQkEQJ/g==,iv:jWhHLIccl1Pgr55xEMd2ED8FS3pvRjnuugMJ0sHnuW4=,tag:upgyBz2AA2zhidFIkcVrpw==,type:str]
|
||||
sops:
|
||||
@ -11,8 +13,8 @@ sops:
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age: []
|
||||
lastmodified: "2024-02-13T18:54:38Z"
|
||||
mac: ENC[AES256_GCM,data:dfaHOR6j9haR9MofGrfeHpIK9+wXbEYG9O2R8258ifncOPrAFHggHUxdgeX5L7wSQ2IUuTw11FzbFiNSAT0sH9nIXwPLtO1N4MJAzC/XE1e5b2ZIBVTmJAAL3wH0dKpLExA1kMGRrLmTcIGUiGTDwgn86wxlUf92bAA/oycb5cQ=,iv:mwtkiGzOJTobMPLxsGtEIzDjmAR+4Forvg5KFFnmpCk=,tag:fR+8skvaHBKnwZ0tXigodw==,type:str]
|
||||
lastmodified: "2024-06-08T15:01:54Z"
|
||||
mac: ENC[AES256_GCM,data:euc66CxC9LHiJYKiMaEWunIZCHd2ZGl1YcFIJWmv2/x1pMRSnQ85yCL5Fpu8crjaayDYGJJVmMBVeU8trmaoqzYE1pWtUSIQo2QligJ1k8T5erdakSwv6keHrxczS1gEkS1Ygl6xieZUY5mcwY1Wyz7ZMeAeiIpIaraSf8Uydu8=,iv:OMGVEmOHnJbFzVpfCtvt3jrw6vP5dCib/HfcKpbSZ7k=,tag:wTtzNCE6BB3S7x2wWNYq1A==,type:str]
|
||||
pgp:
|
||||
- created_at: "2024-02-06T20:12:53Z"
|
||||
enc: |-
|
||||
|
Loading…
x
Reference in New Issue
Block a user