Unverified Commit 5b0d9c04 authored by Martin Weinelt's avatar Martin Weinelt
Browse files

charybdis, nixos/charybdis: drop

The charybdis-ircd project was archived in June 2021 and replaced by
Solanum, which we have been providing since May 2021.
parent 28727778
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -1128,7 +1128,6 @@
  ./services/networking/cato-client.nix
  ./services/networking/centrifugo.nix
  ./services/networking/cgit.nix
  ./services/networking/charybdis.nix
  ./services/networking/chisel-server.nix
  ./services/networking/cjdns.nix
  ./services/networking/clatd.nix
+4 −0
Original line number Diff line number Diff line
@@ -139,6 +139,10 @@ in
      "cgmanager"
      "enable"
    ] "cgmanager was deprecated by lxc and therefore removed from nixpkgs.")
    (mkRemovedOptionModule [
      "services"
      "charybdis"
    ] "The charybdis module has been removed, the project was archived in 2021.")
    (mkRemovedOptionModule [
      "services"
      "chatgpt-retrieval-plugin"
+0 −126
Original line number Diff line number Diff line
{
  config,
  lib,
  pkgs,
  ...
}:

let
  inherit (lib)
    mkEnableOption
    mkIf
    mkOption
    singleton
    types
    ;
  inherit (pkgs) coreutils charybdis;
  cfg = config.services.charybdis;

  configFile = pkgs.writeText "charybdis.conf" ''
    ${cfg.config}
  '';
in

{

  ###### interface

  options = {

    services.charybdis = {

      enable = mkEnableOption "Charybdis IRC daemon";

      config = mkOption {
        type = types.str;
        description = ''
          Charybdis IRC daemon configuration file.
        '';
      };

      statedir = mkOption {
        type = types.path;
        default = "/var/lib/charybdis";
        description = ''
          Location of the state directory of charybdis.
        '';
      };

      user = mkOption {
        type = types.str;
        default = "ircd";
        description = ''
          Charybdis IRC daemon user.
        '';
      };

      group = mkOption {
        type = types.str;
        default = "ircd";
        description = ''
          Charybdis IRC daemon group.
        '';
      };

      motd = mkOption {
        type = types.nullOr types.lines;
        default = null;
        description = ''
          Charybdis MOTD text.

          Charybdis will read its MOTD from /etc/charybdis/ircd.motd .
          If set, the value of this option will be written to this path.
        '';
      };

    };

  };

  ###### implementation

  config = mkIf cfg.enable (
    lib.mkMerge [
      {
        users.users.${cfg.user} = {
          description = "Charybdis IRC daemon user";
          uid = config.ids.uids.ircd;
          group = cfg.group;
        };

        users.groups.${cfg.group} = {
          gid = config.ids.gids.ircd;
        };

        systemd.tmpfiles.settings."10-charybdis".${cfg.statedir}.d = {
          inherit (cfg) user group;
        };

        environment.etc."charybdis/ircd.conf".source = configFile;

        systemd.services.charybdis = {
          description = "Charybdis IRC daemon";
          wantedBy = [ "multi-user.target" ];
          reloadIfChanged = true;
          restartTriggers = [
            configFile
          ];
          environment = {
            BANDB_DBPATH = "${cfg.statedir}/ban.db";
          };
          serviceConfig = {
            ExecStart = "${charybdis}/bin/charybdis -foreground -logfile /dev/stdout -configfile /etc/charybdis/ircd.conf";
            ExecReload = "${coreutils}/bin/kill -HUP $MAINPID";
            Group = cfg.group;
            User = cfg.user;
          };
        };

      }

      (mkIf (cfg.motd != null) {
        environment.etc."charybdis/ircd.motd".text = cfg.motd;
      })
    ]
  );
}
+0 −63
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  fetchurl,
  autoreconfHook,
  bison,
  flex,
  openssl,
  gnutls,
}:

stdenv.mkDerivation rec {
  pname = "charybdis";
  version = "4.1.2";

  src = fetchFromGitHub {
    owner = "charybdis-ircd";
    repo = "charybdis";
    rev = "${pname}-${version}";
    sha256 = "1lndk0yp27qm8bds4jd204ynxcq92fqmpfb0kkcla5zgky3miks3";
  };

  patches = [
    (fetchurl {
      url = "https://gitlab.alpinelinux.org/alpine/aports/-/raw/d13eb723d7e9512fb2f2516e5934bd927a92eb2c/community/charybdis/fix-missing-include.patch";
      hash = "sha256-8JXYuIjoHQg+l33OjseF5nnd5ZPagBA2/bSa3Il5Te4=";
    })
  ];

  postPatch = ''
    substituteInPlace include/defaults.h --replace 'PKGLOCALSTATEDIR "' '"/var/lib/charybdis'
    substituteInPlace include/defaults.h --replace 'ETCPATH "' '"/etc/charybdis'
  '';

  autoreconfPhase = "sh autogen.sh";

  configureFlags = [
    "--enable-epoll"
    "--enable-ipv6"
    "--enable-openssl=${openssl.dev}"
    "--with-program-prefix=charybdis-"
  ];

  nativeBuildInputs = [
    autoreconfHook
    bison
    flex
  ];
  buildInputs = [
    openssl
    gnutls
  ];

  meta = {
    description = "IRCv3 server designed to be highly scalable";
    homepage = "https://github.com/charybdis-ircd/charybdis";
    license = lib.licenses.gpl2Plus;
    maintainers = with lib.maintainers; [ lassulus ];
    platforms = lib.platforms.unix;
  };

}
+1 −0
Original line number Diff line number Diff line
@@ -409,6 +409,7 @@ mapAliases {
  certmgr-selfsigned = throw "'certmgr-selfsigned' has been renamed to/replaced by 'certmgr'"; # Converted to throw 2025-10-27
  challenger = throw "'challenger' has been renamed to/replaced by 'taler-challenger'"; # Converted to throw 2025-10-27
  charmcraft = throw "charmcraft was removed in Sep 25 following removal of LXD from nixpkgs"; # Added 2025-09-18
  charybdis = throw "charybdis was removed since its upstream repo was archived in 2021"; # Added 2026-01-13
  chatgpt-retrieval-plugin = throw "chatgpt-retrieval-plugin has been removed because it has been marked as broken since at least November 2024."; # Added 2025-09-28
  check-esxi-hardware = throw "'check-esxi-hardware' has been renamed to/replaced by 'nagiosPlugins.check_esxi_hardware'"; # Converted to throw 2025-10-27
  check-mssql-health = throw "'check-mssql-health' has been renamed to/replaced by 'nagiosPlugins.check_mssql_health'"; # Converted to throw 2025-10-27