{ config, lib, ... }:
{
  imports = [ ./nginx ];

  config = lib.mkIf config.services.matrix-synapse.enable {
    services.matrix-synapse = {
      settings = {
        server_name = "nixfox.ca";
        public_baseurl = "https://matrix.nixfox.ca";
        suppress_key_server_warning = true;

        # Email notifications about account status
        email = {
          notif_from = "NixFox Matrix <noreply@nixfox.ca>";
          smtp_host = "mx.nixfox.ca";
          smtp_user = "noreply@nixfox.ca";
          smtp_pass = config.secrets.mailPass.nixfoxNoReply;
          enable_tls = true;
          smtp_port = 587;
          require_transport_security = true;
        };

        # Disable registration without email
        registrations_require_3pid = [ "email" ];

        # Set the type of database
        database.name = "sqlite3";

        # Allow account registration
        enable_registration = true;

        # General settings
        max_upload_size = "60M";
        burst_count = 15;
      };
    };

    environment.persistence."/persist".directories = [ "/var/lib/matrix-synapse" ];
  };
}
