From 540abb07a63db6d31925936b2caee03bec43261e Mon Sep 17 00:00:00 2001 From: Kopatz <7265381+Kropatz@users.noreply.github.com> Date: Sun, 21 Jan 2024 21:09:53 +0100 Subject: [PATCH 1/2] add palworld --- flake.nix | 1 + modules/games/palworld.nix | 45 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 modules/games/palworld.nix diff --git a/flake.nix b/flake.nix index 4a79a62..74c623e 100644 --- a/flake.nix +++ b/flake.nix @@ -72,6 +72,7 @@ ./modules/netdata.nix ./modules/step-ca.nix ./modules/tmpfs.nix + ./modules/games/palworld.nix ./modules/logging.nix ### Hardware ### ./modules/hardware/ssd.nix diff --git a/modules/games/palworld.nix b/modules/games/palworld.nix new file mode 100644 index 0000000..597319d --- /dev/null +++ b/modules/games/palworld.nix @@ -0,0 +1,45 @@ +# valheim.nix +{config, pkgs, lib, ...}: let +in { + + networking.firewall.allowedUDPPorts = [ 8221 ]; #5349 ]; + users.users.palworld = { + isSystemUser = true; + # Valheim puts save data in the home directory. + home = "/var/lib/palworld"; + createHome = true; + homeMode = "750"; + group = "palworld"; + }; + + users.groups.palworld = {}; + + systemd.services.palworld = { + wantedBy = [ "multi-user.target" ]; + + wants = [ "network-online.target" ]; + after = [ "network-online.target" ]; + + preStart = '' + ${pkgs.steamcmd}/bin/steamcmd \ + +login anonymous \ + +force_install_dir /var/lib/palworld \ + +app_update 2394010 validate \ + +quit + ''; + script = "${pkgs.steam-run}/bin/steam-run /var/lib/palworld/Pal/Binaries/Linux/PalServer-Linux-Test"; + + serviceConfig = { + Nice = "-5"; + PrivateTmp = true; + Restart = "always"; + User = "palworld"; + WorkingDirectory = "~"; + }; + environment = { + # linux64 directory is required by Valheim. + LD_LIBRARY_PATH = "/var/lib/palworld/linux64:${pkgs.glibc}/lib"; + SteamAppId = "2394010"; + }; + }; +} From 348b7ae5ceb6169af93e81735ff7966c05090084 Mon Sep 17 00:00:00 2001 From: Kopatz <7265381+Kropatz@users.noreply.github.com> Date: Mon, 22 Jan 2024 00:09:15 +0100 Subject: [PATCH 2/2] add palworld --- modules/games/palworld.nix | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/modules/games/palworld.nix b/modules/games/palworld.nix index 597319d..7bc8f4a 100644 --- a/modules/games/palworld.nix +++ b/modules/games/palworld.nix @@ -1,8 +1,9 @@ # valheim.nix {config, pkgs, lib, ...}: let + join = builtins.concatStringsSep " "; in { - networking.firewall.allowedUDPPorts = [ 8221 ]; #5349 ]; + networking.firewall.allowedUDPPorts = [ 8211 ]; #5349 ]; users.users.palworld = { isSystemUser = true; # Valheim puts save data in the home directory. @@ -20,16 +21,22 @@ in { wants = [ "network-online.target" ]; after = [ "network-online.target" ]; - preStart = '' - ${pkgs.steamcmd}/bin/steamcmd \ - +login anonymous \ - +force_install_dir /var/lib/palworld \ - +app_update 2394010 validate \ - +quit - ''; - script = "${pkgs.steam-run}/bin/steam-run /var/lib/palworld/Pal/Binaries/Linux/PalServer-Linux-Test"; - serviceConfig = { + ExecStartPre = join [ + "${pkgs.steamcmd}/bin/steamcmd" + "+force_install_dir /var/lib/palworld" + "+login anonymous" + "+app_update 2394010" + "+quit" + "&& mkdir -p /var/lib/palworld/.steam/sdk64" + "&& cp /var/lib/palworld/linux64/steamclient.so /var/lib/palworld/.steam/sdk64/." + ]; + ExecStart = join [ + "${pkgs.steam-run}/bin/steam-run /var/lib/palworld/Pal/Binaries/Linux/PalServer-Linux-Test Pal" + "--useperfthreads" + "-NoAsyncLoadingThread" + "-UseMultithreadForDS" + ]; Nice = "-5"; PrivateTmp = true; Restart = "always";