{ self, modulesPath, pkgs, config, secrets, ... }: { imports = [ "${modulesPath}/virtualisation/amazon-image.nix" self.nixosModules.common self.nixosModules.prompt self.nixosModules.server ]; networking = { hostName = "quasar"; domain = "consortium.chat"; firewall.allowedTCPPorts = [ 80 443 ]; }; services.postgresql = { enable = true; }; services.caddy = { enable = true; virtualHosts = { "${config.networking.domain}".extraConfig = '' reverse_proxy localhost:8008 header Strict-Transport-Security "max-age=63072000; includeSubDomains;" ''; "matrix.${config.networking.domain}".extraConfig = '' reverse_proxy /_matrix/* localhost:8008 reverse_proxy /_synapse/client/* localhost:8008 ''; "admin.${config.networking.domain}".extraConfig = '' root * ${pkgs.synapse-admin} file_server ''; }; }; services.matrix-synapse = { enable = true; settings = { server_name = config.networking.domain; serve_server_wellknown = true; registration_shared_secret = secrets.synapse."consortium.chat".registration-shared-secret; macaroon_secret_key = secrets.synapse."consortium.chat".macaroon-secret-key; form_secret = secrets.synapse."consortium.chat".form-secret; }; }; promptEmoji = "🌟"; time.timeZone = "America/Los_Angeles"; system.stateVersion = "24.05"; }