{ pkgs, lib, ... }: { services.caddy = { enable = true; virtualHosts = { "matrix.broccoli.town" = { extraConfig = '' reverse_proxy /_matrix/* http://localhost:8008 reverse_proxy /_synapse/client/* http://localhost:8008 ''; }; "broccoli.town:8448" = { extraConfig = '' reverse_proxy http://localhost:8008 ''; }; "chat.broccoli.town" = { extraConfig = '' header { X-Frame-Options "SAMEORIGIN" X-XSS-Protection "1; mode=block" X-Content-Type-Options "nosniff" X-Robots-Tag "noindex, noarchive, nofollow" } root * ${pkgs.element-web.override { conf = { default_server_config."m.homeserver" = { "base_url" = "https://matrix.broccoli.town"; "server_name" = "matrix.broccoli.town"; }; }; } } file_server ''; }; "danielpatterson.dev" = { extraConfig = '' root * /srv/site/danielpatterson.dev file_server ''; }; }; }; }