diff --git a/nixos/modules/services/networking/bitlbee.nix b/nixos/modules/services/networking/bitlbee.nix index 27b7dd71d9e..5e6847097a9 100644 --- a/nixos/modules/services/networking/bitlbee.nix +++ b/nixos/modules/services/networking/bitlbee.nix @@ -16,11 +16,12 @@ let '' [settings] RunMode = Daemon - User = bitlbee + User = bitlbee ConfigDir = ${cfg.configDir} DaemonInterface = ${cfg.interface} DaemonPort = ${toString cfg.portNumber} AuthMode = ${cfg.authMode} + Plugindir = ${pkgs.bitlbee-plugins cfg.plugins}/lib/bitlbee ${lib.optionalString (cfg.hostName != "") "HostName = ${cfg.hostName}"} ${lib.optionalString (cfg.protocols != "") "Protocols = ${cfg.protocols}"} ${cfg.extraSettings} @@ -72,7 +73,7 @@ in Open -- Accept connections from anyone, use NickServ for user authentication. Closed -- Require authorization (using the PASS command during login) before allowing the user to connect at all. Registered -- Only allow registered users to use this server; this disables the register- and the account command until the user identifies himself. - ''; + ''; }; hostName = mkOption { @@ -85,6 +86,15 @@ in ''; }; + plugins = mkOption { + type = types.listOf types.package; + default = []; + example = literalExample "[ pkgs.bitlbee-facebook ]"; + description = '' + The list of bitlbee plugins to install. + ''; + }; + configDir = mkOption { default = "/var/lib/bitlbee"; type = types.path; @@ -107,14 +117,14 @@ in default = ""; description = '' Will be inserted in the Settings section of the config file. - ''; + ''; }; extraDefaults = mkOption { default = ""; description = '' Will be inserted in the Default section of the config file. - ''; + ''; }; }; @@ -138,7 +148,7 @@ in gid = config.ids.gids.bitlbee; }; - systemd.services.bitlbee = + systemd.services.bitlbee = { description = "BitlBee IRC to other chat networks gateway"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; diff --git a/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix b/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix new file mode 100644 index 00000000000..4e05e7cae97 --- /dev/null +++ b/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix @@ -0,0 +1,20 @@ +{ stdenv, bitlbee }: + +with stdenv.lib; + +plugins: + +stdenv.mkDerivation { + inherit bitlbee plugins; + name = "bitlbee-plugins"; + buildInputs = [ bitlbee plugins ]; + phases = [ "installPhase" ]; + installPhase = '' + mkdir -p $out/lib/bitlbee + for plugin in $plugins; do + for thing in $(ls $plugin/lib/bitlbee); do + ln -s $plugin/lib/bitlbee/$thing $out/lib/bitlbee/ + done + done + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d6b79ca4d94..f057d3f4a41 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10829,6 +10829,8 @@ let bibletime = callPackage ../applications/misc/bibletime { }; bitlbee = callPackage ../applications/networking/instant-messengers/bitlbee { }; + bitlbee-plugins = callPackage ../applications/networking/instant-messengers/bitlbee/plugins.nix { }; + bitlbee-facebook = callPackage ../applications/networking/instant-messengers/bitlbee-facebook { }; bitmeter = callPackage ../applications/audio/bitmeter { };