{ config, pkgs, inputs, lib, ... }: let foundryvtt = pkgs.fetchzip { name = "foundryvtt"; url = "file:///" + ./FoundryVTT-10.288.zip; postFetch = ""; sha256 = "sha256-rnYtyUf3ymZlc+4zarez3LcQ/X+RZiY2zP4W3yXLfso="; stripRoot = false; }; in { imports = [ ../nginx.nix ]; services.nginx = { clientMaxBodySize = "300M"; virtualHosts = { "foundryvtt.peninsula.industries" = { forceSSL = true; enableACME = true; locations."/" = { proxyPass = "http://localhost:30000"; proxyWebsockets = true; }; }; }; virtualHosts = { "foundryvtt-test.peninsula.industries" = { forceSSL = true; enableACME = true; locations."/" = { proxyPass = "http://localhost:30001"; 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 = "22.05"; 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"; }; }; }; containers.foundryvtt-test = { autoStart = true; forwardPorts = [{ containerPort = 30001; hostPort = 30001; }]; config = { config, pkgs, ... }: { system.stateVersion = "22.05"; 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 --port=30001 ''; serviceConfig.Restart = "always"; }; }; }; }