141 lines
5.3 KiB
Nix
141 lines
5.3 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}"
|
|
] pkgs)
|
|
];
|
|
|
|
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_7;
|
|
|
|
jvmOpts =
|
|
let
|
|
heap_size = "10000M";
|
|
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/JIZogEYa/fabric-api-0.128.2%2B1.21.7.jar";
|
|
sha512 = "afb9b3d1040689f53dd51341626b04d197e7d057d578a72c7a374a66465e0e07f5b3d52721d71e36be26d197668d3a96ea50dbb85e2bc5835d9d858e31b15966";
|
|
};
|
|
|
|
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/77EtzYFA/lithium-fabric-0.18.0%2Bmc1.21.7.jar";
|
|
sha512 = "afaf6ddaf0cbae2050d725efd438c4c98141d738a637f0f058dcbaff077ef85af801e2dca138ce9f7f8ba3a169dc6af1c9f56736b255c6ea13363f8a1be8ecdb";
|
|
};
|
|
|
|
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/Gvw4v06M/squaremap-fabric-mc1.21.7-1.3.7.jar";
|
|
sha512 = "f1e4218ba0146b3dcc63d36ca70e4d1b987e83a4004c5dd1ef0145afb2fb833e3418ae6e86f2fac22e0dfe0ecfdc84fe5a9f52d04b87892b8636d8f8d75379dd";
|
|
};
|
|
|
|
scalablelux = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/Ps1zyz6x/versions/UueJNiJn/ScalableLux-0.1.3%2Bbeta.1%2Bfabric.4039a8d-all.jar";
|
|
sha512 = "144dd32f5f7b9c015ae2ff2efc8ba58c561d0fae7a22aba071f0d45f8b3154ae8d23783e9a0308c80eee51857a0ef68191c444830e5da3b44021f03b55a26da2";
|
|
};
|
|
|
|
c2me = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/VSNURh3q/versions/Erjpfj2l/c2me-fabric-mc1.21.7-0.3.4%2Bbeta.1.0.jar";
|
|
sha512 = "8942e82c216315198d4752fbb9396e6d59d6447085ce5c00811ba0189765b20acad0153a10532f7ade29f7c090e0299c01802174aa89d4da642bc10f9429998d";
|
|
};
|
|
|
|
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/wPYvarTa/spark-1.10.140-fabric.jar";
|
|
sha512 = "595fb359cdecda4afea773aa47a34c7bcfef899abfcfb93f0cd346c6308cb88ad09f87f29606640768c48945da1617a89bc97cdea6d9e916cb47ab1fbec41328";
|
|
};
|
|
|
|
# not updated to 1.21.7
|
|
/*
|
|
better-fabric-console = fetchurl {
|
|
url = "https://cdn.modrinth.com/data/Y8o1j1Sf/versions/OexcFHtG/better-fabric-console-mc1.21.5-1.2.3.jar";
|
|
sha512 = "0a5b0da9d6d3c78ed9af66d2bca3976889649942025aecf7f469bea500ce7914070569259332fefb3629b2eb478ee0cfbf85252aaec5d7969727c1668732e8f4";
|
|
};
|
|
*/
|
|
}
|
|
);
|
|
};
|
|
};
|
|
};
|
|
|
|
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} 0750 minecraft minecraft"
|
|
];
|
|
|
|
users.users.${username}.extraGroups = [
|
|
"minecraft"
|
|
];
|
|
}
|