feat(tmux-minecraft-server): add tmux socket

This commit is contained in:
Infinidoge 2022-02-06 22:45:15 -05:00
parent 07814d3d4f
commit 968cf96f5a

View file

@ -5,6 +5,19 @@ with lib.hlissner;
let let
cfg = config.services.tmux-minecraft-server; cfg = config.services.tmux-minecraft-server;
tmux = "${getBin pkgs.tmux}/bin/tmux";
server = "${cfg.package}/bin/minecraft-server";
stopScript = pkgs.writeScript "minecraft-stop" ''
#!${pkgs.runtimeShell}
if ! [ -d "/proc/$1" ]; then
exit 0
fi
${tmux} -S ${cfg.dataDir}/minecraft-server.sock send-keys stop Enter
'';
files = { files = {
# We don't allow eula=false anyways # We don't allow eula=false anyways
eula = builtins.toFile "eula.txt" '' eula = builtins.toFile "eula.txt" ''
@ -169,9 +182,12 @@ in
after = [ "network.target" ]; after = [ "network.target" ];
serviceConfig = { serviceConfig = {
ExecStart = "${cfg.package}/bin/minecraft-server ${cfg.jvmOpts}"; ExecStart = "${tmux} -S ${cfg.dataDir}/minecraft-server.sock new -d ${server} ${cfg.jvmOpts}";
ExecStop = "${stopScript} $MAINPID";
Restart = "always"; Restart = "always";
User = "minecraft"; User = "minecraft";
Type = "forking";
GuessMainPID = true;
WorkingDirectory = cfg.dataDir; WorkingDirectory = cfg.dataDir;
}; };
@ -180,6 +196,12 @@ in
ln -sf ${whitelist} whitelist.json ln -sf ${whitelist} whitelist.json
cp -f ${serverProperties} server.properties cp -f ${serverProperties} server.properties
''; '';
postStart = ''
${pkgs.coreutils}/bin/chmod 770 ${cfg.dataDir}
${pkgs.coreutils}/bin/chmod 660 ${cfg.dataDir}/minecraft-server.sock
${pkgs.coreutils}/bin/chgrp minecraft ${cfg.dataDir}/minecraft-server.sock
'';
}; };
networking.firewall = mkIf cfg.openFirewall (with ports; { networking.firewall = mkIf cfg.openFirewall (with ports; {