149 lines
6.3 KiB
Nix
149 lines
6.3 KiB
Nix
{
|
|
pkgs,
|
|
service_configs,
|
|
lib,
|
|
username,
|
|
config,
|
|
...
|
|
}:
|
|
{
|
|
imports = [
|
|
(lib.serviceMountDeps "minecraft-server-${service_configs.minecraft.server_name}" [
|
|
"${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}"
|
|
])
|
|
(lib.serviceDependZpool "minecraft-server-${service_configs.minecraft.server_name}" service_configs.zpool_ssds)
|
|
];
|
|
|
|
environment.systemPackages = [
|
|
(pkgs.writeScriptBin "mc-console" ''
|
|
#!/bin/sh
|
|
${pkgs.tmux}/bin/tmux -S /run/minecraft/${service_configs.minecraft.server_name}.sock attach
|
|
'')
|
|
];
|
|
|
|
nixpkgs.config.allowUnfreePredicate =
|
|
pkg:
|
|
builtins.elem (lib.getName pkg) [
|
|
"minecraft-server"
|
|
];
|
|
|
|
services.minecraft-servers = {
|
|
enable = true;
|
|
eula = true;
|
|
dataDir = service_configs.minecraft.parent_dir;
|
|
openFirewall = true;
|
|
|
|
servers.${service_configs.minecraft.server_name} = {
|
|
enable = true;
|
|
package = pkgs.fabricServers.fabric-1_21_8;
|
|
|
|
jvmOpts =
|
|
let
|
|
heap_size = "4000M";
|
|
in
|
|
"-Xmx${heap_size} -Xms${heap_size} -XX:+UseZGC -XX:+ZGenerational";
|
|
|
|
serverProperties = {
|
|
server-port = 25565;
|
|
enforce-whitelist = true;
|
|
gamemode = "survival";
|
|
white-list = true;
|
|
difficulty = "easy";
|
|
motd = "A Minecraft Server";
|
|
view-distance = 10;
|
|
simulation-distance = 6;
|
|
sync-chunk-writes = false;
|
|
spawn-protection = 0;
|
|
};
|
|
|
|
whitelist = import ../secrets/minecraft-whitelist.nix;
|
|
|
|
symlinks = {
|
|
"mods" = pkgs.linkFarmFromDrvs "mods" (
|
|
with pkgs;
|
|
builtins.attrValues {
|
|
FabricApi = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/P7dR8mSH/versions/zhzhM2yQ/fabric-api-0.130.0%2B1.21.8.jar";
|
|
sha512 = "27399d629d3fb955c8fc1e5e86cacb9b124814bb97ee7fe283336b0e28f5eb9ae31619814ab4aef70c5beea908d2a1ed5a8dd6b8641a53ecd50375d50067f061";
|
|
};
|
|
|
|
FerriteCore = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/uXXizFIs/versions/CtMpt7Jr/ferritecore-8.0.0-fabric.jar";
|
|
sha512 = "131b82d1d366f0966435bfcb38c362d604d68ecf30c106d31a6261bfc868ca3a82425bb3faebaa2e5ea17d8eed5c92843810eb2df4790f2f8b1e6c1bdc9b7745";
|
|
};
|
|
|
|
Lithium = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/gvQqBUqZ/versions/qxIL7Kb8/lithium-fabric-0.18.1%2Bmc1.21.8.jar";
|
|
sha512 = "ef3e0820c7c831c352cbd5afa4a1f4ff73db0fa3c4e4428ba35ad2faeb8e7bce8ae4805a04934be82099012444a70c0a2cf2049f2af95fe688ca84d94d1c4672";
|
|
};
|
|
|
|
NoChatReports = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/qQyHxfxd/versions/LhwpK0O6/NoChatReports-FABRIC-1.21.7-v2.14.0.jar";
|
|
sha512 = "6e93c822e606ad12cb650801be1b3f39fcd2fef64a9bb905f357eb01a28451afddb3a6cadb39c112463519df0a07b9ff374d39223e9bf189aee7e7182077a7ae";
|
|
};
|
|
|
|
squaremap = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/PFb7ZqK6/versions/V9xWIMui/squaremap-fabric-mc1.21.8-1.3.8.jar";
|
|
sha512 = "ed32aca04ef0ad6d46549f9309a342624b64857296515037e5531611d43a7f5d4a6b97f6495f76d2ecfdfac9e4f0bf8a66c938c379cdddae59c8a7f2fe0c03f4";
|
|
};
|
|
|
|
scalablelux = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/Ps1zyz6x/versions/PQLHDg2Q/ScalableLux-0.1.5%2Bfabric.e4acdcb-all.jar";
|
|
sha512 = "ec8fabc3bf991fbcbe064c1e97ded3e70f145a87e436056241cbb1e14c57ea9f59ef312f24c205160ccbda43f693e05d652b7f19aa71f730caec3bb5f7f7820a";
|
|
};
|
|
|
|
c2me = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/VSNURh3q/versions/RzzXyBlx/c2me-fabric-mc1.21.8-0.3.4%2Brc.1.0.jar";
|
|
sha512 = "4addc9ccbc66b547c96152c7fafcaccde47eefa62b0e99a31f7b4ee5844ac738f2557909bd74e1f755ff4835ce13e8ff6c556f8ebda276370912f50ebd054e3a";
|
|
};
|
|
|
|
krypton = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/fQEb0iXm/versions/neW85eWt/krypton-0.2.9.jar";
|
|
sha512 = "2e2304b1b17ecf95783aee92e26e54c9bfad325c7dfcd14deebf9891266eb2933db00ff77885caa083faa96f09c551eb56f93cf73b357789cb31edad4939ffeb";
|
|
};
|
|
|
|
spark = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/l6YH9Als/versions/3KCl7Vx0/spark-1.10.142-fabric.jar";
|
|
sha512 = "95b7e4f2416e20abf9d9df41fcbce04f28ebf0aa086374742652789a88642dd6820c8884ab240334555345b49c39f7d0caf23d521cec9516991ef43ba24758af";
|
|
};
|
|
|
|
better-fabric-console = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/Y8o1j1Sf/versions/DMBZUPjK/better-fabric-console-mc1.21.8-1.2.5.jar";
|
|
sha512 = "d0de1aec66add0158e5a97424a21fc4bd0d26c54457d1bf15cd19e60939ed5d8b4dc4120a6aeec00925723b7dc431a9b84f60ad96d56a9e50620ef34b091cae6";
|
|
};
|
|
|
|
disconnect-packet-fix = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/rd9rKuJT/versions/Gv74xveQ/disconnect-packet-fix-fabric-2.0.0.jar";
|
|
sha512 = "1fd6f09a41ce36284e1a8e9def53f3f6834d7201e69e54e24933be56445ba569fbc26278f28300d36926ba92db6f4f9c0ae245d23576aaa790530345587316db";
|
|
};
|
|
|
|
packet-fixer = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/c7m1mi73/versions/V05RgbEn/packetfixer-3.3.0-1.20.5-1.21.X-merged.jar";
|
|
sha512 = "17fd46a5edd2ecefb67f346fa1ddd8beebd119f9c1598e91211c5d8a4691ae118d81d6628cb39705c0cf1a4d1f09299b76f72c5d286ca5b707c2508633654c12";
|
|
};
|
|
}
|
|
);
|
|
};
|
|
};
|
|
};
|
|
|
|
services.caddy.virtualHosts = lib.mkIf (config.services.caddy.enable) {
|
|
"map.${service_configs.https.domain}".extraConfig = ''
|
|
root * ${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}/squaremap/web
|
|
file_server browse
|
|
'';
|
|
};
|
|
|
|
users.users = lib.mkIf (config.services.caddy.enable) {
|
|
${config.services.caddy.user}.extraGroups = [
|
|
# for `map.gardling.com`
|
|
"minecraft"
|
|
];
|
|
};
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"Z ${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name} 700 ${config.services.minecraft-servers.user} ${config.services.minecraft-servers.group}"
|
|
"Z ${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}/squaremap/web 750 ${config.services.minecraft-servers.user} ${config.services.minecraft-servers.group}"
|
|
];
|
|
}
|