prosody: improve module handling

This commit is contained in:
Robin Gloster 2018-03-22 03:40:46 +01:00
parent 88f06c5ce9
commit 0a80f2c0f4
No known key found for this signature in database
GPG key ID: D5C458DF6DD97EDF
3 changed files with 23 additions and 6 deletions

View file

@ -347,6 +347,11 @@ following incompatible changes:</para>
<para>
The better-performing <literal>libevent</literal> backend is now enabled by default.
</para>
<para>
<literal>withCommunityModules</literal> now passes through the modules to <option>services.prosody.extraModules</option>.
Use <literal>withOnlyInstalledCommunityModules</literal> for modules that should not be enabled directly, e.g <literal>lib_ldap</literal>.
</para>
</listitem>
</itemizedlist>

View file

@ -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)}
};

View file

@ -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 ];
};
}