Nixos-Configuration/modules/nixos/common/arma.nix

71 lines
1.7 KiB
Nix

{
lib,
config,
pkgs,
...
}:
let
cfg = config.services.arma;
in
{
options.services.arma = {
enable = lib.mkEnableOption "enable arma";
dataDir = lib.mkOption {
type = lib.types.str;
default = "/var/lib/steam";
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
steamcmd
curl
steam-run
];
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"steamcmd"
"steam-run"
"steam-unwrapped"
];
# Create steam user
users = {
users.steam = {
isSystemUser = true;
home = cfg.dataDir;
createHome = true;
shell = pkgs.bash;
group = "steam";
};
groups.steam = { };
};
systemd.tmpfiles.rules = [
"d ${cfg.dataDir}/reforger 0755 steam steam -"
"d ${cfg.dataDir}/reforger/configs 0755 steam steam -"
"d ${cfg.dataDir}/reforger/profile 0755 steam steam -"
"d ${cfg.dataDir}/reforger/workshop 0755 steam steam -"
];
systemd.services = {
arma = {
description = "arma game server";
wantedBy = [ "multi-user.target" ];
environment = {
ARMA_DIR = "${cfg.dataDir}";
};
# path = with pkgs; [
# curl
# steamcmd
# steam-run
# ];
# preStart = "${pkgs.arma-scripts}/scripts/update.sh";
serviceConfig = {
User = "steam";
TimeoutStartSec = "infinity";
WorkingDirectory = "${cfg.dataDir}/reforger";
ExecStart = "${lib.getExe pkgs.steam-run} ${cfg.dataDir}/reforger/ArmaReforgerServer -config ${cfg.dataDir}/reforger/Configs/default.json -maxFPS 60";
};
};
};
};
}