51 lines
1.6 KiB
Nix
51 lines
1.6 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
let
|
|
palworldSettings = builtins.readFile ./PalWorldSettings.ini;
|
|
in
|
|
{
|
|
# NOTE: Partly inspired by: https://github.com/pocketpairjp/palworld-dedicated-server-docker
|
|
networking.firewall.allowedUDPPorts = [ 8211 ];
|
|
|
|
users.users.palworld = {
|
|
isSystemUser = true;
|
|
createHome = true;
|
|
home = "/home/palworld";
|
|
homeMode = "750";
|
|
group = "palworld";
|
|
extraGroups = [ "steamcmd" ];
|
|
};
|
|
users.groups.palworld = {};
|
|
|
|
systemd.services.palworld = {
|
|
enable = true;
|
|
description = "PalWorld Dedicated Server";
|
|
#after = [ "network.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
serviceConfig = {
|
|
ExecStartPre = ''
|
|
${pkgs.steamcmd}/bin/steamcmd +login anonymous \
|
|
+app_update 2394010 validate +quit
|
|
'';
|
|
ExecStart = ''
|
|
${pkgs.steam-run}/bin/steam-run \
|
|
.steam/steam/Steamapps/common/PalServer/PalServer.sh -publiclobby \
|
|
-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
|
|
'';
|
|
WorkingDirectory = "/home/palworld";
|
|
Restart = "always";
|
|
RuntimeMaxSec = "1d";
|
|
User = "palworld";
|
|
};
|
|
};
|
|
|
|
# NOTE: Config is stashed at the following directory.
|
|
# /home/palworld/.steam/steam/Steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
|
|
environment.etc."palworld/PalWorldSettings.ini" = {
|
|
target = "/home/palworld/.steam/steam/Steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini";
|
|
text = palworldSettings;
|
|
mode = "0644";
|
|
user = "palworld";
|
|
group = "palworld";
|
|
};
|
|
}
|