{ config, lib, pkgs, ... }: with lib; let cfg = config.modules.services.cinny-web; in { options.modules.services.cinny-web = { enable = mkEnableOption "cinny-web"; package = mkOption { type = types.package; default = pkgs.cinny; }; hostName = mkOption { type = types.str; default = config.networking.hostName; }; matrix.serverName = mkOption { type = types.str; default = config.networking.hostName; }; tls.acmeHost = mkOption { type = types.str; default = cfg.hostName; }; }; config = mkIf cfg.enable { services.nginx.virtualHosts.${cfg.hostName} = { useACMEHost = cfg.tls.acmeHost; forceSSL = true; root = cfg.package.override { conf = { # Index of the default homeserver from `homeserverList` defaultHomeserver = 0; homeserverList = [ cfg.matrix.serverName ]; }; }; locations."~ \\.(js|css|woff|woff2?|png|jpe?g|svg)$".extraConfig = '' add_header Cache-Control "public, max-age=14400, must-revalidate"; ''; }; }; }