summaryrefslogtreecommitdiff
path: root/gnu/packages/messaging.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/messaging.scm')
-rw-r--r--gnu/packages/messaging.scm247
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