dotfiles/nixos/boxes/vpsfree1/foundryvtt.nix

80 lines
2.1 KiB
Nix

{ 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, ... }: {
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, ... }: {
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";
};
};
};
}