wog: World of Guildhall at wog.nordhammer.it

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rope 2026-10-23 22:55:07 +01:00
parent c5471ab7cd
commit dd6f17c335
6 changed files with 53 additions and 0 deletions

View file

@ -128,6 +128,7 @@ in
./services/flowtrack.nix ./services/flowtrack.nix
./services/guildhall.nix ./services/guildhall.nix
./services/guildhall-join.nix ./services/guildhall-join.nix
./services/wog.nix
./services/hardware-health.nix ./services/hardware-health.nix
./services/wan-watchdog.nix ./services/wan-watchdog.nix
./services/tv-detox.nix ./services/tv-detox.nix

21
flake.lock generated
View file

@ -502,6 +502,7 @@
"redlib": "redlib", "redlib": "redlib",
"stardew-tracker": "stardew-tracker", "stardew-tracker": "stardew-tracker",
"stylix": "stylix", "stylix": "stylix",
"wog": "wog",
"zen-browser": "zen-browser" "zen-browser": "zen-browser"
} }
}, },
@ -659,6 +660,26 @@
"type": "github" "type": "github"
} }
}, },
"wog": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1792792362,
"narHash": "sha256-7DYScQSd/DzW9PpKWeDMc8BN+MVLhtv4PLodSYJ9tpY=",
"ref": "refs/heads/main",
"rev": "71dd99795a28f681f8ac3c48cff3f2cf8606c75e",
"revCount": 1,
"type": "git",
"url": "https://forg.gregersen.it/rope/wog"
},
"original": {
"type": "git",
"url": "https://forg.gregersen.it/rope/wog"
}
},
"zen-browser": { "zen-browser": {
"inputs": { "inputs": {
"home-manager": [ "home-manager": [

View file

@ -50,6 +50,11 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
wog = {
url = "git+https://forg.gregersen.it/rope/wog";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = { stylix = {
url = "github:nix-community/stylix/release-26.05"; url = "github:nix-community/stylix/release-26.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -66,6 +71,7 @@
, stardew-tracker , stardew-tracker
, flowtrack , flowtrack
, guildhall , guildhall
, wog
, ... , ...
} @ inputs: } @ inputs:
let let
@ -78,6 +84,7 @@
stardew-tracker.nixosModules.default stardew-tracker.nixosModules.default
flowtrack.nixosModules.default flowtrack.nixosModules.default
guildhall.nixosModules.default guildhall.nixosModules.default
wog.nixosModules.default
./settings/stylix.nix ./settings/stylix.nix
]; ];
mkHost = hostname: extraModules: nixpkgs.lib.nixosSystem { mkHost = hostname: extraModules: nixpkgs.lib.nixosSystem {

View file

@ -75,6 +75,7 @@ in
{ domain = "panel.nordhammer.it"; policy = "one_factor"; subject = admin; } { domain = "panel.nordhammer.it"; policy = "one_factor"; subject = admin; }
{ domain = "stardew.nordhammer.it"; policy = "one_factor"; subject = household; } { domain = "stardew.nordhammer.it"; policy = "one_factor"; subject = household; }
{ domain = "guildhall.nordhammer.it"; policy = "one_factor"; } { domain = "guildhall.nordhammer.it"; policy = "one_factor"; }
{ domain = "wog.nordhammer.it"; policy = "one_factor"; }
# Health data: only the two people the app knows about. # Health data: only the two people the app knows about.
{ domain = "flowtrack.nordhammer.it"; policy = "one_factor"; subject = [ "user:kayla" "user:fred" ]; } { domain = "flowtrack.nordhammer.it"; policy = "one_factor"; subject = [ "user:kayla" "user:fred" ]; }
]; ];

View file

@ -219,6 +219,13 @@ in
''; '';
locations."/join/".proxyPass = "http://127.0.0.1:8099"; locations."/join/".proxyPass = "http://127.0.0.1:8099";
}; };
# World of Guildhall, same keying as Guildhall. Same accounts, no
# invite path of its own.
"wog.nordhammer.it" = lib.recursiveUpdate (protectedProxy 8100) {
locations."/".extraConfig = autheliaAuthConfig + ''
proxy_set_header Remote-User $user;
'';
};
# Pelican game panel. Can't turn off its own login (no such option # Pelican game panel. Can't turn off its own login (no such option
# upstream), so Authelia is the outer gate and the Pelican account # upstream), so Authelia is the outer gate and the Pelican account

16
services/wog.nix Normal file
View file

@ -0,0 +1,16 @@
# services/wog.nix — World of Guildhall, the WoW Classic–style co-op game.
#
# The game and NixOS module live in the standalone wog flake. nginx is the
# only public listener; Authelia admits any account (Guildhall's invites
# work here too), and the game keys each player on the Remote-User it
# passes through. Nightly snapshots sit next to Guildhall's.
{ config, lib, ... }:
{
config = lib.mkIf (config.networking.hostName == "FredOS-Mediaserver") {
services.wog = {
enable = true;
port = 8100;
backup.directory = "/mnt/disk2/backups/wog";
};
};
}