{ lib, ... }:
{
  services.znc = {
    enable = true;
    useLegacyConfig = false;
    mutable = true;
    config = {
      Listener.l = {
        AllowIRC = true;
        AllowWeb = true;
        IPv4 = true;
        IPv6 = true;
        Port = 5000;
        SSL = false;
        URIPrefix = "/";
      };
      User.amadaluzia = {
        Admin = true;
        Allow = "*";
        AltNick = "amadaluzia_";
        AppendTimestamp = false;
        AuthOnlyViaModule = false;
        AutoClearChanBuffer = true;
        AutoClearQueryBuffer = true;
        ChanBufferSize = 50;
        DenyLoadMod = false;
        DenySetBindHost = false;
        Ident = "amadaluzia";
        JoinTries = 10;
        LoadModule = [
          "chansaver"
          "controlpanel"
        ];
        MaxJoins = 0;
        MaxNetworks = 1;
        MaxQueryBuffers = 50;
        MultiClients = true;
        Nick = "amadaluzia";
        NoTrafficTimeout = 180;
        PrependTimestamp = true;
        QueryBufferSize = 50;
        QuitMsg = "Hi, this is Paul Allen. I'm being called away to London for a few days. Meredith, I'll call you when I get back. Hasta la vista, baby.";
        RealName = "Artur Manuel";
        StatusPrefix = "*";
        TimestampFormat = "[%H:%M:%S]";

        Network = {
          ATL = {
            FloodBurst = 9;
            FloodRate = "2.00";
            IRCConnectEnabled = true;
            JoinDelay = 0;
            LoadModule = [ "simple_away" ];
            Server = "irc.atl.chat +6697";
            TrustAllCerts = false;
            TrustPKI = true;

            Chan = {
              "#general" = { };
              "#linux" = { };
              "#support" = { };
            };
          };

          libera = {
            FloodBurst = 9;
            FloodRate = "2.00";
            IRCConnectEnabled = true;
            JoinDelay = 0;
            LoadModule = "simple_away";
            Server = "irc.libera.chat +6697";
            TrustAllCerts = false;
            TrustPKI = true;
            Chan = lib.genAttrs [
              "##programming"
              "##rust"
              "#linux"
              "#kernel"
              "#osdev"
              "#nixos"
              "#gentoo"
              "#gentoo-chat"
              "#archlinux"
              "#archlinux-offtopic"
              "#debian"
              "#voidlinux"
              "#opensuse"
              "#opensuse-factory"
              "#openbsd"
              "#openbsd-social"
              "#freebsd"
              "#go-nuts"
              "#zig"
              "#C++"
              "#C++-general"
              "#haskell"
              "#nim"
              "#lisp"
              "#esolangs"
              "#emacs"
              "#emacs-social"
              "#nicotine+"
            ] (_: { });
          };
        };
        Pass.password = {
          Hash = "15767453f2fa83a2ed1c7a1870ea8f154aa2e8b1910fd221471b4e548cd2bede";
          Method = "SHA256";
          Salt = "16*z9hcv07WI,m))lZD0";
        };
      };
    };
  };
}
