diff options
Diffstat (limited to 'gnu/packages/messaging.scm')
-rw-r--r-- | gnu/packages/messaging.scm | 247 |
1 files changed, 186 insertions, 61 deletions
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 9ba83c0712..8509b0c71a 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -43,6 +43,8 @@ ;;; Copyright © 2024 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2024 Wilko Meyer <w@wmeyer.eu> ;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se> +;;; Copyright © 2024 Igor Goryachev <igor@goryachev.org> +;;; Copyright © 2024 Nguyễn Gia Phong <mcsinyx@disroot.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -82,6 +84,8 @@ #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) #:use-module (gnu packages enchant) + #:use-module (gnu packages erlang) + #:use-module (gnu packages erlang-xyz) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) @@ -117,6 +121,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages nss) + #:use-module (gnu packages password-utils) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages photo) @@ -141,6 +146,7 @@ #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages video) + #:use-module (gnu packages vulkan) #:use-module (gnu packages web) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xiph) @@ -155,6 +161,7 @@ #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (guix build-system pyproject) + #:use-module (guix build-system rebar) #:use-module (guix build-system qt) #:use-module (guix build-system trivial) #:use-module (guix download) @@ -1091,14 +1098,14 @@ control of your private keys, no previous conversation is compromised.") (define-public znc (package (name "znc") - (version "1.8.2") + (version "1.9.1") (source (origin (method url-fetch) (uri (string-append "https://znc.in/releases/archive/znc-" version ".tar.gz")) (sha256 (base32 - "03fyi0j44zcanj1rsdx93hkdskwfvhbywjiwd17f9q1a7yp8l8zz")))) + "0g2gi7207lydmm7zdq52ivw0vhvbnmhsybi89q5m3bcsw60cz9z8")))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -1114,15 +1121,16 @@ control of your private keys, no previous conversation is compromised.") (let ((source (assoc-ref inputs "googletest-source")) (target "third_party/googletest")) (mkdir-p target) - (copy-recursively source target) - #t)))))) + (copy-recursively source target))))))) (native-inputs `(("boost" ,boost) ("gettext" ,gettext-minimal) ("googletest-source" ,(package-source googletest)) ("pkg-config" ,pkg-config))) (inputs - (list cyrus-sasl + ;; FIXME: Package cctz and remove the bundled copy from the source tarball. + (list argon2 + cyrus-sasl icu4c openssl perl @@ -1499,7 +1507,7 @@ default.") qtbase-5 qtdeclarative-5 qtgraphicaleffects - qtlocation + qtlocation-5 qtquickcontrols2-5 qtsvg-5 qtmultimedia-5 @@ -2419,7 +2427,7 @@ QMatrixClient project.") (define-public mtxclient (package (name "mtxclient") - (version "0.9.1") + (version "0.10.0") (source (origin (method git-fetch) @@ -2428,20 +2436,19 @@ QMatrixClient project.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0m8agc3c4n03r92nz3gxkpxmj2c3ncf125nmfdv0jf24gxib126z")))) - (arguments - `(#:configure-flags - (list - ;; Disable example binaries (not installed) - "-DBUILD_LIB_EXAMPLES=OFF") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'disable-network-tests - (lambda _ - (substitute* "CMakeLists.txt" - (("add_test\\((BasicConnectivity|ClientAPI|Devices|MediaAPI|Encryption|Pushrules)") - "# add_test"))))))) + (base32 "10iidyxjk3w6cljw2r62i5azx84nw3p8hw97d8vy7r5gh1nrrrcn")))) (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(list "-DBUILD_LIB_EXAMPLES=OFF") ; disable example binaries (not installed) + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'disable-network-tests + (lambda _ + (substitute* "CMakeLists.txt" + (("add_test\\((BasicConnectivity|ClientAPI|Devices|MediaAPI|Encryption|Pushrules)") + "# add_test"))))))) (inputs (list boost coeurl @@ -2465,7 +2472,7 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.") (define-public nheko (package (name "nheko") - (version "0.11.3") + (version "0.12.0") (source (origin (method git-fetch) @@ -2474,41 +2481,25 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0yjbxyba87nkpjmql7s6nv2r2i9s956zgwlfhdi4jjg96v2rgmnr")) + (base32 "113ids1k2pjmvs9cgh025vkpg5mipw295dlkx7n3ydi0r8mzw1l5")) (modules '((guix build utils))) - (snippet - '(begin - (delete-file-recursively "third_party"))))) + (snippet '(delete-file-recursively "third_party")))) (arguments (list #:tests? #f ;no test target + #:qtbase qtbase #:configure-flags #~(list "-DCMAKE_BUILD_TYPE=Release" ;; Fix required because we are using a static SingleApplication "-DCMAKE_CXX_FLAGS= \"-DQAPPLICATION_CLASS=QApplication\" " ;; Compile Qml will make Nheko faster, but you will need to recompile ;; it, when you update Qt. That's fine for us. - "-DCOMPILE_QML=ON") + "-DCOMPILE_QML=ON" + ;; Use system libraries. + "-DUSE_BUNDLED_BLURHASH=OFF" + "-DUSE_BUNDLED_CPPHTTPLIB=OFF") #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'unbundle-dependencies - (lambda* (#:key inputs #:allow-other-keys) - (let ((libSingleApplication.a - (search-input-file inputs "lib/libSingleApplication.a")) - (httplib.h (search-input-file inputs "include/httplib.h"))) - (substitute* "CMakeLists.txt" - ;; Remove include and source dirs,replace with the correct one - (("third_party/blurhash/blurhash\\.[ch]pp") "") - (("third_party/cpp-httplib-0\\.5\\.12") - (dirname httplib.h)) - (("add_subdirectory.*third_party/SingleApplication.*") "") - ;; Link using the correct static/shared libs - (("SingleApplication::SingleApplication") - (string-append - ;; Dynamic libraries - "httplib" "\n" "blurhash" "\n" - ;; Static library - libSingleApplication.a)))))) (add-after 'unpack 'fix-determinism (lambda _ ;; Make Qt deterministic. @@ -2520,37 +2511,38 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.") `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))))))) (build-system qt-build-system) (inputs - (list boost - blurhash - cpp-httplib + (list blurhash + brotli cmark coeurl + cpp-httplib curl gst-plugins-base gst-plugins-bad ; sdp & webrtc for voip gst-plugins-good-qt ; rtpmanager for voip - nlohmann-json + kdsingleapplication libevent libnice ; for voip - olm + libxkbcommon lmdb lmdbxx mtxclient + nlohmann-json + olm openssl - qtbase-5 - qtdeclarative-5 - qtkeychain + qtdeclarative qtgraphicaleffects - qtmultimedia-5 - qtquickcontrols2-5 - qtsvg-5 + qtkeychain-qt6 + qtmultimedia + qtsvg re2 spdlog - single-application-qt5 - xcb-util-wm + vulkan-headers + vulkan-loader + xdg-utils ; xdg-open for opening URLs zlib)) (native-inputs - (list asciidoc pkg-config qttools-5)) + (list asciidoc pkg-config qttools)) (home-page "https://github.com/Nheko-Reborn/nheko") (synopsis "Desktop client for Matrix using Qt and C++14") (description "@code{Nheko} want to provide a native desktop app for the @@ -3304,7 +3296,6 @@ designed for experienced users.") (build-system go-build-system) (arguments (list - #:go go-1.21 #:import-path "github.com/42wim/matterbridge")) (synopsis "Bridge together various messaging networks and protocols") (description @@ -3449,7 +3440,7 @@ Weechat communicate over the Matrix protocol.") (define-public weechat-wee-slack (package (name "weechat-wee-slack") - (version "2.10.1") + (version "2.10.2") (source (origin (method git-fetch) @@ -3459,7 +3450,7 @@ Weechat communicate over the Matrix protocol.") (file-name (git-file-name name version)) (sha256 (base32 - "0ykzmn4q592ih9d6m5ks2dzbxkz3mj81sxwsn9g2vzsxj7w3p2r7")))) + "0klvvrrvdjh3wph1cdqd4x3nj170v1wirmr2mm91q3sqs5lf3lqj")))) (build-system python-build-system) (arguments `(#:phases @@ -3642,4 +3633,138 @@ a text snippet), using @code{libphonenumber}.") "@code{senpai} is an IRC client that works best with bouncers.") (license license:isc))) +(define-public ejabberd + (package + (name "ejabberd") + (version "24.07") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/processone/ejabberd") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0d5i9skgfjzs2100k0g99sigc2w61480ysz3va6pmb4nx43100g3")))) + (build-system rebar-build-system) + (native-inputs + (list autoconf + automake + erlang-base64url + erlang-cache-tab + erlang-eimp + erlang-epam + erlang-eredis + erlang-esip + erlang-ezlib + erlang-fast-tls + erlang-fast-xml + erlang-fast-yaml + erlang-idna + erlang-jiffy + erlang-jose + erlang-luerl + erlang-mqtree + erlang-p1-acme + erlang-p1-mysql + erlang-p1-oauth2 + erlang-p1-pgsql + erlang-p1-utils + erlang-pc + erlang-pkix + erlang-provider-asn1 + erlang-stringprep + erlang-stun + erlang-sqlite3 + erlang-unicode-util-compat + erlang-xmpp + erlang-yconf)) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-environment + (lambda _ + (setenv "HOME" "/tmp") + (setenv "CC" "gcc"))) + (add-after 'unpack 'bootstrap + (lambda _ + (invoke "aclocal" "-I" "m4") + (invoke "autoconf" "-f"))) + (add-after 'bootstrap 'make-various-fixes + (lambda* (#:key inputs #:allow-other-keys) + (let ((sh (search-input-file inputs "/bin/sh"))) + ;; Fix shell locations. + (substitute* "configure" (("/bin/sh") sh)) + (substitute* "rebar.config.script" + (("sh -c '") (string-append sh " -c '"))) + ;; Do not recompile dependences. + (substitute* "rebar.config" + (("\\[\\{\"eimp\", \\[\\]\\},") "[]}.\n{nop, [")) + ;; Do not include source files into release. + (substitute* "rebar.config" + (("\\{include_src, true\\},") "{include_src, false},")) + ;; Do not install erl wrapper, we will do it ourselves. + (substitute* "rebar.config" + (("\\{copy, \"rel/files/erl\",") + "%{copy, \"rel/files/erl\",")) + ;; It seems ejabberd still needs jiffy due to p1_acme. + (substitute* "rebar.config" + (("\\{if_version_below, \"27\",") "{if_version_below, \"30\",")) + ;; Unpin pinned dependences. + (substitute* "rebar.lock" + ((",1\\}") ",0}")) + ;; Set proper paths. + (substitute* "vars.config.in" + (("\\{sysconfdir, \".*\"\\}\\.") + "{sysconfdir, \"/etc\"}.")) + (substitute* "vars.config.in" + (("\\{localstatedir, \".*\"\\}\\.") + "{sysconfdir, \"/var\"}.")) + (substitute* "vars.config.in" + (("\\{config_dir, \".*\"\\}\\.") + "{config_dir, \"/etc/ejabberd\"}.")) + (substitute* "vars.config.in" + (("\\{logs_dir, \".*\"\\}\\.") + "{logs_dir, \"/var/log/ejabberd\"}.")) + (substitute* "vars.config.in" + (("\\{spool_dir, \".*\"\\}\\.") + "{spool_dir, \"/var/lib/ejabberd\"}."))))) + (add-after 'make-various-fixes 'configure + (lambda _ + (invoke "./configure" + (string-append "--prefix=" #$output)))) + (replace 'build + (lambda _ + (invoke "make" "rel"))) + (replace 'install + (lambda _ + (let ((ejabberd "_build/prod/rel/ejabberd")) + (copy-recursively + (string-append ejabberd "/conf") + (string-append ejabberd "/share/doc/ejabberd-" + #$version "/examples")) + (for-each + (lambda (rmdir) + (delete-file-recursively + (string-append ejabberd "/" rmdir))) + '("conf" "database" "logs")) + (delete-file + (string-append (string-append ejabberd "/ejabberd-" + #$version ".tar.gz"))) + (let ((erts (car (find-files ejabberd "erts-.*" + #:directories? #t)))) + (delete-file (string-append erts "/bin/erl")) + (install-file "rel/files/erl" + (string-append erts "/bin"))) + (chmod (string-append ejabberd + "/bin/install_upgrade.escript") #o755) + (copy-recursively ejabberd #$output))))))) + (synopsis "Robust, Ubiquitous and Massively Scalable Messaging Platform") + (description "This package provides Ejabberd -- Robust, Ubiquitous and +Massively Scalable Messaging Platform. It supports XMPP, MQTT and SIP +protocols.") + (home-page "https://www.ejabberd.im") + (license license:gpl2+))) + ;;; messaging.scm ends here |