add minecraft server
This commit is contained in:
parent
750a106e0b
commit
41da95615d
225
flake.lock
generated
225
flake.lock
generated
@ -251,11 +251,11 @@
|
||||
"flake-compat_4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"lastModified": 1668681692,
|
||||
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -313,6 +313,22 @@
|
||||
}
|
||||
},
|
||||
"flake-compat_8": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_9": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1668681692,
|
||||
@ -444,6 +460,21 @@
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_5": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
@ -461,7 +492,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_5": {
|
||||
"flake-utils_6": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
@ -479,7 +510,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_6": {
|
||||
"flake-utils_7": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
@ -497,7 +528,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_7": {
|
||||
"flake-utils_8": {
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
@ -512,7 +543,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_8": {
|
||||
"flake-utils_9": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
},
|
||||
@ -701,6 +732,43 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"lowdown-src_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1633514407,
|
||||
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
|
||||
"owner": "kristapsdz",
|
||||
"repo": "lowdown",
|
||||
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "kristapsdz",
|
||||
"repo": "lowdown",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mms": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_4",
|
||||
"flake-utils": "flake-utils_4",
|
||||
"nix": "nix",
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1669478601,
|
||||
"narHash": "sha256-IQcS8IPeXvSoIrQRPgtnLxAs0Pkh8wmglDAtqE4ivNo=",
|
||||
"owner": "mkaito",
|
||||
"repo": "nixos-modded-minecraft-servers",
|
||||
"rev": "68f2066499c035fd81c9dacfea2f512d6b0b62e5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "mkaito",
|
||||
"repo": "nixos-modded-minecraft-servers",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@ -724,29 +792,28 @@
|
||||
},
|
||||
"nix": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_4",
|
||||
"lowdown-src": "lowdown-src",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs-regression": "nixpkgs-regression"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1686829784,
|
||||
"narHash": "sha256-szRWXTvKIeWquR4MM35MMGLbn17/csXrKdVY5YQWZfo=",
|
||||
"owner": "nixos",
|
||||
"lastModified": 1669449054,
|
||||
"narHash": "sha256-aCpXrNpyFH6b1NFYGj2i/HecUvz2vZ88aEyDs1Xj8yM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nix",
|
||||
"rev": "e672d52f7caae591e4d07747a312f2bef538bbea",
|
||||
"rev": "534332c8a03b64161ec795d1deb2ba3d48f27be1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"owner": "NixOS",
|
||||
"repo": "nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-alien": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_5",
|
||||
"flake-utils": "flake-utils_4",
|
||||
"flake-compat": "flake-compat_6",
|
||||
"flake-utils": "flake-utils_5",
|
||||
"nix-index-database": "nix-index-database",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
@ -768,8 +835,8 @@
|
||||
},
|
||||
"nix-direnv": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_5",
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
"flake-utils": "flake-utils_6",
|
||||
"nixpkgs": "nixpkgs_8"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1686544557,
|
||||
@ -808,8 +875,8 @@
|
||||
},
|
||||
"nix-vscode-marketplace": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_6",
|
||||
"flake-utils": "flake-utils_6",
|
||||
"flake-compat": "flake-compat_7",
|
||||
"flake-utils": "flake-utils_7",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
@ -828,6 +895,27 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix_2": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_5",
|
||||
"lowdown-src": "lowdown-src_2",
|
||||
"nixpkgs": "nixpkgs_7",
|
||||
"nixpkgs-regression": "nixpkgs-regression_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1686829784,
|
||||
"narHash": "sha256-szRWXTvKIeWquR4MM35MMGLbn17/csXrKdVY5YQWZfo=",
|
||||
"owner": "nixos",
|
||||
"repo": "nix",
|
||||
"rev": "e672d52f7caae591e4d07747a312f2bef538bbea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"repo": "nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixlib": {
|
||||
"locked": {
|
||||
"lastModified": 1685840432,
|
||||
@ -945,6 +1033,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-regression_2": {
|
||||
"locked": {
|
||||
"lastModified": 1643052045,
|
||||
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1685004253,
|
||||
@ -977,6 +1081,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_10": {
|
||||
"locked": {
|
||||
"lastModified": 1685012353,
|
||||
"narHash": "sha256-U3oOge4cHnav8OLGdRVhL45xoRj4Ppd+It6nPC9nNIU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "aeb75dba965e790de427b73315d5addf91a54955",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1665466769,
|
||||
@ -1026,6 +1146,38 @@
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1657693803,
|
||||
"narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "365e1b3a859281cf11b94f87231adeabbdd878a2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-22.05-small",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1669378442,
|
||||
"narHash": "sha256-nm+4PN0A4SnV0SzEchxrMyKPvI3Ld/aoom4PnHeHucs=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0faaf0a9bb6dedb69bfd43ac06fb27fadc476c51",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-22.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1670461440,
|
||||
"narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=",
|
||||
@ -1041,7 +1193,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"nixpkgs_8": {
|
||||
"locked": {
|
||||
"lastModified": 1686488075,
|
||||
"narHash": "sha256-2otSBt2hbeD+5yY25NF3RhWx7l5SDt1aeU3cJ/9My4M=",
|
||||
@ -1057,7 +1209,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_7": {
|
||||
"nixpkgs_9": {
|
||||
"locked": {
|
||||
"lastModified": 1686592866,
|
||||
"narHash": "sha256-riGg89eWhXJcPNrQGcSwTEEm7CGxWC06oSX44hajeMw=",
|
||||
@ -1073,22 +1225,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_8": {
|
||||
"locked": {
|
||||
"lastModified": 1685012353,
|
||||
"narHash": "sha256-U3oOge4cHnav8OLGdRVhL45xoRj4Ppd+It6nPC9nNIU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "aeb75dba965e790de427b73315d5addf91a54955",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1688546999,
|
||||
@ -1110,7 +1246,7 @@
|
||||
"prismlauncher",
|
||||
"flake-compat"
|
||||
],
|
||||
"flake-utils": "flake-utils_7",
|
||||
"flake-utils": "flake-utils_8",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"prismlauncher",
|
||||
@ -1137,10 +1273,10 @@
|
||||
},
|
||||
"prismlauncher": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_7",
|
||||
"flake-compat": "flake-compat_8",
|
||||
"flake-parts": "flake-parts",
|
||||
"libnbtplusplus": "libnbtplusplus",
|
||||
"nixpkgs": "nixpkgs_8",
|
||||
"nixpkgs": "nixpkgs_10",
|
||||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
@ -1197,12 +1333,13 @@
|
||||
"hyprland": "hyprland",
|
||||
"hyprpaper": "hyprpaper",
|
||||
"impermanence": "impermanence",
|
||||
"nix": "nix",
|
||||
"mms": "mms",
|
||||
"nix": "nix_2",
|
||||
"nix-alien": "nix-alien",
|
||||
"nix-direnv": "nix-direnv",
|
||||
"nix-vscode-marketplace": "nix-vscode-marketplace",
|
||||
"nixos-generators": "nixos-generators",
|
||||
"nixpkgs": "nixpkgs_7",
|
||||
"nixpkgs": "nixpkgs_9",
|
||||
"nixpkgs-master": "nixpkgs-master",
|
||||
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||
"nur": "nur",
|
||||
@ -1259,7 +1396,7 @@
|
||||
"simple-nixos-mailserver": {
|
||||
"inputs": {
|
||||
"blobs": "blobs",
|
||||
"flake-compat": "flake-compat_8",
|
||||
"flake-compat": "flake-compat_9",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
@ -1387,7 +1524,7 @@
|
||||
},
|
||||
"vscode-server": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_8",
|
||||
"flake-utils": "flake-utils_9",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
|
@ -48,6 +48,7 @@
|
||||
url = "github:hyprwm/hyprpaper";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
mms.url = "github:mkaito/nixos-modded-minecraft-servers";
|
||||
nix-alien = {
|
||||
url = "github:thiagokokada/nix-alien";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
@ -12,6 +12,7 @@
|
||||
nixosProfiles.sunshine
|
||||
nixosProfiles.attic
|
||||
nixosProfiles.emulators
|
||||
nixosProfiles.minecraft
|
||||
];
|
||||
|
||||
virtualisation.libvirt.guests = {
|
||||
@ -106,10 +107,11 @@
|
||||
home-manager.users.${config.mainuser} = {
|
||||
home.packages = lib.mkIf config.deviceSpecific.enableVirtualisation [
|
||||
inputs.nixos-generators.packages.${pkgs.hostPlatform.system}.nixos-generate
|
||||
# pkgs.prismlauncher
|
||||
pkgs.prismlauncher
|
||||
pkgs.piper
|
||||
pkgs.osu-lazer-bin
|
||||
pkgs.nix-alien
|
||||
# pkgs.nix-init
|
||||
pkgs.nixpkgs-review
|
||||
pkgs.anydesk
|
||||
pkgs.winbox
|
||||
@ -117,7 +119,7 @@
|
||||
home.stateVersion = "23.05";
|
||||
};
|
||||
|
||||
persist.state.homeDirectories = [ ".local/share/winbox" ];
|
||||
persist.state.homeDirectories = [ ".local/share/winbox" ".local/share/PrismLauncher" ];
|
||||
|
||||
system.stateVersion = "23.05";
|
||||
}
|
||||
|
95
profiles/servers/minecraft.nix
Normal file
95
profiles/servers/minecraft.nix
Normal file
@ -0,0 +1,95 @@
|
||||
{ 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 = {
|
||||
enable = true;
|
||||
inherit rsyncSSHKeys jvmOpts;
|
||||
jvmMaxAllocation = "6144m";
|
||||
jvmInitialAllocation = "2048m";
|
||||
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" ];
|
||||
|
||||
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 flush"
|
||||
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"
|
||||
];
|
||||
};
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user