{ config, pkgs, inputs, lib, ... }: let foundryvtt = pkgs.fetchzip { name = "foundryvtt"; url = "file:///" + ./FoundryVTT-10.290.zip; postFetch = ""; sha256 = "sha256-G4GK76MgDnHsg9dC9Urrww9guJCUTgvMeNzGQ6ez+AQ="; 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"; }; }; }; }