diff --git a/nixos/doc/manual/release-notes/rl-1803.xml b/nixos/doc/manual/release-notes/rl-1803.xml
index 20f23261b60..e67f1448466 100644
--- a/nixos/doc/manual/release-notes/rl-1803.xml
+++ b/nixos/doc/manual/release-notes/rl-1803.xml
@@ -347,6 +347,11 @@ following incompatible changes:
The better-performing libevent backend is now enabled by default.
+
+
+ withCommunityModules now passes through the modules to .
+ Use withOnlyInstalledCommunityModules for modules that should not be enabled directly, e.g lib_ldap.
+
diff --git a/nixos/modules/services/networking/prosody.nix b/nixos/modules/services/networking/prosody.nix
index a7b43fb78a9..d57ebb61f63 100644
--- a/nixos/modules/services/networking/prosody.nix
+++ b/nixos/modules/services/networking/prosody.nix
@@ -362,6 +362,12 @@ in
description = "Enable custom modules";
};
+ extraPluginPaths = mkOption {
+ type = types.listOf types.path;
+ default = [];
+ description = "Addtional path in which to look find plugins/modules";
+ };
+
virtualHosts = mkOption {
description = "Define the virtual hosts";
@@ -411,16 +417,18 @@ in
config = mkIf cfg.enable {
- environment.systemPackages = [ pkgs.prosody ];
+ environment.systemPackages = [ cfg.package ];
environment.etc."prosody/prosody.cfg.lua".text = ''
pidfile = "/var/lib/prosody/prosody.pid"
-
log = "*syslog"
data_path = "/var/lib/prosody"
+ plugin_paths = {
+ ${lib.concatStringsSep ", " (map (n: "\"${n}\"") cfg.extraPluginPaths) }
+ }
${ optionalString (cfg.ssl != null) (createSSLOptsStr cfg.ssl) }
@@ -434,7 +442,7 @@ in
${ lib.concatStringsSep "\n\ \ " (lib.mapAttrsToList
(name: val: optionalString val "${toLua name};")
cfg.modules) }
-
+ ${ lib.concatStringsSep "\n" (map (x: "${toLua x};") cfg.package.communityModules)}
${ lib.concatStringsSep "\n" (map (x: "${toLua x};") cfg.extraModules)}
};
diff --git a/pkgs/servers/xmpp/prosody/default.nix b/pkgs/servers/xmpp/prosody/default.nix
index 1567a4a6b30..2d0e1a529da 100644
--- a/pkgs/servers/xmpp/prosody/default.nix
+++ b/pkgs/servers/xmpp/prosody/default.nix
@@ -4,6 +4,7 @@
, withDBI ? true, luadbi ? null
# use withExtraLibs to add additional dependencies of community modules
, withExtraLibs ? [ ]
+, withOnlyInstalledCommunityModules ? [ ]
, withCommunityModules ? [ ] }:
assert withLibevent -> luaevent != null;
@@ -38,7 +39,8 @@ stdenv.mkDerivation rec {
sha256 = "0nfx3lngcy88nd81gb7v4kh3nz1bzsm67bxgpd2lprk54diqcrz1";
};
- buildInputs = [ lua5 makeWrapper libidn openssl ];
+ buildInputs = [ lua5 makeWrapper libidn openssl ]
+ ++ optional withDBI luadbi;
configureFlags = [
"--ostype=linux"
@@ -49,7 +51,7 @@ stdenv.mkDerivation rec {
postInstall = ''
${concatMapStringsSep "\n" (module: ''
cp -r $communityModules/mod_${module} $out/lib/prosody/modules/
- '') withCommunityModules}
+ '') (withCommunityModules ++ withOnlyInstalledCommunityModules)}
wrapProgram $out/bin/prosody \
--set LUA_PATH '${luaPath};' \
--set LUA_CPATH '${luaCPath};'
@@ -59,11 +61,13 @@ stdenv.mkDerivation rec {
--set LUA_CPATH '${luaCPath};'
'';
+ passthru.communityModules = withCommunityModules;
+
meta = {
description = "Open-source XMPP application server written in Lua";
license = licenses.mit;
homepage = https://prosody.im;
platforms = platforms.linux;
- maintainers = [ ];
+ maintainers = with maintainers; [ fpletz globin ];
};
}