From ce6fe1a61be52e6cb6d0d0f11ec917d31a93a7b7 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 2 Jul 2017 18:58:31 +0100 Subject: [PATCH 1/2] bitlbee: Add optional libpurple dependency --- .../instant-messengers/bitlbee/default.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/bitlbee/default.nix b/pkgs/applications/networking/instant-messengers/bitlbee/default.nix index 5ee93bd4df5..abb0a117297 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"; From 65e38b7c52976007a2bed5d6b971073cdb9f5bbd Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sun, 2 Jul 2017 19:06:44 +0100 Subject: [PATCH 2/2] bitlbee service: Add option to load libpurple plugins into bitlbee --- nixos/modules/services/networking/bitlbee.nix | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/networking/bitlbee.nix b/nixos/modules/services/networking/bitlbee.nix index e72ea20ccce..bd26804788f 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 ]; };