{ ... }:
{
  services.matrix-synapse = {
    enable = true;
    settings = {
      server_name = "nekover.se";
      public_baseurl = "https://matrix.nekover.se";
      database = {
        name = "psycopg2";
        args.password = "synapse";
      };
      email = {
        smtp_host = "mail.grzb.de";
        smtp_port = 465;
        smtp_user = "matrix";
        force_tls = true;
        notif_from = "Nekoverse Matrix Server <nyareply@nekover.se>";
      };
      max_upload_size = "500M";
      signing_key_path = "/secrets/matrix-homeserver-signing-key.secret";
      admin_contact = "mailto:admin@nekover.se";
      web_client_location = "https://element.nekover.se";
      turn_uris = [
        "turns:turn.nekover.se?transport=udp"
        "turns:turn.nekover.se?transport=tcp"
      ];
      turn_user_lifetime = 86400000;
      turn_allow_guests = true;
    };
    extraConfigFiles = [
      "/secrets/matrix-registration-shared-secret.secret"
      "/secrets/matrix-turn-shared-secret.secret"
      "/secrets/matrix-email-smtp-pass.secret"
    ];
  };
}