host(koumakan): add whitelisted-web

• Added input 'whitelisted-web':
'https://patchy.soopy.moe/api/v1/repos/soopyc/whitelisted-web/archive/4f73a4b5345bb47c4f1cd56b5dca7f4cac23d5b5.tar.gz?narHash=sha256-PrnYydY6FLsUbbUTqQ5qT5Jd7dO4aS%2BU%2BBgaULeCGyk%3D' (2025-09-28)
• Added input 'whitelisted-web/nixpkgs':
follows 'nixpkgs'

Changed files
+80 -3
creds
sops
koumakan
systems
+6 -2
creds/sops/koumakan/default.yaml
···
root_user: ENC[AES256_GCM,data:q+w4FgnCA2QxWsxM,iv:NojzSMmZ2yq7VyPn7fOYauLpgMOE0NGCyTUQ6slGN2Q=,tag:5FfjO4KH8XfLuymxDgV2iA==,type:str]
root_pass: ENC[AES256_GCM,data:oh/VQDU1dR9YLribrhZeVJxMoY9/7Ri8bloM650j6Ut/vHF6BB4NYY94RngkBYRVkHplF9oKx+Ey13kMyIPvC+EvPczoWKCHJ4pJqq3GgWigFp7ufUDdvY4hBjW7SU7fk0wYOjZYH2JlLqjmU0MsVKSqt66Rq9Si0MU7VACNrJzYDe6KbCbL/YT3DmTvBpPR6ysLCE525rH7Tg2LVyn775Si+vo+KGC5gqGMlw==,iv:8pbJMeuDIcvkI8Uda30i8ote/PRUSSAmaua22gQmbHc=,tag:6hNvVytKXbjrKZMKkQ5pEA==,type:str]
vmetrics_token: ENC[AES256_GCM,data:ZZcCBpLlyjMOh55H44WKVSIcNgU+GVpQf9ApMfNV7Tg7dXtP0gF4Cy0RkgKT5hp2arO23HZB/jZGxAY60IDOr9nHVFih5+e2OaXeu5RPGlqsgpp6EZeBDcFvLBtJvx/3qmijuB92HdUXP8/x4Gr0d52xID9YXr3w/To50fMvK8UPFVwkh3Ck4tU7tYLWrhwNOmLu3jZCRMq47Adn7Gu090Zekie4S+LijB1pJvz9h3n36R1M5NOkEpLVb2MjMxtLLTQkoordLq82Vsvpd704VkZohTU=,iv:hiCRdE7dFGHcWjDEc3ZkXFIiTC+YkvCus3tbwVe8aBc=,tag:HflQTi3SuSgibEGKT0Zi1Q==,type:str]
+
whitelisted-web:
+
entra_secret: ENC[AES256_GCM,data:h5tiggV5MgUby5tZ7oLqxAiJReB9L07XfEzfBWoSkgxJFm3mTDH3jg==,iv:xBi9pBWmyg+KGcGMxTXsabzK/uqcNpHdXdJ36UtiET4=,tag:OFyuvZuXvE/L/jBJSU3Vpw==,type:str]
+
turnstile_key: ENC[AES256_GCM,data:r60Jgabtrkx9vYenlb0u+IM00PbD+v+V4/Vb0JT8Y/7lcoQ=,iv:GfcCLWI+mRlbOr2DDDs6nzWKpABJUP0xtrAyK4xhP9g=,tag:J9MO8UULfIT7nhf7/icuoA==,type:str]
+
ipc_token: ENC[AES256_GCM,data:Klu5jBDkvCSY3b0+MDQNSer6FQqUPOltjS8tYmu2VwL3q0QqRDtfzejJA6rqpsW1hboeTNrYLlZu6VP/NpV8NqH/0NR/C60S/X9JsMADeyiwrWqGw1YRHhFnd+5f8n1C/m6AhfV4OnAHNtWOx7EF9tTPzU4fJf6yU7h+xK828/TnE7PMie1en+TKbaGGyaTr/6cv/ciCzY6GTFkZcB7uokhXs/rJJ1an4KsfTQ==,iv:KsFwwr2uzVa88+42gZCGRjfxuVLFlJ/kIi9KQn4e8GY=,tag:WNOE3y1HgIaILPnLqSgDEQ==,type:str]
sops:
age:
- recipient: age1l3qxt6630dzesdclfm3eqgw3uuhwj09dh6typwlwr6clcv0qhfrqgtj2fk
···
QUlVNExmVGd2QXJwVmRGa0JvMmtocEUK7Zo0Mtj3oZm5Etp61cGbLs+2XP97pjR6
rtfHnuxceJj0+yBugfwgFD1TGJ+6M7z5YCwTx+GAvbPDrmSm2TGrwg==
-----END AGE ENCRYPTED FILE-----
-
lastmodified: "2025-09-20T00:55:07Z"
-
mac: ENC[AES256_GCM,data:yz2jIOwMQumeCWOIWl3z+nYwDbPOZRVw+xV01ZfMZ+I7vi54EtVyjQIbjkcySvrrlztlCU5ysQrDxT5Pm3OczkuJ06mRZ3ICvfpmNZ2zc2OYc9NhGmpwbv3udEs5S/9my6hu7Pis0uJOuEzl7Zv6WUC3s3IUqxeKMuWrif5BAqI=,iv:1ApHTHumPpq3xDwz/QAoa+PLSaedlcH80Wz/+/UEjoA=,tag:/Lwy8042v3bxCHSURomF5Q==,type:str]
+
lastmodified: "2025-09-28T16:46:06Z"
+
mac: ENC[AES256_GCM,data:gWB+a7urGrcH81OoVCMANMRWvHihxXyg7S5IkxhnJ+OFNW+gTB0E7ZV35GOCTnBk0W+pUgL3Rqb63LZ7HSWkCx/iCHwKZXuYFKLsHPp7123E9QTUI1uTcfCiZE/mUT5MD0UQzfv4NwQqZMReMa4vJaodFz1tdvMrDHwbA9LP8eI=,iv:LWY0fMDtGvSLIoPsfm6c/hEFxytXZhXziA5OCa3sM+8=,tag:AF0SrnpyZdgiTMKYIMb/FQ==,type:str]
unencrypted_suffix: _unencrypted
version: 3.10.2
+20 -1
flake.lock
···
"nixpkgs": "nixpkgs_6",
"sops-nix": "sops-nix",
"tangled-core": "tangled-core",
-
"treefmt-nix": "treefmt-nix_3"
+
"treefmt-nix": "treefmt-nix_3",
+
"whitelisted-web": "whitelisted-web"
}
},
"rust-overlay": {
···
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
+
}
+
},
+
"whitelisted-web": {
+
"inputs": {
+
"nixpkgs": [
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1759076896,
+
"narHash": "sha256-PrnYydY6FLsUbbUTqQ5qT5Jd7dO4aS+U+BgaULeCGyk=",
+
"rev": "4f73a4b5345bb47c4f1cd56b5dca7f4cac23d5b5",
+
"type": "tarball",
+
"url": "https://patchy.soopy.moe/api/v1/repos/soopyc/whitelisted-web/archive/4f73a4b5345bb47c4f1cd56b5dca7f4cac23d5b5.tar.gz"
+
},
+
"original": {
+
"type": "tarball",
+
"url": "https://patchy.soopy.moe/soopyc/whitelisted-web/archive/main.tar.gz"
}
},
"zig": {
+5
flake.nix
···
inputs.nixpkgs.follows = "nixpkgs";
};
+
whitelisted-web = {
+
url = "https://patchy.soopy.moe/soopyc/whitelisted-web/archive/main.tar.gz";
+
inputs.nixpkgs.follows = "nixpkgs";
+
};
+
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.2";
inputs.nixpkgs.follows = "nixpkgs";
+1
systems/koumakan/configuration.nix
···
inputs.mystia.nixosModules.vmauth
inputs.mystia.nixosModules.bsky-pds
inputs.hydra.nixosModules.hydra
+
inputs.whitelisted-web.nixosModules.default
inputs.knotserver-module.nixosModules.default
./hardware-configuration.nix
+1
systems/koumakan/services/default.nix
···
./ci
./databases
+
./games
./mirror
./proxies
./scm
+3
systems/koumakan/services/games/default.nix
···
+
{
+
imports = [ ./whitelisted-web.nix ];
+
}
+44
systems/koumakan/services/games/whitelisted-web.nix
···
+
{ _utils, config, ... }:
+
let
+
secrets = _utils.setupSecrets config {
+
namespace = "whitelisted-web";
+
secrets = [
+
"entra_secret"
+
"turnstile_key"
+
"ipc_token"
+
];
+
};
+
in
+
{
+
imports = [
+
secrets.generate
+
(secrets.mkTemplate "whitelisted-web.env" ''
+
ENTRA_CLIENT_SECRET="${secrets.placeholder "entra_secret"}"
+
TURNSTILE_SECRET_KEY="${secrets.placeholder "turnstile_key"}"
+
SHARED_IPC_TOKEN="${secrets.placeholder "ipc_token"}"
+
'')
+
];
+
+
gensokyo.services.whitelisted-web = {
+
enable = true;
+
+
buildConfig = {
+
PUBLIC_STATIC_CONTACT_INFO = ''{"Email": "mailto:Sophie Cheung <me@soopy.moe>"}'';
+
};
+
+
settings = {
+
PORT = "30274";
+
PUBLIC_URL = "https://renko.mist-nessie.ts.net:5173";
+
PUBLIC_TOS_URI_TEMPLATE = "/tos/%LANG%.md";
+
PUBLIC_SERVER_IP = "mc.soopy.moe"; # the public minecraft server IP
+
PUBLIC_TURNSTILE_SITEID = "0x4AAAAAABifUhFToAkxeZDM";
+
PUBLIC_ENTRA_CLIENT_ID = "807b9c9e-69c9-4b9f-b020-01dbf256623b";
+
};
+
+
environmentFile = secrets.getTemplate "whitelisted-web.env";
+
};
+
+
services.nginx.virtualHosts."mc.soopy.moe" = _utils.mkSimpleProxy {
+
port = 30274;
+
};
+
}