chore(minecraft): rename new server

This commit is contained in:
arcnmx 2024-09-21 16:27:12 -07:00
parent e1382c7e6d
commit 22c02adb41
9 changed files with 64 additions and 37 deletions

View file

@ -11,10 +11,10 @@
inherit (lib.strings) escapeShellArgs;
inherit (lib.meta) getExe;
inherit (config.lib.minecraft) mkAllowPlayerType writeWhiteList writeOps;
cfg = config.services.minecraft-katsink-server;
cfg = config.services.minecraft-java-server;
in {
options.services.minecraft-katsink-server = with lib.types; {
enable = mkEnableOption "kat-kitchen-sink";
options.services.minecraft-java-server = with lib.types; {
enable = mkEnableOption "minecraft java edition server";
openFirewall = mkOption {
type = bool;
@ -29,7 +29,7 @@ in {
dataDir = mkOption {
type = path;
default = "/var/lib/minecraft-katsink";
default = "/var/lib/minecraft-java";
description = ''
Directory to store Minecraft database and other state/data files.
'';
@ -66,7 +66,7 @@ in {
};
config = let
confService.services.minecraft-katsink-server = {
confService.services.minecraft-java-server = {
serverProperties = mapOptionDefaults {
};
};
@ -81,12 +81,12 @@ in {
groups.${cfg.group} = {};
};
conf.systemd.services.minecraft-katsink-server = let
conf.systemd.services.minecraft-java-server = let
execStartArgs =
map (argsFile: "@${argsFile}") cfg.argsFiles
++ cfg.jvmOpts;
execStop = pkgs.writeShellScriptBin "minecraft-katsink-stop" ''
echo /stop > ${config.systemd.sockets.minecraft-katsink-server.socketConfig.ListenFIFO}
execStop = pkgs.writeShellScriptBin "minecraft-java-stop" ''
echo /stop > ${config.systemd.sockets.minecraft-java-server.socketConfig.ListenFIFO}
# Wait for the PID of the minecraft server to disappear before
# returning, so systemd doesn't attempt to SIGKILL it.
@ -97,8 +97,8 @@ in {
in {
description = "Minecraft Kat Kitchen Server";
wantedBy = ["multi-user.target"];
requires = ["minecraft-katsink-server.socket"];
after = ["network.target" "minecraft-katsink-server.socket"];
requires = ["minecraft-java-server.socket"];
after = ["network.target" "minecraft-java-server.socket"];
restartTriggers = [
cfg.dataDir
@ -120,7 +120,7 @@ in {
Restart = "always";
User = cfg.user;
WorkingDirectory = cfg.dataDir;
RuntimeDirectory = "minecraft-katsink";
RuntimeDirectory = "minecraft-java";
StandardInput = "socket";
StandardOutput = "journal";
@ -149,10 +149,10 @@ in {
UMask = "0077";
};
};
conf.systemd.sockets.minecraft-katsink-server = {
bindsTo = ["minecraft-katsink-server.service"];
conf.systemd.sockets.minecraft-java-server = {
bindsTo = ["minecraft-java-server.service"];
socketConfig = {
ListenFIFO = "/run/minecraft-katsink/stdin";
ListenFIFO = "/run/minecraft-java/stdin";
SocketMode = "0660";
SocketUser = mkOptionDefault cfg.user;
SocketGroup = mkOptionDefault cfg.group;

View file

@ -63,7 +63,7 @@ in {
minecraftServer = [
{
match = {
selector = ''{unit="minecraft-katsink-server.service"}'';
selector = ''{unit="minecraft-java-server.service"}'';
pipeline_name = "minecraft-log4j";
stages = [
{
@ -80,26 +80,34 @@ in {
regex.expression = concatStringsSep " " [
''^\[(?P<time>[0-9:.]+)\]''
''\[(?P<thread>[^\/]+)\/(?P<level>[^\]]+)\]''
''\[(?P<component>[^\/]+)\/((?P<category>[^\]]+)|)\]:''
''(?P<message><(?P<chat_user>[^> ]+)> (?P<chat_message>.*)|.*)$''
''\[(?P<context>[^\/]+)\/((?P<category>[^\]]+)|)\]:''
''(?P<message>(\[DISCORD\] <(?P<chat_user_discord>[^> ]+)>|<(?P<chat_user>[^> ]+)>) (?P<chat_message>.*)|(?s:.*))$''
];
}
{
template = {
source = "time";
template = ''{{ .__journal__realtime_timestamp | date "2006-01-02" }}T{{ .Value }}'';
};
}
{
labels = {
time = null;
thread = null;
level = null;
component = null;
context = null;
category = null;
message = null;
chat_user = null;
chat_user_discord = null;
chat_message = null;
};
}
{
timestamp = {
source = "time";
format = "15:04:05";
format = "2006-01-02T15:04:05";
location = config.time.timeZone;
};
}
];
@ -108,7 +116,7 @@ in {
];
in
mkMerge [
(mkIf config.services.minecraft-katsink-server.enable minecraftServer)
(mkIf config.services.minecraft-java-server.enable minecraftServer)
];
}
(mkIf nginx.enable {

View file

@ -3,9 +3,8 @@
gensokyo-zone,
...
}: let
inherit (gensokyo-zone.lib) mapAlmostOptionDefaults mkAlmostOptionDefault;
inherit (gensokyo-zone.lib) mkAlmostOptionDefault;
inherit (lib.modules) mkIf;
inherit (lib.attrsets) mapAttrs;
in {
config.exports.services.minecraft = {config, ...}: let
mkAssertion = f: nixosConfig: let
@ -15,7 +14,7 @@ in {
in {
displayName = "Minecraft";
nixos = {
serviceAttr = "minecraft-katsink-server";
serviceAttr = "minecraft-java-server";
assertions = mkIf config.enable [
(mkAssertion (nixosConfig: cfg: {
assertion = config.ports.default.port == cfg.port;

View file

@ -5,14 +5,21 @@
...
}: let
inherit (lib.modules) mkIf mkDefault;
cfg = config.services.minecraft-katsink-server;
cfg = config.services.minecraft-java-server;
#forge = "neoforge";
forge = "forge";
backupsDir = "${config.kyuuto.dataDir}/minecraft/simplebackups/marka";
in {
services.minecraft-katsink-server = {
services.minecraft-java-server = {
enable = mkDefault true;
argsFiles = [
"user_jvm_args.txt"
"/run/minecraft-katsink/unix_args.txt"
"/run/minecraft-java/unix_args.txt"
];
serverProperties = {
enable-query = true;
"query.port" = cfg.port;
};
allowPlayers = {
katrynn = {
uuid = "356d8cf2-246a-4c07-b547-422aea06c0ab";
@ -37,16 +44,27 @@ in {
};
systemd = mkIf cfg.enable {
services.minecraft-katsink-server = {
services.minecraft-java-server = {
# TODO: confinement.enable = true;
gensokyo-zone.sharedMounts."minecraft/katsink/kat-kitchen-server" = {config, ...}: {
root = config.rootDir + "/minecraft/katsink";
gensokyo-zone.sharedMounts."minecraft/java/marka-server" = {config, ...}: {
root = config.rootDir + "/minecraft/java";
path = mkDefault cfg.dataDir;
};
preStart = ''
${pkgs.coreutils}/bin/ln -sf $PWD/libraries/net/neoforged/neoforge/*/unix_args.txt $RUNTIME_DIRECTORY/unix_args.txt
preStart = let
forgeDir = {
neoforge = "neoforged/neoforge";
forge = "minecraftforge/forge";
}.${forge};
in ''
${pkgs.coreutils}/bin/ln -sf $PWD/libraries/net/${forgeDir}/*/unix_args.txt $RUNTIME_DIRECTORY/unix_args.txt
'';
serviceConfig = {
BindPaths = [
"${backupsDir}:${cfg.dataDir}/simplebackups"
];
};
};
# TODO: tmpfiles.rules = ["d ${backupsDir} 775 ${cfg.user} admin - -"];
};
networking.firewall = mkIf cfg.enable {
interfaces.local = {

View file

@ -4,7 +4,7 @@
"/rpool/shared/nix/store nix/store none bind,create=dir",
"/rpool/shared/nix/var nix/var none bind,create=dir",
"/rpool/shared/minecraft/bedrock mnt/shared/minecraft/bedrock none bind,optional,create=dir",
"/rpool/shared/minecraft/katsink mnt/shared/minecraft/katsink none bind,optional,create=dir",
"/rpool/shared/minecraft/java mnt/shared/minecraft/java none bind,optional,create=dir",
"/mnt/kyuuto-data/minecraft mnt/kyuuto-data/minecraft none bind,optional,create=dir",
"/dev/net/tun dev/net/tun none bind,optional,create=file"
],

View file

@ -12,7 +12,8 @@ _: {
tailscale.enable = true;
minecraft = {
enable = true;
id = "katsink";
id = "marka";
ports.query.enable = true;
};
};
};

View file

@ -1,7 +1,7 @@
{
"lxc": {
"lxc.mount.entry": [
"/rpool/shared/minecraft/katsink mnt/shared/minecraft/katsink none bind,optional,create=dir",
"/rpool/shared/minecraft/java mnt/shared/minecraft/java none bind,optional,create=dir",
"/mnt/kyuuto-data/minecraft mnt/kyuuto-data/minecraft none bind,optional,create=dir",
"/mnt/kyuuto-minecraft mnt/kyuuto-minecraft none bind,optional,create=dir",
"/dev/net/tun dev/net/tun none bind,optional,create=file"

View file

@ -9,11 +9,12 @@
nixos.sops
nixos.reisen-ct
nixos.tailscale
nixos.minecraft.katsink
nixos.kyuuto.mount
nixos.minecraft.java
];
environment.systemPackages = [
config.services.minecraft-katsink-server.jre.package
config.services.minecraft-java-server.jre.package
];
sops = {

View file

@ -185,7 +185,7 @@ mkshared zigbee2mqtt 100317 100317 0700
mkshared vaultwarden 100915 100915 0750
mkshared minecraft 100913 100913 0750
mkshared minecraft/bedrock 100913 100913 0750
mkshared minecraft/katsink 100913 100913 0750
mkshared minecraft/java 100913 100913 0750
mkkyuuto data 0 0 0755 -o compression=on
mkkyuuto data/minecraft 0 8126 0775