diff --git a/configuration/services/foundryvtt.nix b/configuration/services/foundryvtt.nix new file mode 100644 index 0000000..7bb2286 --- /dev/null +++ b/configuration/services/foundryvtt.nix @@ -0,0 +1,35 @@ +{ + lib, + config, + flake-inputs, + ... +}: let + domain = "foundryvtt.${config.services.nginx.domain}"; +in { + imports = [flake-inputs.foundryvtt.nixosModules.foundryvtt]; + + services.foundryvtt = { + enable = true; + hostName = domain; + minifyStaticFiles = true; + }; + + # Want to start it manually when I need it, not have it constantly + # running + systemd.services.foundryvtt.wantedBy = lib.mkForce []; + + services.nginx.virtualHosts."${domain}" = let + inherit (config.services.foundryvtt) port; + in { + forceSSL = true; + enableACME = true; + extraConfig = '' + add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always; + ''; + + locations."/" = { + proxyWebsockets = true; + proxyPass = "http://localhost:${toString port}"; + }; + }; +} diff --git a/flake.lock b/flake.lock index 13b0222..3fe3b91 100644 --- a/flake.lock +++ b/flake.lock @@ -256,6 +256,26 @@ "type": "github" } }, + "foundryvtt": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677026752, + "narHash": "sha256-cYeFDzb0kmKQhBuN0vYWoLulCqj3vf7QhvnsPBO66vc=", + "owner": "reckenrode", + "repo": "nix-foundryvtt", + "rev": "6c52bfc6824a3dba673df4894a71193ec32aa399", + "type": "github" + }, + "original": { + "owner": "reckenrode", + "repo": "nix-foundryvtt", + "type": "github" + } + }, "ghc-utils": { "flake": false, "locked": { @@ -499,6 +519,7 @@ "root": { "inputs": { "deploy-rs": "deploy-rs", + "foundryvtt": "foundryvtt", "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable", "nvfetcher": "nvfetcher", diff --git a/flake.nix b/flake.nix index 3f3865c..4c8a805 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,10 @@ url = "git+https://gitea.tlater.net/tlaternet/tlaternet.git"; inputs.nixpkgs.follows = "nixpkgs"; }; + foundryvtt = { + url = "github:reckenrode/nix-foundryvtt"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = {