feat(tmux-minecraft-server): add tmux socket
This commit is contained in:
parent
07814d3d4f
commit
968cf96f5a
1 changed files with 23 additions and 1 deletions
|
@ -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; {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue