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.scm356
1 files changed, 259 insertions, 97 deletions
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index d50732dfc4..1500be43b0 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -32,71 +32,73 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages messaging)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix utils)
- #:use-module (guix packages)
- #:use-module (guix download)
- #:use-module (guix git-download)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system glib-or-gtk)
- #:use-module (guix build-system meson)
- #:use-module (guix build-system python)
- #:use-module (guix build-system perl)
- #:use-module (guix build-system cmake)
#:use-module (gnu packages)
+ #:use-module (gnu packages admin)
#:use-module (gnu packages aidc)
#:use-module (gnu packages aspell)
+ #:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages bison)
#:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages databases)
#:use-module (gnu packages documentation)
#:use-module (gnu packages enchant)
+ #:use-module (gnu packages fontutils)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnupg)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
- #:use-module (gnu packages xorg)
- #:use-module (gnu packages xdisorg)
+ #:use-module (gnu packages less)
#:use-module (gnu packages libcanberra)
- #:use-module (gnu packages man)
- #:use-module (gnu packages networking)
#:use-module (gnu packages libidn)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages lua)
- #:use-module (gnu packages xml)
- #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages man)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages networking)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config)
- #:use-module (gnu packages glib)
+ #:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-crypto)
- #:use-module (gnu packages pcre)
- #:use-module (gnu packages perl)
+ #:use-module (gnu packages python-web)
+ #:use-module (gnu packages qt)
+ #:use-module (gnu packages readline)
#:use-module (gnu packages tcl)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages check)
- #:use-module (gnu packages admin)
- #:use-module (gnu packages linux)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
- #:use-module (gnu packages icu4c)
- #:use-module (gnu packages qt)
#:use-module (gnu packages video)
#:use-module (gnu packages web)
+ #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
- #:use-module (gnu packages audio)
- #:use-module (gnu packages bison)
- #:use-module (gnu packages fontutils)
- #:use-module (gnu packages bash)
- #:use-module (gnu packages guile)
- #:use-module (gnu packages less)
- #:use-module (gnu packages readline)
- #:use-module (gnu packages photo)
- #:use-module (gnu packages texinfo))
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages xorg)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system glib-or-gtk)
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
+ #:use-module (guix build-system perl)
+ #:use-module (guix build-system python)
+ #:use-module (guix build-system trivial)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix utils))
(define-public libotr
(package
@@ -548,14 +550,14 @@ simultaneously and therefore appear under the same nickname on IRC.")
(define-public python-nbxmpp
(package
(name "python-nbxmpp")
- (version "0.6.7")
+ (version "0.6.8")
(source
(origin
(method url-fetch)
(uri (pypi-uri "nbxmpp" version))
(sha256
(base32
- "0fas4iawjfdmkz8vr042wpq6b2qispi6fy35g4a62jw50jb1saav"))))
+ "1iip8ijxp86fx4bl1h67p2lp02p2zm1ga2p3q43nv30smj54nawc"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ; no tests
@@ -573,7 +575,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
(define-public gajim
(package
(name "gajim")
- (version "1.0.3")
+ (version "1.1.0")
(source (origin
(method url-fetch)
(uri (string-append "https://gajim.org/downloads/"
@@ -581,12 +583,19 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
"/gajim-" version ".tar.bz2"))
(sha256
(base32
- "0ds4rqwfrpj89a489w6yih8gx5zi7qa4ffgld950fk7s0qxvcfnb"))))
+ "1qis8vs7y7g1zn5i5dshwrszidc22qpflycwb4nixvp9lbmkq0va"))))
(build-system python-build-system)
(arguments
- `(#:phases
+ `(#:test-target "test_nogui"
+ #:phases
(modify-phases %standard-phases
- (add-after 'install 'wrap-program
+ (add-after 'unpack 'add-plugin-dirs
+ (lambda _
+ (substitute* "gajim/common/configpaths.py"
+ (("_paths\\['PLUGINS_USER'\\]")
+ "_paths['PLUGINS_USER'],os.getenv('GAJIM_PLUGIN_PATH')"))
+ #t))
+ (add-after 'install 'wrap-gi-typelib-path
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(for-each
@@ -597,20 +606,6 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
'("gajim" "gajim-remote" "gajim-history-manager")))
#t))
- (add-before 'check 'remove-test-resolver
- ;; This test requires network access.
- (lambda _
- (substitute* "test/runtests.py"
- (("'integration.test_resolver',") ""))
- #t))
- (add-before 'check 'start-xserver
- ;; Tests require a running X server.
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((xorg-server (assoc-ref inputs "xorg-server"))
- (display ":1"))
- (setenv "DISPLAY" display)
- (zero? (system (string-append xorg-server "/bin/Xvfb "
- display " &"))))))
(add-after 'install 'install-icons
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -628,16 +623,30 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
(symlink adwaita "Adwaita")
(copy-recursively hicolor "hicolor")))
#t))
- (add-after 'install-icons 'wrap-program
+ (add-after 'install-icons 'wrap-gsettings-schema-dir
(lambda* (#:key inputs outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/gajim")
;; For GtkFileChooserDialog.
`("GSETTINGS_SCHEMA_DIR" =
(,(string-append (assoc-ref inputs "gtk+")
- "/share/glib-2.0/schemas")))))))))
+ "/share/glib-2.0/schemas"))))
+ #t)))))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "GAJIM_PLUGIN_PATH")
+ (separator #f) ;single entry
+ (files '("share/gajim/plugins")))
+ ;; Gajim needs to use the propagated inputs of its plugins.
+ (search-path-specification
+ (variable "PYTHONPATH")
+ (files (list (string-append
+ "lib/python"
+ (version-major+minor (package-version python))
+ "/site-packages"))))))
(native-inputs
`(("intltool" ,intltool)
+ ("python-docutils" ,python-docutils)
("xorg-server" ,xorg-server)))
(inputs
`(("adwaita-icon-theme" ,adwaita-icon-theme)
@@ -646,13 +655,13 @@ was initially a fork of xmpppy, but uses non-blocking sockets.")
("gtkspell3" ,gtkspell3)
("hicolor-icon-theme" ,hicolor-icon-theme)
("libsecret" ,libsecret)
- ("python-axolotl" ,python-axolotl)
+ ("python-cssutils" ,python-cssutils)
("python-dbus" ,python-dbus)
- ("python-docutils" ,python-docutils)
("python-gnupg" ,python-gnupg)
+ ("python-keyring" ,python-keyring)
("python-nbxmpp" ,python-nbxmpp)
("python-pillow" ,python-pillow)
- ("python-pyasn1" ,python-pyasn1)
+ ("python-precis-i18n" ,python-precis-i18n)
("python-pycairo" ,python-pycairo)
("python-pygobject" ,python-pygobject)
("python-pyopenssl" ,python-pyopenssl)
@@ -666,6 +675,41 @@ transformation; audio and video conferences; file transfer; TLS, GPG and
end-to-end encryption support; XML console.")
(license license:gpl3)))
+(define-public gajim-omemo
+ (package
+ (name "gajim-omemo")
+ (version "2.6.23")
+ (source (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append
+ "https://ftp.gajim.org/plugins_releases/omemo_"
+ version ".zip"))
+ (sha256
+ (base32
+ "134zbscbcnhx4smad0ryvx3ngkqlsspafqf0kk8y2d3vcd9bf3pa"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let* ((out (assoc-ref %outputs "out"))
+ (share (in-vicinity out "share/gajim/plugins"))
+ (source (assoc-ref %build-inputs "source")))
+ (mkdir-p share)
+ (copy-recursively source share)
+ #t))))
+ (propagated-inputs
+ `(("python-axolotl" ,python-axolotl)))
+ (home-page
+ "https://dev.gajim.org/gajim/gajim-plugins/wikis/OmemoGajimPlugin")
+ (synopsis "Gajim OMEMO plugin")
+ (description
+ "This package provides the Gajim OMEMO plugin. OMEMO is an XMPP
+Extension Protocol (XEP) for secure multi-client end-to-end encryption based
+on Axolotl and PEP.")
+ (license license:gpl3+)))
+
(define-public dino
;; The only release tarball is for version 0.0, but it is very old and fails
;; to build.
@@ -827,8 +871,8 @@ protocols.")
(license license:x11)))
(define-public libtoxcore
- (let ((revision "1")
- (commit "755f084e8720b349026c85afbad58954cb7ff1d4"))
+ (let ((revision "2")
+ (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
(package
(name "libtoxcore")
(version (string-append "0.0.0" "-"
@@ -841,26 +885,19 @@ protocols.")
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "0ap1gvlyihnfivv235dbrgsxsiiz70bhlmlr5gn1027w3h5kqz8w"))))
+ "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
(build-system gnu-build-system)
+ (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
- ;; TODO: Add when test suite is capable of passing.
- ;; ("check" ,check)
+ ("check" ,check)
("pkg-config" ,pkg-config)))
(inputs
`(("libsodium" ,libsodium)
("opus" ,opus)
("libvpx" ,libvpx)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'autoconf
- (lambda _
- (zero? (system* "autoreconf" "-vfi")))))
- #:tests? #f)) ; FIXME: Testsuite fails, reasons unspecific.
(synopsis "Library for the Tox encrypted messenger protocol")
(description
"C library implementation of the Tox encrypted messenger protocol.")
@@ -876,13 +913,14 @@ protocols.")
(version "0.2.8")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/TokTok/c-toxcore/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/TokTok/c-toxcore.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0qlkimlvbd24nlj7w9b5rpz1r807magqxmfylc1mlxsqhmfi5zj7"))))
+ "0xgnraysz25fbws5zwjk92mwnl8k1yih701qam8kgm3rxh50kyhm"))))
(arguments
`(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
; for now.
@@ -1647,7 +1685,7 @@ notifications, and Python scripting support.")
(define-public libqmatrixclient
(package
(name "libqmatrixclient")
- (version "0.3.0.2")
+ (version "0.4.0")
(source
(origin
(method git-fetch)
@@ -1657,7 +1695,7 @@ notifications, and Python scripting support.")
(file-name (git-file-name name version))
(sha256
(base32
- "03pxmr4wa818fgqddkr2fkwz6pda538x3ic9yq7c40x98zqf55w5"))))
+ "1llzqjagvp91kcg26q5c4qw9aaz7wna3rh6k06rc3baivrjqf3cn"))))
(build-system cmake-build-system)
(inputs
`(("qtbase" ,qtbase)))
@@ -1675,7 +1713,7 @@ QMatrixClient project.")
(define-public quaternion
(package
(name "quaternion")
- (version "0.0.9.2")
+ (version "0.0.9.3")
(source
(origin
(method git-fetch)
@@ -1685,31 +1723,31 @@ QMatrixClient project.")
(file-name (git-file-name name version))
(sha256
(base32
- "0zrr4khbbdf5ziq65gi0cb1yb1d0y5rv18wld22w1x96f7fkmrib"))))
+ "1hr9zqf301rg583n9jv256vzj7y57d8qgayk7c723bfknf1s6hh3"))))
(build-system cmake-build-system)
(inputs
`(("libqmatrixclient" ,libqmatrixclient)
("qtbase" ,qtbase)
- ("qtdeclarative" ,qtdeclarative)))
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtquickcontrols" ,qtquickcontrols)
+ ("qtsvg" ,qtsvg)
+ ("qttools" ,qttools)))
(arguments
`(#:tests? #f ; No tests
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'fix-libqmatrixclient-dynamic-linking
- ;; Upstream recommends statically linking with
- ;; libqmatrixclient. Patch the source so that we can dynamically
- ;; link instead. In a future release, when upstream moves to
- ;; dynamic linking, remove this phase.
- (lambda _
- (substitute* "CMakeLists.txt"
- (("^add_subdirectory\\(lib\\)" all)
- (string-append "#" all)))
- (for-each
- (lambda (file)
- (substitute* file
- (("#include \"lib/([^\"]*)\"" all header)
- (string-append "#include <" header ">"))))
- (find-files "client" "\\.(cpp|h)$"))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (string-append (assoc-ref outputs "out")
+ "/bin/quaternion")
+ `("QT_PLUGIN_PATH" ":" prefix
+ (,(string-append (assoc-ref inputs "qtsvg")
+ "/lib/qt5/plugins")))
+ `("QML2_IMPORT_PATH" ":" prefix
+ ,(map (lambda (label)
+ (string-append (assoc-ref inputs label)
+ "/lib/qt5/qml"))
+ '("qtdeclarative" "qtquickcontrols"))))
#t)))))
(home-page "https://matrix.org/docs/projects/client/quaternion.html")
(synopsis "Graphical client for the Matrix instant messaging protocol")
@@ -1720,4 +1758,128 @@ QMatrixClient project.")
(license (list license:gpl3+ ; all source code
license:lgpl3+)))) ; icons/breeze
+(define-public hangups
+ (package
+ (name "hangups")
+ (version "0.4.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "hangups" version))
+ (sha256
+ (base32 "0mvpfd5dc3zgcvwfidcd2qyn59xl5biv728mxifw0ls5rzkc9chs"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'relax-dependencies
+ ;; Relax overly strict package version specifications.
+ (lambda _
+ (substitute* "setup.py"
+ (("==") ">="))
+ #t)))))
+ (propagated-inputs
+ `(("python-aiohttp" ,python-aiohttp)
+ ("python-appdirs" ,python-appdirs)
+ ("python-async-timeout" ,python-async-timeout)
+ ("python-configargparse" ,python-configargparse)
+ ("python-mechanicalsoup" ,python-mechanicalsoup)
+ ("python-protobuf" ,python-protobuf)
+ ("python-readlike" ,python-readlike)
+ ("python-reparser" ,python-reparser)
+ ("python-requests" ,python-requests)
+ ("python-urwid" ,python-urwid)))
+ (home-page "https://hangups.readthedocs.io/")
+ (synopsis "Instant messaging client for Google Hangouts")
+ (description
+ "Hangups is an instant messaging client for Google Hangouts. It includes
+both a Python library and a reference client with a text-based user interface.
+
+Hangups is implements a reverse-engineered version of Hangouts' proprietary,
+non-interoperable protocol, which allows it to support features like group
+messaging that aren’t available to clients that connect over XMPP.")
+ (license license:expat)))
+
+(define-public telegram-purple
+ (package
+ (name "telegram-purple")
+ (version "1.3.1")
+ (home-page "https://github.com/majn/telegram-purple")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (sha256
+ (base32
+ "0p93jpjpx7hszwffzgixw04zkrpsiyzz4za3gfr4j07krc4771fp"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (substitute* "Makefile.in"
+ ;; By default these two directories point to Pidgin's own
+ ;; prefix.
+ (("^PLUGIN_DIR_PURPLE=.*")
+ (string-append
+ "exec_prefix := @exec_prefix@\n"
+ "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
+ (("^DATA_ROOT_DIR_PURPLE=.*")
+ "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
+
+ ;; Honor sysconfdir instead of trying to write to /etc.
+ (("DESTDIR\\)/etc/telegram-purple")
+ "DESTDIR)@sysconfdir@/telegram-purple"))
+ #t))
+ (patches (search-patches "telegram-purple-adjust-test.patch"))
+ (file-name (git-file-name name version))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("which" ,which)))
+ (inputs
+ `(("pidgin" ,pidgin)
+ ("libgcrypt" ,libgcrypt)
+ ("libwebp" ,libwebp)
+ ("glib" ,glib)
+ ("gettext" ,gnu-gettext)
+ ("gtk+" ,gtk+-2)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; We're using release tag for repository checkout - let's prepare
+ ;; header defining GIT_COMMIT manually instead of running git to
+ ;; identify version which is being compiled. Git repository
+ ;; is removed anyway and only source code is kept.
+ (add-after 'unpack 'prepare-commit.h
+ (lambda _
+ (with-output-to-file "./commit.h"
+ (lambda ()
+ (display
+ (string-append "//generated by guix, use version instead of "
+ "commit\n"
+ "#ifndef GIT_COMMIT\n"
+ "# define GIT_COMMIT \"v"
+ ,version "\"\n"
+ "#endif\n"))))
+ #t))
+ (add-before 'configure 'set-SHELL-variables
+ ;; Set these environment variables so that 'tgl/configure' uses the
+ ;; right shell and not /bin/sh.
+ (lambda _
+ (let ((bash (which "bash")))
+ (setenv "SHELL" bash)
+ (setenv "CONFIG_SHELL" bash)
+ #t))))))
+ (synopsis "Telegram messaging support for Pidgin")
+ (description
+ "Telegram-purple is a plugin for Libpurple, the communication library
+used by the Pidgin instant messaging client, that adds support for the
+Telegram messenger.")
+
+ ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
+ ;; itself is GPLv2+.
+ (license license:gpl2+)))
+
;;; messaging.scm ends here