{ ... }: {
  services.ergochat = {
    enable = true;
    settings = {
      accounts = {
        authentication-enabled = true;
        multiclient = {
          allowed-by-default = true;
          always-on = "opt-out";
          auto-away = "opt-out";
          enabled = true;
        };
        registration = {
          allow-before-connect = true;
          bcrypt-cost = 4;
          email-verification = { enabled = false; };
          enabled = true;
          throttling = {
            duration = "10m";
            enabled = true;
            max-attempts = 30;
          };
        };
      };
      channels = {
        default-modes = "+ntC";
        registration = { enabled = true; };
      };
      datastore = {
        autoupgrade = true;
        path = "/var/lib/ergo/ircd.db";
      };
      history = {
        autoreplay-on-join = 0;
        autoresize-window = "3d";
        channel-length = 2048;
        chathistory-maxmessages = 100;
        client-length = 256;
        enabled = true;
        restrictions = {
          expire-time = "1w";
          grace-period = "1h";
          query-cutoff = "none";
        };
        retention = {
          allow-individual-delete = false;
          enable-account-indexing = false;
        };
        tagmsg-storage = {
          default = false;
          whitelist = [ "+draft/react" "+react" ];
        };
        znc-maxmessages = 2048;
      };
      limits = {
        awaylen = 390;
        channellen = 64;
        identlen = 20;
        kicklen = 390;
        nicklen = 32;
        topiclen = 390;
      };
      network = { name = "balsoftnet"; };
      server = {
        casemapping = "permissive";
        check-ident = false;
        enforce-utf = true;
        forward-confirm-hostnames = false;
        ip-cloaking = { enabled = false; };
        ip-limits = {
          count = false;
          throttle = false;
        };
        listeners = { ":6667" = { }; };
        lookup-hostnames = false;
        max-sendq = "1M";
        name = "balsoft.ru";
        relaymsg = { enabled = false; };
      };
    };
  };
  services.thelounge = {
    enable = true;
    extraConfig = {
      host = "localhost";
      reverseProxy = true;
      lockNetwork = true;
      defaults = {
        host = "localhost";
        name = "balsoftnet";
        port = 6667;
        tls = false;
        nick = "user%%%";
        leaveMessage = "<3";
        join = "#klananas";
      };
    };
    port = 9857;
    public = true;
  };
  services.nginx.virtualHosts."chat.balsoft.ru" = {
    forceSSL = true;
    enableACME = true;
    locations."/".proxyPass = "http://localhost:9857";
    basicAuthFile = "/var/lib/chat.passwd";
  };
}