dr-server: run Dungeon Runners Reborn headless under Wine
New service module on FredOS-Mediaserver that launches the friend's Windows-only Unity server (DR_Server.exe -batchmode -nographics) in a Win64 wine prefix. wineboot initializes the prefix on first start. Opens auth/game/queue ports 2110, 2603-2606 (TCP+UDP). Build files staged separately at ~/dr-server-build on the server; sudo-move into /var/lib/dr-server/Build after the rebuild. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
38e2275b0b
commit
8b83cf9bfb
2 changed files with 70 additions and 0 deletions
|
|
@ -19,6 +19,7 @@
|
||||||
# Services #
|
# Services #
|
||||||
./services/server-permissions.nix
|
./services/server-permissions.nix
|
||||||
./services/game-servers.nix
|
./services/game-servers.nix
|
||||||
|
./services/dr-server.nix
|
||||||
./services/qbittorrent-nox.nix
|
./services/qbittorrent-nox.nix
|
||||||
./services/nginx.nix
|
./services/nginx.nix
|
||||||
./services/go2rtc.nix
|
./services/go2rtc.nix
|
||||||
|
|
|
||||||
69
services/dr-server.nix
Normal file
69
services/dr-server.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
wine = pkgs.wineWowPackages.stable;
|
||||||
|
dataDir = "/var/lib/dr-server";
|
||||||
|
buildDir = "${dataDir}/Build";
|
||||||
|
prefix = "${dataDir}/wine";
|
||||||
|
logDir = "${dataDir}/log";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf (config.networking.hostName == "FredOS-Mediaserver") {
|
||||||
|
users.users.dr-server = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "dr-server";
|
||||||
|
home = dataDir;
|
||||||
|
description = "Dungeon Runners Reborn server";
|
||||||
|
};
|
||||||
|
users.groups.dr-server = {};
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d ${dataDir} 0750 dr-server dr-server -"
|
||||||
|
"d ${buildDir} 0750 dr-server dr-server -"
|
||||||
|
"d ${prefix} 0750 dr-server dr-server -"
|
||||||
|
"d ${logDir} 0750 dr-server dr-server -"
|
||||||
|
];
|
||||||
|
|
||||||
|
## <----- DUNGEON RUNNERS REBORN ----> ##
|
||||||
|
# Windows-only Unity build run headless under Wine. Initializes a
|
||||||
|
# Win64 prefix on first boot via wineboot, then launches the exe
|
||||||
|
# with Unity's batch flags. Only the friend's exe is in this tree —
|
||||||
|
# the matching client is needed on connecting machines.
|
||||||
|
systemd.services.dr-server = {
|
||||||
|
description = "Dungeon Runners Reborn (Wine, headless Unity)";
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
path = [ wine pkgs.coreutils ];
|
||||||
|
environment = {
|
||||||
|
WINEPREFIX = prefix;
|
||||||
|
WINEARCH = "win64";
|
||||||
|
WINEDEBUG = "-all";
|
||||||
|
HOME = dataDir;
|
||||||
|
DISPLAY = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
preStart = ''
|
||||||
|
if [ ! -f "${prefix}/system.reg" ]; then
|
||||||
|
${wine}/bin/wineboot --init
|
||||||
|
${wine}/bin/wineserver -w
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
unitConfig.ConditionPathExists = "${buildDir}/DR_Server.exe";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
User = "dr-server";
|
||||||
|
Group = "dr-server";
|
||||||
|
WorkingDirectory = buildDir;
|
||||||
|
ExecStart = "${wine}/bin/wine64 DR_Server.exe -batchmode -nographics -logFile ${logDir}/server.log";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "10s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 2110 2603 2604 2605 2606 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 2110 2603 2604 2605 2606 ];
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue