bitlbee service: Add option to load libpurple plugins into bitlbee

Changed files
+24 -3
nixos
modules
services
networking
+24 -3
nixos/modules/services/networking/bitlbee.nix
···
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]
···
[defaults]
${cfg.extraDefaults}
'';
+
+
purple_plugin_path =
+
lib.concatMapStringsSep ":"
+
(plugin: "${plugin}/lib/pidgin/")
+
cfg.libpurple_plugins
+
;
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;
···
};
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 ];
};