{
  lib,
  config,
  ...
}:
with lib;
{
  options.machine.synapse = {
    enable = mkEnableOption "Synapse";
    element = {
      enable = mkEnableOption "Elemenet web";
      domain = mkOption {
        type = types.nullOr types.str;
        default = "chat.${config.machine.synapse.domain}";
        description = "Domain name.";
      };
    };
    domain = mkOption {
      type = types.str;
      default = "example.com";
      description = "Domain name.";
    };
    port = mkOption {
      type = types.port;
      default = 8008;
      description = "Listen port.";
    };
    metrics = {
      enable = mkEnableOption "Synapse metrics";
      port = mkOption {
        type = types.port;
        default = 9000;
        description = "Listen port.";
      };
    };
  };
}
