142 lines
5.6 KiB
Nix
142 lines
5.6 KiB
Nix
{
|
|
pkgs,
|
|
service_configs,
|
|
lib,
|
|
username,
|
|
config,
|
|
serviceMountDeps,
|
|
...
|
|
}:
|
|
{
|
|
imports = [
|
|
(serviceMountDeps "minecraft-server-${service_configs.minecraft.server_name}" [
|
|
"${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}"
|
|
])
|
|
];
|
|
|
|
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_5;
|
|
|
|
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 = 12;
|
|
};
|
|
|
|
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/rYSz5dRU/fabric-api-0.119.6%2B1.21.5.jar";
|
|
sha512 = "80a4660c9bf5410b37ee4c2bf86ed1fcaccd77cea7fd203e00650659f02271a71d367cd95178f9177998401d1693ec48753a3e73b1ba96631c014e7a92d64501";
|
|
};
|
|
|
|
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/5YInGgMN/lithium-fabric-0.16.1%2Bmc1.21.5.jar";
|
|
sha512 = "3b723b7e3cb62f1b4b9f56c3acd4e0d0dd2cf02159cddf302c631a7141e4add447c5298b37a96e25a6432bdeb645b085cb59e489161f22bade139d1c6fdc4387";
|
|
};
|
|
|
|
NoChatReports = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/qQyHxfxd/versions/CHlHxkvf/NoChatReports-FABRIC-1.21.5-v2.12.0.jar";
|
|
sha512 = "c0825db25672cf8b50face51ec8a6bedb4be50b374a2537640a433c98817bc07c177485e93ab8cee9e3f7bfb1d2eb1460309e818b411764c92426b552487a9f7";
|
|
};
|
|
|
|
# waiting for 1.21.5 version:
|
|
# https://github.com/Tuinity/Moonrise/tree/mc/1.21.5
|
|
# moonrise = fetchurl {
|
|
# url = "https://cdn.modrinth.com/data/KOHu7RCS/versions/6Dgh9jQx/Moonrise-Fabric-0.2.0-beta.9%2Bac0c7de.jar";
|
|
# sha512 = "c101f1a41db4095d651d32eae47bd7e6f7358f7390898610d1bf261ebfc7e0f4165fd551c08a99cca31a3308f1989a16b8c75c1ece60ef9cd475107ca4f4219e";
|
|
# };
|
|
|
|
# doesn't support 1.21.5:
|
|
# https://github.com/jpenilla/squaremap/issues/386
|
|
# https://github.com/jpenilla/squaremap/pull/387
|
|
# squaremap = fetchurl {
|
|
# url = "https://cdn.modrinth.com/data/PFb7ZqK6/versions/9i2KwI5R/squaremap-fabric-mc1.21.4-1.3.4.jar";
|
|
# sha512 = "6eb44061f057d1bbd0bb6f9186d03d496479dcd953af8f09f70099c2e67e567e5dca626972d45af0315c2e2714c3dd74beef97575396e3bb90b7c670f5c80fef";
|
|
# };
|
|
|
|
# doesn't support 1.21.5
|
|
# modernfix = fetchurl {
|
|
# url = "https://cdn.modrinth.com/data/nmDcB62a/versions/ZGxQddYr/modernfix-fabric-5.20.3%2Bmc1.21.4.jar";
|
|
# sha512 = "ae49114c92a048c9ce79e197fc4df028e186cf13546e710f72247382fa8076f0b70d6aa3224951f4a36c886ca236f099a011f20b021a2b0d1a75c631da4d7d52";
|
|
# };
|
|
|
|
alternatecurrent = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/r0v8vy1s/versions/eTNKfjl1/alternate-current-mc1.21.5-1.9.0.jar";
|
|
sha512 = "3e4088170917846b30275825420b553e3fc3befb52bb259848853b93343bae3b39cd592902c0c79f05b17381d80170784990d9c4e110ff3b6c552e5508b40d67";
|
|
};
|
|
|
|
# fix `Error sending packet clientbound/minecraft:disconnect` error
|
|
disconnectpacketfix = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/rd9rKuJT/versions/Gv74xveQ/disconnect-packet-fix-fabric-2.0.0.jar";
|
|
sha512 = "1fd6f09a41ce36284e1a8e9def53f3f6834d7201e69e54e24933be56445ba569fbc26278f28300d36926ba92db6f4f9c0ae245d23576aaa790530345587316db";
|
|
};
|
|
|
|
krypton = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/fQEb0iXm/versions/neW85eWt/krypton-0.2.9.jar";
|
|
sha512 = "2e2304b1b17ecf95783aee92e26e54c9bfad325c7dfcd14deebf9891266eb2933db00ff77885caa083faa96f09c551eb56f93cf73b357789cb31edad4939ffeb";
|
|
};
|
|
}
|
|
);
|
|
};
|
|
};
|
|
};
|
|
|
|
services.caddy.virtualHosts."map.${service_configs.https.domain}".extraConfig = ''
|
|
root * ${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}/squaremap/web
|
|
file_server browse
|
|
'';
|
|
|
|
users.users.${config.services.caddy.user}.extraGroups = [
|
|
# for `map.gardling.com`
|
|
"minecraft"
|
|
];
|
|
|
|
systemd.tmpfiles.rules = [
|
|
"d ${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name} 0770 minecraft minecraft"
|
|
];
|
|
|
|
users.users.${username}.extraGroups = [
|
|
"minecraft"
|
|
];
|
|
}
|