{ config, pkgs, inputs, lib, ... }: let foundryvtt = pkgs.fetchzip { name = "foundryvtt"; url = "file:///" + ./FoundryVTT-11.315.zip; postFetch = ""; sha256 = "sha256-i3U6jfl2zFcHRzK04v8+tcPfUfkvxY8Jifxoxms4VUU="; stripRoot = false; }; in { imports = [../nginx.nix]; services.nginx = { virtualHosts = { "foundryvtt.peninsula.industries" = { forceSSL = true; enableACME = true; locations."/" = { proxyPass = "http://localhost:30000"; proxyWebsockets = true; }; }; }; }; containers.foundryvtt = { autoStart = true; forwardPorts = [ { containerPort = 30000; hostPort = 30000; } ]; bindMounts = { "/var/lib/foundryvtt" = { hostPath = "/var/lib/foundryvtt"; isReadOnly = false; }; }; config = { config, pkgs, ... }: { system.stateVersion = "23.11"; systemd.services."foundryvtt" = { requires = ["network-online.target"]; wantedBy = ["multi-user.target"]; script = '' mkdir -p /var/lib/foundryvtt ${pkgs.nodejs-18_x}/bin/node ${foundryvtt}/resources/app/main.js --dataPath=/var/lib/foundryvtt ''; serviceConfig.Restart = "always"; }; }; }; }