{ lib, config, ... }: { options.services.panoramax = { subdomain = lib.mkOption { type = lib.types.str; description = "subdomain of base domain that panoramax will be hosted at"; default = "panoramax"; }; }; config = lib.mkIf (config.services.panoramax.enable && config.host.reverse_proxy.enable) { host = { reverse_proxy.subdomains.${config.services.panoramax.subdomain} = { target = "http://localhost:${toString config.services.panoramax.port}"; websockets.enable = true; forwardHeaders.enable = true; extraConfig = '' # allow large file uploads for panoramic images client_max_body_size 100M; # set timeout for image processing proxy_read_timeout 300s; proxy_send_timeout 300s; send_timeout 300s; proxy_redirect off; ''; }; }; }; }