diff --git a/nixos/modules/services/networking/bitlbee.nix b/nixos/modules/services/networking/bitlbee.nix index e72ea20cccee..bd26804788f3 100644 --- a/nixos/modules/services/networking/bitlbee.nix +++ b/nixos/modules/services/networking/bitlbee.nix @@ -7,6 +7,10 @@ let cfg = config.services.bitlbee; bitlbeeUid = config.ids.uids.bitlbee; + bitlbeePkg = if cfg.libpurple_plugins == [] + then pkgs.bitlbee + else pkgs.bitlbee.override { enableLibPurple = true; }; + bitlbeeConfig = pkgs.writeText "bitlbee.conf" '' [settings] @@ -25,6 +29,12 @@ let ${cfg.extraDefaults} ''; + purple_plugin_path = + lib.concatMapStringsSep ":" + (plugin: "${plugin}/lib/pidgin/") + cfg.libpurple_plugins + ; + in { @@ -90,6 +100,15 @@ in ''; }; + libpurple_plugins = mkOption { + type = types.listOf types.package; + default = []; + example = literalExample "[ pkgs.purple-matrix ]"; + description = '' + The list of libpurple plugins to install. + ''; + }; + configDir = mkOption { default = "/var/lib/bitlbee"; type = types.path; @@ -144,14 +163,16 @@ in }; systemd.services.bitlbee = - { description = "BitlBee IRC to other chat networks gateway"; + { + environment.PURPLE_PLUGIN_PATH = purple_plugin_path; + description = "BitlBee IRC to other chat networks gateway"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig.User = "bitlbee"; - serviceConfig.ExecStart = "${pkgs.bitlbee}/sbin/bitlbee -F -n -c ${bitlbeeConfig}"; + serviceConfig.ExecStart = "${bitlbeePkg}/sbin/bitlbee -F -n -c ${bitlbeeConfig}"; }; - environment.systemPackages = [ pkgs.bitlbee ]; + environment.systemPackages = [ bitlbeePkg ]; }; diff --git a/pkgs/applications/networking/instant-messengers/bitlbee/default.nix b/pkgs/applications/networking/instant-messengers/bitlbee/default.nix index 5ee93bd4df5b..abb0a1172973 100644 --- a/pkgs/applications/networking/instant-messengers/bitlbee/default.nix +++ b/pkgs/applications/networking/instant-messengers/bitlbee/default.nix @@ -1,4 +1,5 @@ -{ fetchurl, fetchpatch, stdenv, gnutls, glib, pkgconfig, check, libotr, python }: +{ fetchurl, fetchpatch, stdenv, gnutls, glib, pkgconfig, check, libotr, python, +enableLibPurple ? false, pidgin ? null }: with stdenv.lib; stdenv.mkDerivation rec { @@ -11,20 +12,25 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ] ++ optional doCheck check; - buildInputs = [ gnutls glib libotr python ]; + buildInputs = [ gnutls glib libotr python ] + ++ optional enableLibPurple pidgin; + + preConfigure = optionalString enableLibPurple + "export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${pidgin}/lib/pkgconfig"; configureFlags = [ "--gcov=1" "--otr=1" "--ssl=gnutls" "--pidfile=/var/lib/bitlbee/bitlbee.pid" - ]; + ] + ++ optional enableLibPurple "--purple=1"; - buildPhase = '' + buildPhase = optionalString (!enableLibPurple) '' make install-dev ''; - doCheck = true; + doCheck = !enableLibPurple; # Checks fail with libpurple for some reason meta = { description = "IRC instant messaging gateway";