fix(minecraft): service restart on exit

This commit is contained in:
arcnmx 2024-10-05 12:07:30 -07:00
parent 553f68cb5a
commit 84594aef74

View file

@ -148,10 +148,10 @@ in {
execStop = pkgs.writeShellScriptBin "minecraft-java-stop" '' execStop = pkgs.writeShellScriptBin "minecraft-java-stop" ''
echo /stop > ${config.systemd.sockets.minecraft-java-server.socketConfig.ListenFIFO} || true echo /stop > ${config.systemd.sockets.minecraft-java-server.socketConfig.ListenFIFO} || true
if [[ -n $1 ]]; then if [[ -n ''${MAINPID-} ]]; then
# 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.
while kill -0 "$1" 2> /dev/null; do while kill -0 "$MAINPID" 2> /dev/null; do
sleep 1s sleep 1s
done done
fi fi
@ -179,8 +179,9 @@ in {
"${writeWhiteList cfg.allowPlayers}:${cfg.dataDir}/whitelist.json" "${writeWhiteList cfg.allowPlayers}:${cfg.dataDir}/whitelist.json"
"${writeOps cfg.allowPlayers}:${cfg.dataDir}/ops.json" "${writeOps cfg.allowPlayers}:${cfg.dataDir}/ops.json"
]; ];
ExecStop = ''${getExe execStop} "$MAINPID"''; ExecStop = getExe execStop;
Restart = "always"; Restart = "always";
RestartSec = 3;
User = cfg.user; User = cfg.user;
WorkingDirectory = cfg.dataDir; WorkingDirectory = cfg.dataDir;
RuntimeDirectory = "minecraft-java"; RuntimeDirectory = "minecraft-java";
@ -213,7 +214,7 @@ in {
}; };
}; };
conf.systemd.sockets.minecraft-java-server = { conf.systemd.sockets.minecraft-java-server = {
bindsTo = ["minecraft-java-server.service"]; partOf = ["minecraft-java-server.service"];
socketConfig = { socketConfig = {
ListenFIFO = "/run/minecraft-java/stdin"; ListenFIFO = "/run/minecraft-java/stdin";
SocketMode = "0660"; SocketMode = "0660";