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

View file

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

View file

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

View file

@ -5,14 +5,21 @@
... ...
}: let }: let
inherit (lib.modules) mkIf mkDefault; 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 { in {
services.minecraft-katsink-server = { services.minecraft-java-server = {
enable = mkDefault true; enable = mkDefault true;
argsFiles = [ argsFiles = [
"user_jvm_args.txt" "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 = { allowPlayers = {
katrynn = { katrynn = {
uuid = "356d8cf2-246a-4c07-b547-422aea06c0ab"; uuid = "356d8cf2-246a-4c07-b547-422aea06c0ab";
@ -37,17 +44,28 @@ in {
}; };
systemd = mkIf cfg.enable { systemd = mkIf cfg.enable {
services.minecraft-katsink-server = { services.minecraft-java-server = {
# TODO: confinement.enable = true; # TODO: confinement.enable = true;
gensokyo-zone.sharedMounts."minecraft/katsink/kat-kitchen-server" = {config, ...}: { gensokyo-zone.sharedMounts."minecraft/java/marka-server" = {config, ...}: {
root = config.rootDir + "/minecraft/katsink"; root = config.rootDir + "/minecraft/java";
path = mkDefault cfg.dataDir; path = mkDefault cfg.dataDir;
}; };
preStart = '' preStart = let
${pkgs.coreutils}/bin/ln -sf $PWD/libraries/net/neoforged/neoforge/*/unix_args.txt $RUNTIME_DIRECTORY/unix_args.txt 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 { networking.firewall = mkIf cfg.enable {
interfaces.local = { interfaces.local = {
allowedTCPPorts = [cfg.port]; allowedTCPPorts = [cfg.port];

View file

@ -4,7 +4,7 @@
"/rpool/shared/nix/store nix/store none bind,create=dir", "/rpool/shared/nix/store nix/store none bind,create=dir",
"/rpool/shared/nix/var nix/var 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/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", "/mnt/kyuuto-data/minecraft mnt/kyuuto-data/minecraft none bind,optional,create=dir",
"/dev/net/tun dev/net/tun none bind,optional,create=file" "/dev/net/tun dev/net/tun none bind,optional,create=file"
], ],

View file

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

View file

@ -1,7 +1,7 @@
{ {
"lxc": { "lxc": {
"lxc.mount.entry": [ "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-data/minecraft mnt/kyuuto-data/minecraft none bind,optional,create=dir",
"/mnt/kyuuto-minecraft mnt/kyuuto-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" "/dev/net/tun dev/net/tun none bind,optional,create=file"

View file

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

View file

@ -185,7 +185,7 @@ mkshared zigbee2mqtt 100317 100317 0700
mkshared vaultwarden 100915 100915 0750 mkshared vaultwarden 100915 100915 0750
mkshared minecraft 100913 100913 0750 mkshared minecraft 100913 100913 0750
mkshared minecraft/bedrock 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 0 0 0755 -o compression=on
mkkyuuto data/minecraft 0 8126 0775 mkkyuuto data/minecraft 0 8126 0775