{ config, lib, pkgs, ... }: with lib; let cfg = config.modules.services.hydrogen-web; in { options.modules.services.hydrogen-web = { enable = mkEnableOption "hydrogen-web"; package = mkOption { type = types.package; default = pkgs.hydrogen-web; }; hostName = mkOption { type = types.str; default = config.networking.hostName; }; matrix = { baseUrl = mkOption { type = types.str; default = "https://matrix.${config.networking.hostName}"; }; serverName = mkOption { type = types.str; default = config.networking.hostName; }; }; tls.acmeHost = mkOption { type = types.str; default = cfg.hostName; }; jitsi.domain = mkOption { type = types.str; default = "jitsi.${cfg.hostName}"; }; }; config = mkIf cfg.enable { services.nginx.virtualHosts.${cfg.hostName} = { useACMEHost = cfg.tls.acmeHost; forceSSL = true; root = cfg.package.override { conf = { defaultHomeServer = cfg.matrix.serverName; }; }; locations."~ \\.(js|css|woff|woff2?|png|jpe?g|svg)$".extraConfig = '' add_header Cache-Control "public, max-age=14400, must-revalidate"; ''; }; }; }