dotfiles/nixos/systems/omen/arma3.nix

114 lines
3 KiB
Nix
Raw Normal View History

{
inputs',
pkgs,
...
}: {
ucontainers."arma3" = {
network = [
{
hostAddress = "10.99.99.1/24";
guestAddress = "10.99.99.2/24";
hostInterface = "arma3";
guestInterface = "eth0";
}
];
settings = {
ephemeral = true;
bind = [
"/etc/resolv.conf"
"/var/lib/arma3/steam:/home/steam/Steam"
"/var/lib/arma3/Steam:/home/steam/.local/share/Steam"
"/var/lib/arma3/steamapps:/var/lib/steam"
"/tmp/arma-secret/:/secret"
];
};
path =
(inputs'.nixng.nglib.makeSystem {
inherit (pkgs.stdenv) system;
inherit (inputs') nixpkgs;
name = "arma3";
config = let
inherit
(pkgs.lib)
getExe
getExe'
;
in {
dumb-init = {
enable = true;
type.services = {};
};
nixpkgs.pkgs = pkgs;
init.services.network = {
enabled = true;
script = pkgs.writeShellScript "network-start" ''
ip addr add "10.99.99.2/24" dev "eth0"
ip link set "eth0" up
ip route add "10.99.99.0/24" dev "eth0"
ip route add default via "10.99.99.1" dev "eth0"
touch /etc/hosts
exec sleep infinity
'';
};
users.users."steam" = {
uid = 1001;
home = "/home/steam";
group = "steam";
};
users.groups."steam" = {
gid = 1001;
};
init.services.steam-login = {
enabled = true;
script = pkgs.writeShellScript "steam-login-start" ''
mkdir -p /home/steam
chown steam:steam -R /home/steam
chown steam:steam -R /var/lib/steam
HOME=/home/steam USER=steam chpst -U steam:steam -u steam:steam ${getExe pkgs.steamcmd} \
+force_install_dir /var/lib/steam \
+login "$(cat /secret/user)" "$(cat /secret/password)" \
+app_update 233780 validate \
+quit
exec sleep infinity
'';
};
init.services.arma3 = {
dependencies = [
"steam-login"
];
enabled = true;
script = pkgs.writeShellScript "arma3-start" ''
sleep 15
cd /var/lib/steam
PATH=${pkgs.coreutils}/bin:$PATH LD_LIBRARY_PATH=${pkgs.stdenv.cc.cc.lib}/lib:$PWD exec \
chpst -u steam:steam \
${getExe' pkgs.glibc "ld.so"} ./arma3server_x64 \
-config=./server.cfg \
-mod=./mods/@ACE \
-mod=./mods/@Antistasi \
-mod=./mods/@CBA_A3 \
-mod=./mods/@RHSAFRF \
-mod=./mods/@RHSGREF \
-mod=./mods/@RHSSAF \
-mod=./mods/@RHSUSAF
'';
};
};
})
.config
.system
.build
.toplevel;
};
}