{ config, lib, pkgs, ... }:

{
  config = {
    programs.hexchat = {
      enable = true;
      overwriteConfigFiles = true;
      channels = {
        freenode = {
          charset = "UTF-8 (Unicode)";
          userName = "user";
          password = "password";
          loginMethod = "sasl";
          nickname = "user";
          nickname2 = "user_";
          realName = "real_user";
          options = {
            autoconnect = true;
            forceSSL = true;
          };
          servers = [ "chat.freenode.net" "irc.freenode.net" ];
          autojoin = [ "#home-manager" "#nixos" ];
        };
        efnet = {
          options = { forceSSL = true; };
          servers = [
            "irc.choopa.net"
            "irc.colosolutions.net"
            "irc.mzima.net"
            "irc.prison.net"
          ];
          autojoin = [ "#computers" ];
        };
      };
      settings = {
        dcc_dir = "/home/user/Downloads";
        irc_nick1 = "user";
        irc_nick2 = "user_";
        irc_nick3 = "user__";
        irc_user_name = "user";
        irc_real_name = "real user";
        text_font = "Monospace 14";
        text_font_main = "Monospace 14";
        gui_slist_skip = "1"; # Skip network list on start-up
        gui_quit_dialog = "0";
      };
    };

    test.stubs.hexchat = { };

    nmt.script = ''
      assertFileContent \
         home-files/.config/hexchat/hexchat.conf \
         ${./basic-configuration-expected-main-config}
      assertFileContent \
         home-files/.config/hexchat/servlist.conf \
         ${./basic-configuration-expected-serverlist-config}
    '';
  };

}