diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/xmpp/prosody/default.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/xmpp/prosody/default.nix | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/xmpp/prosody/default.nix b/nixpkgs/pkgs/servers/xmpp/prosody/default.nix new file mode 100644 index 000000000000..2f237c1f2277 --- /dev/null +++ b/nixpkgs/pkgs/servers/xmpp/prosody/default.nix @@ -0,0 +1,89 @@ +{ stdenv, fetchurl, lib, libidn, openssl, makeWrapper, fetchhg, buildPackages +, icu +, lua +, nixosTests +, withDBI ? true +# use withExtraLibs to add additional dependencies of community modules +, withExtraLibs ? [ ] +, withExtraLuaPackages ? _: [ ] +, withOnlyInstalledCommunityModules ? [ ] +, withCommunityModules ? [ ] }: + +with lib; + +let + luaEnv = lua.withPackages(p: with p; [ + luasocket luasec luaexpat luafilesystem luabitop luadbi-sqlite3 luaunbound + ] + ++ lib.optional withDBI p.luadbi + ++ withExtraLuaPackages p + ); +in +stdenv.mkDerivation rec { + version = "0.12.4"; # also update communityModules + pname = "prosody"; + # The following community modules are necessary for the nixos module + # prosody module to comply with XEP-0423 and provide a working + # default setup. + nixosModuleDeps = [ + "cloud_notify" + "vcard_muc" + "http_upload" + ]; + src = fetchurl { + url = "https://prosody.im/downloads/source/${pname}-${version}.tar.gz"; + sha256 = "R9cSJzwvKVWMQS9s2uwHMmC7wmt92iQ9tYAzAYPWWFY="; + }; + + # A note to all those merging automated updates: Please also update this + # attribute as some modules might not be compatible with a newer prosody + # version. + communityModules = fetchhg { + url = "https://hg.prosody.im/prosody-modules"; + rev = "b109773ce6fe"; + hash = "sha256-N1vmShDWtWsHD4b1x7UjX6Sj28iPaDeCLSYeDOLLhzo="; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ + luaEnv libidn openssl icu + ] + ++ withExtraLibs; + + configureFlags = [ + "--ostype=linux" + "--with-lua-bin=${lib.getBin buildPackages.lua}/bin" + "--with-lua-include=${luaEnv}/include" + "--with-lua=${luaEnv}" + "--c-compiler=${stdenv.cc.targetPrefix}cc" + "--linker=${stdenv.cc.targetPrefix}cc" + ]; + configurePlatforms = []; + + postBuild = '' + make -C tools/migration + ''; + + # the wrapping should go away once lua hook is fixed + postInstall = '' + ${concatMapStringsSep "\n" (module: '' + cp -r $communityModules/mod_${module} $out/lib/prosody/modules/ + '') (lib.lists.unique(nixosModuleDeps ++ withCommunityModules ++ withOnlyInstalledCommunityModules))} + wrapProgram $out/bin/prosodyctl \ + --add-flags '--config "/etc/prosody/prosody.cfg.lua"' + make -C tools/migration install + ''; + + passthru = { + communityModules = withCommunityModules; + tests = { inherit (nixosTests) prosody prosody-mysql; }; + }; + + meta = { + description = "Open-source XMPP application server written in Lua"; + license = licenses.mit; + homepage = "https://prosody.im"; + platforms = platforms.linux; + maintainers = with maintainers; [ toastal ]; + }; +} |