{ config, lib, pkgs, ... }: let cfg = config.orbekk.valheim-server; statePath = "/var/lib/${cfg.stateDir}"; in { options = { orbekk.valheim-server = { enable = lib.mkEnableOption "Enable valheim server"; programDir = lib.mkOption { type = lib.types.str; default = null; }; stateDir = lib.mkOption { type = lib.types.str; default = "valheim"; }; }; }; config = lib.mkIf cfg.enable { systemd.services.valheim-server = { description = "Valheim server"; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; path = with pkgs; [ steam.run ]; serviceConfig = { DynamicUser = true; StateDirectory = cfg.stateDir; }; environment = { HOME = statePath; }; script = '' cd ${cfg.programDir} export templdpath=$LD_LIBRARY_PATH export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH export SteamAppId=892970 steam-run ./valheim_server.x86_64 -name "doomsday" -port 3400 -world "doomsday" -password "$(cat ${statePath}/password.txt)" -savedir ${statePath} ''; }; }; }