gnu: Use 'search-input-directory' when looking for C/C++ library headers.
[jackhill/guix/guix.git] / gnu / packages / messaging.scm
... / ...
CommitLineData
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
3;;; Copyright © 2014, 2017 Julien Lepiller <julien@lepiller.eu>
4;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
5;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
6;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
7;;; Copyright © 2015, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
8;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
9;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
10;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
11;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
12;;; Copyright © 2017, 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
13;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
14;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
15;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
16;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
17;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
18;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
19;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
20;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
21;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
22;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
23;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
24;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
25;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
26;;; Copyright © 2020 Mason Hock <chaosmonk@riseup.net>
27;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
28;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
29;;; Copyright © 2020, 2021 Robert Karszniewicz <avoidr@posteo.de>
30;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
31;;; Copyright © 2021 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
32;;;
33;;; This file is part of GNU Guix.
34;;;
35;;; GNU Guix is free software; you can redistribute it and/or modify it
36;;; under the terms of the GNU General Public License as published by
37;;; the Free Software Foundation; either version 3 of the License, or (at
38;;; your option) any later version.
39;;;
40;;; GNU Guix is distributed in the hope that it will be useful, but
41;;; WITHOUT ANY WARRANTY; without even the implied warranty of
42;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43;;; GNU General Public License for more details.
44;;;
45;;; You should have received a copy of the GNU General Public License
46;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
47
48(define-module (gnu packages messaging)
49 #:use-module (gnu packages)
50 #:use-module (gnu packages admin)
51 #:use-module (gnu packages aidc)
52 #:use-module (gnu packages aspell)
53 #:use-module (gnu packages audio)
54 #:use-module (gnu packages autotools)
55 #:use-module (gnu packages avahi)
56 #:use-module (gnu packages base)
57 #:use-module (gnu packages bash)
58 #:use-module (gnu packages bison)
59 #:use-module (gnu packages boost)
60 #:use-module (gnu packages check)
61 #:use-module (gnu packages compression)
62 #:use-module (gnu packages cpp)
63 #:use-module (gnu packages crypto)
64 #:use-module (gnu packages curl)
65 #:use-module (gnu packages cyrus-sasl)
66 #:use-module (gnu packages databases)
67 #:use-module (gnu packages docbook)
68 #:use-module (gnu packages documentation)
69 #:use-module (gnu packages enchant)
70 #:use-module (gnu packages fontutils)
71 #:use-module (gnu packages freedesktop)
72 #:use-module (gnu packages gettext)
73 #:use-module (gnu packages glib)
74 #:use-module (gnu packages gnome)
75 #:use-module (gnu packages gnupg)
76 #:use-module (gnu packages gperf)
77 #:use-module (gnu packages graphviz)
78 #:use-module (gnu packages gstreamer)
79 #:use-module (gnu packages gtk)
80 #:use-module (gnu packages guile)
81 #:use-module (gnu packages icu4c)
82 #:use-module (gnu packages image)
83 #:use-module (gnu packages kde)
84 #:use-module (gnu packages kerberos)
85 #:use-module (gnu packages less)
86 #:use-module (gnu packages libcanberra)
87 #:use-module (gnu packages libidn)
88 #:use-module (gnu packages libreoffice)
89 #:use-module (gnu packages linux)
90 #:use-module (gnu packages logging)
91 #:use-module (gnu packages lua)
92 #:use-module (gnu packages man)
93 #:use-module (gnu packages markup)
94 #:use-module (gnu packages matrix)
95 #:use-module (gnu packages mono)
96 #:use-module (gnu packages mpd)
97 #:use-module (gnu packages ncurses)
98 #:use-module (gnu packages networking)
99 #:use-module (gnu packages nss)
100 #:use-module (gnu packages pcre)
101 #:use-module (gnu packages perl)
102 #:use-module (gnu packages photo)
103 #:use-module (gnu packages php)
104 #:use-module (gnu packages pkg-config)
105 #:use-module (gnu packages protobuf)
106 #:use-module (gnu packages python)
107 #:use-module (gnu packages python-check)
108 #:use-module (gnu packages python-crypto)
109 #:use-module (gnu packages python-web)
110 #:use-module (gnu packages python-xyz)
111 #:use-module (gnu packages qt)
112 #:use-module (gnu packages readline)
113 #:use-module (gnu packages ruby)
114 #:use-module (gnu packages sphinx)
115 #:use-module (gnu packages sqlite)
116 #:use-module (gnu packages tcl)
117 #:use-module (gnu packages texinfo)
118 #:use-module (gnu packages textutils)
119 #:use-module (gnu packages tls)
120 #:use-module (gnu packages video)
121 #:use-module (gnu packages web)
122 #:use-module (gnu packages xdisorg)
123 #:use-module (gnu packages xiph)
124 #:use-module (gnu packages xml)
125 #:use-module (gnu packages xorg)
126 #:use-module (guix build-system cmake)
127 #:use-module (guix build-system go)
128 #:use-module (guix build-system glib-or-gtk)
129 #:use-module (guix build-system gnu)
130 #:use-module (guix build-system meson)
131 #:use-module (guix build-system perl)
132 #:use-module (guix build-system python)
133 #:use-module (guix build-system qt)
134 #:use-module (guix build-system trivial)
135 #:use-module (guix download)
136 #:use-module (guix git-download)
137 #:use-module (guix hg-download)
138 #:use-module ((guix licenses) #:prefix license:)
139 #:use-module (guix packages)
140 #:use-module (guix utils))
141
142(define-public psi
143 (package
144 (name "psi")
145 (version "1.5")
146 (source
147 (origin
148 (method url-fetch)
149 (uri
150 (string-append "mirror://sourceforge/psi/Psi/"
151 version "/psi-" version ".tar.xz"))
152 (modules '((guix build utils)))
153 (snippet
154 `(begin
155 (delete-file-recursively "3rdparty")))
156 (sha256
157 (base32 "1dxmm1d1zr0pfs51lba732ipm6hm2357jlfb934lvarzsh7karri"))))
158 (build-system qt-build-system)
159 (arguments
160 `(#:tests? #f ; No target
161 #:configure-flags
162 (list
163 "-DUSE_ENCHANT=ON"
164 "-DUSE_CCACHE=OFF")
165 #:phases
166 (modify-phases %standard-phases
167 (add-after 'unpack 'patch-cmake
168 (lambda _
169 (substitute* "cmake/modules/FindHunspell.cmake"
170 (("hunspell-1.6")
171 "hunspell-1.7"))
172 #t)))))
173 (native-inputs
174 `(("pkg-config" ,pkg-config)
175 ("python" ,python-wrapper)
176 ("ruby" ,ruby)))
177 (inputs
178 `(("aspell" ,aspell)
179 ("enchant" ,enchant-1.6)
180 ("hunspell" ,hunspell)
181 ("libidn" ,libidn)
182 ("qca" ,qca)
183 ("qtbase" ,qtbase-5)
184 ("qtmultimedia" ,qtmultimedia)
185 ("qtsvg" ,qtsvg)
186 ("qtwebkit" ,qtwebkit)
187 ("qtx11extras" ,qtx11extras)
188 ("x11" ,libx11)
189 ("xext" ,libxext)
190 ("xcb" ,libxcb)
191 ("zlib" ,zlib)))
192 (synopsis "Qt-based XMPP Client")
193 (description "Psi is a capable XMPP client aimed at experienced users.
194Its design goals are simplicity and stability.")
195 (home-page "https://psi-im.org")
196 (license license:gpl2+)))
197
198(define-public libgnt
199 (package
200 (name "libgnt")
201 (version "2.14.1")
202 (source
203 (origin
204 (method url-fetch)
205 (uri
206 (string-append "mirror://sourceforge/pidgin/libgnt/"
207 version "/libgnt-" version ".tar.xz"))
208 (sha256
209 (base32 "1n2bxg0ignn53c08cp69pj4sdg53kwlqn23rincyjmpr327fdhsy"))))
210 (build-system meson-build-system)
211 (outputs '("out" "doc"))
212 (arguments
213 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
214 #:phases
215 (modify-phases %standard-phases
216 (add-after 'unpack 'patch-ncurses-path
217 (lambda* (#:key inputs #:allow-other-keys)
218 (substitute* "meson.build"
219 (("'/usr'")
220 (string-append "'"
221 (assoc-ref inputs "ncurses")
222 "'")))
223 #t))
224 (add-before 'configure 'patch-docbook-xml
225 (lambda* (#:key inputs #:allow-other-keys)
226 (with-directory-excursion "doc"
227 (substitute* "libgnt-docs.xml"
228 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
229 (string-append (assoc-ref inputs "docbook-xml")
230 "/xml/dtd/docbook/"))))
231 #t))
232 (add-after 'install 'move-doc
233 (lambda* (#:key outputs #:allow-other-keys)
234 (let* ((out (assoc-ref outputs "out"))
235 (doc (assoc-ref outputs "doc")))
236 (mkdir-p (string-append doc "/share"))
237 (rename-file
238 (string-append out "/share/gtk-doc")
239 (string-append doc "/share/gtk-doc"))
240 #t))))))
241 (native-inputs
242 `(("docbook-xml" ,docbook-xml-4.1.2)
243 ("glib:bin" ,glib "bin")
244 ("gobject-introspection" ,gobject-introspection)
245 ("gtk-doc" ,gtk-doc)
246 ("pkg-config" ,pkg-config)))
247 (inputs
248 `(("ncurses" ,ncurses)))
249 (propagated-inputs
250 `(("glib" ,glib)
251 ("libxml" ,libxml2)
252 ("python" ,python-2)))
253 (synopsis "GLib Ncurses Toolkit")
254 (description "GNT is an ncurses toolkit for creating text-mode graphical
255user interfaces in a fast and easy way. It is based on GLib and ncurses.")
256 (home-page "https://keep.imfreedom.org/libgnt/libgnt")
257 (license license:gpl2+)))
258
259(define-public libgadu
260 (package
261 (name "libgadu")
262 (version "1.12.2")
263 (source
264 (origin
265 (method git-fetch)
266 (uri
267 (git-reference
268 (url "https://github.com/wojtekka/libgadu.git")
269 (commit version)))
270 (file-name
271 (git-file-name name version))
272 (sha256
273 (base32 "1s16cripy5w9k12534qb012iwc5m9qcjyrywgsziyn3kl3i0aa8h"))))
274 (build-system gnu-build-system)
275 (arguments
276 `(#:configure-flags
277 (list
278 "--disable-static")
279 #:phases
280 (modify-phases %standard-phases
281 (add-after 'unpack 'patch-shebangs
282 (lambda* (#:key inputs #:allow-other-keys)
283 (substitute* "protobufgen.sh"
284 (("/bin/sh")
285 (string-append (assoc-ref inputs "bash")
286 "/bin/sh")))
287 #t)))))
288 (native-inputs
289 `(("autoconf" ,autoconf)
290 ("automake" ,automake)
291 ("bash" ,bash)
292 ("doxygen" ,doxygen)
293 ("libtool" ,libtool)
294 ("perl" ,perl)
295 ("pkg-config" ,pkg-config)))
296 (inputs
297 `(("curl" ,curl)
298 ("expat" ,expat)
299 ("libprotobuf-c" ,protobuf-c)
300 ("libxml" ,libxml2)
301 ("openssl" ,openssl)
302 ("zlib" ,zlib)))
303 (propagated-inputs
304 `(("gnutls" ,gnutls)))
305 (synopsis "Library for handling the protocol of Gadu-Gadu")
306 (description "LibGadu is library for handling Gadu-Gadu instant messenger
307protocol. The library is written in C and aims to be operating system and
308environment independent.")
309 (home-page "https://libgadu.net/index.en.html")
310 (license license:lgpl2.1+)))
311
312(define-public silc-toolkit
313 (package
314 (name "silc-toolkit")
315 (version "1.1.12")
316 (source
317 (origin
318 (method url-fetch)
319 (uri
320 (string-append "mirror://sourceforge/silc/silc/toolkit/sources/silc-toolkit-"
321 version ".tar.gz"))
322 (sha256
323 (base32 "0mnvf9n7qriadg0p7a8qmvcayhnns2g9fhmcymavlm0v8xrky33y"))))
324 (build-system gnu-build-system)
325 (arguments
326 `(#:configure-flags
327 (list
328 "--disable-static"
329 "--enable-ipv6"
330 "--enable-stack-trace")
331 #:phases
332 (modify-phases %standard-phases
333 (add-after 'unpack 'trigger-bootstrap
334 (lambda _
335 (delete-file "configure")
336 (delete-file "Makefile.in")
337 #t)))))
338 (native-inputs
339 `(("autoconf" ,autoconf)
340 ("automake" ,automake)
341 ("libtool" ,libtool)
342 ("perl" ,perl)
343 ("pkg-config" ,pkg-config)))
344 (synopsis "SILC ToolKit")
345 (description "SILC (Secure Internet Live Conferencing) is a modern and secure
346conferencing protocol. It provides all the common conferencing services like
347private messages, instant messages, channels and groups, and video and audio
348conferencing.")
349 (home-page "https://silc.github.io/info")
350 (license
351 ;; Dual-licensed
352 (list
353 license:gpl2+
354 license:bsd-2))))
355
356(define-public meanwhile
357 (package
358 (name "meanwhile")
359 (version "1.1.1")
360 (source
361 (origin
362 (method git-fetch)
363 (uri
364 (git-reference
365 (url "https://github.com/obriencj/meanwhile.git")
366 (commit
367 (string-append "v" version))))
368 (file-name
369 (git-file-name name version))
370 (sha256
371 (base32 "1k1gvmx1ikm0y1mdmm495rzkb00pl170jfaf2dy0n5aiiknkk7q3"))))
372 (build-system glib-or-gtk-build-system)
373 (native-inputs
374 `(("autoconf" ,autoconf)
375 ("automake" ,automake)
376 ("doxygen" ,doxygen)
377 ("libtool" ,libtool)
378 ("pkg-config" ,pkg-config)))
379 (propagated-inputs
380 `(("glib" ,glib)))
381 (synopsis "Library for Lotus Instant Messaging")
382 (description "Meanwhile is a library for connecting to a LIM (Lotus Instant
383Messaging, formerly Lotus Sametime, formerly VPBuddy) community. It uses a
384protocol based in part off of the IMPP draft(*1), and in part off of traces of
385TCP sessions from existing clients.")
386 (home-page "https://github.com/obriencj/meanwhile")
387 (license license:lgpl3)))
388
389(define-public poezio
390 (package
391 (name "poezio")
392 (version "0.13.1")
393 (source
394 (origin
395 (method git-fetch)
396 (uri
397 (git-reference
398 (url "https://lab.louiz.org/poezio/poezio.git")
399 (commit
400 (string-append "v" version))))
401 (file-name
402 (git-file-name name version))
403 (sha256
404 (base32 "041y61pcbdb86s04qwp8s1g6bp84yskc7vdizwpi2hz18y01x5fy"))))
405 (build-system python-build-system)
406 (arguments
407 `(#:phases
408 (modify-phases %standard-phases
409 (add-after 'unpack 'patch
410 (lambda _
411 (substitute* "setup.py"
412 (("'CC', 'cc'")
413 "'CC', 'gcc'"))
414 #t)))))
415 (native-inputs
416 `(("pkg-config" ,pkg-config)
417 ("python-setuptools" ,python-setuptools)
418 ("python-sphinx" ,python-sphinx)))
419 (inputs
420 `(("python-mpd2" ,python-mpd2)
421 ("python-potr" ,python-potr)
422 ("python-pyasn1" ,python-pyasn1)
423 ("python-pyasn1-modules" ,python-pyasn1-modules)
424 ("python-pygments" ,python-pygments)
425 ("python-pyinotify" ,python-pyinotify)
426 ;("python" ,python)
427 ("python-qrcode" ,python-qrcode)
428 ("python-slixmpp" ,python-slixmpp)))
429 (synopsis "Console Jabber/XMPP Client")
430 (description "Poezio is a free console XMPP client (the protocol on which
431the Jabber IM network is built).
432Its goal is to let you connect very easily (no account creation needed) to the
433network and join various chatrooms, immediately. It tries to look like the
434most famous IRC clients (weechat, irssi, etc). Many commands are identical and
435you won't be lost if you already know these clients. Configuration can be
436made in a configuration file or directly from the client.
437You'll find the light, fast, geeky and anonymous spirit of IRC while using a
438powerful, standard and open protocol.")
439 (home-page "https://poez.io/en/")
440 (license license:zlib)))
441
442(define-public libotr
443 (package
444 (name "libotr")
445 (version "4.1.1")
446 (source
447 (origin
448 (method url-fetch)
449 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
450 version ".tar.gz"))
451 (sha256
452 (base32 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
453 (patches
454 (search-patches "libotr-test-auth-fix.patch"))))
455 (build-system gnu-build-system)
456 (native-inputs
457 `(("perl" ,perl))) ; for the test suite
458 (inputs
459 `(("libgpg-error" ,libgpg-error)))
460 (propagated-inputs
461 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
462 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
463 (description "OTR allows you to have private conversations over instant
464messaging by providing: (1) Encryption: No one else can read your instant
465messages. (2) Authentication: You are assured the correspondent is who you
466think it is. (3) Deniability: The messages you send do not have digital
467signatures that are checkable by a third party. Anyone can forge messages
468after a conversation to make them look like they came from you. However,
469during a conversation, your correspondent is assured the messages he sees are
470authentic and unmodified. (4) Perfect forward secrecy: If you lose control of
471your private keys, no previous conversation is compromised.")
472 (home-page "https://otr.cypherpunks.ca/")
473 (license
474 (list
475 ;; Library
476 license:lgpl2.1+
477 ;; Others
478 license:gpl2+))))
479
480(define-public libsignal-protocol-c
481 (package
482 (name "libsignal-protocol-c")
483 (version "2.3.3")
484 (source (origin
485 (method git-fetch)
486 (uri (git-reference
487 (url "https://github.com/WhisperSystems/libsignal-protocol-c")
488 (commit (string-append "v" version))))
489 (file-name (git-file-name name version))
490 (sha256
491 (base32
492 "0z5p03vk15i6h870azfjgyfgxhv31q2vq6rfhnybrnkxq2wqzwhk"))))
493 (arguments
494 `(;; Required for proper linking and for tests to run.
495 #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
496 (build-system cmake-build-system)
497 (inputs `( ;; Required for tests:
498 ("check" ,check)
499 ("openssl" ,openssl)))
500 (native-inputs `(("pkg-config" ,pkg-config)))
501 (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
502 (synopsis "Implementation of a ratcheting forward secrecy protocol")
503 (description "libsignal-protocol-c is an implementation of a ratcheting
504forward secrecy protocol that works in synchronous and asynchronous
505messaging environments. It can be used with messaging software to provide
506end-to-end encryption.")
507 (license license:gpl3+)))
508
509(define-public bitlbee
510 (package
511 (name "bitlbee")
512 (version "3.6")
513 (source (origin
514 (method url-fetch)
515 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
516 version ".tar.gz"))
517 (sha256
518 (base32 "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz"))))
519 (build-system gnu-build-system)
520 (native-inputs `(("pkg-config" ,pkg-config)
521 ;; Note: Change to 'check' for versions > 3.6.
522 ("check" ,check-0.12)))
523 (inputs `(("glib" ,glib)
524 ("libotr" ,libotr)
525 ("gnutls" ,gnutls)
526 ("python" ,python)
527 ("perl" ,perl)))
528 (arguments
529 `(#:phases
530 (modify-phases %standard-phases
531 (add-before 'configure 'set-python
532 (lambda _ (setenv "PYTHON" (which "python3")) #t))
533 (add-after 'install 'install-etc
534 (lambda* (#:key (make-flags '()) #:allow-other-keys)
535 (apply invoke "make" "install-etc" make-flags)))
536 (add-after 'install-etc 'install-lib
537 (lambda* (#:key (make-flags '()) #:allow-other-keys)
538 (apply invoke "make" "install-dev" make-flags)))
539 (replace 'configure
540 ;; bitlbee's configure script does not tolerate many of the
541 ;; variable settings that Guix would pass to it.
542 (lambda* (#:key outputs #:allow-other-keys)
543 (invoke "./configure"
544 (string-append "--prefix="
545 (assoc-ref outputs "out"))
546 "--otr=1"))))))
547 (synopsis "IRC to instant messaging gateway")
548 (description "BitlBee brings IM (instant messaging) to IRC clients, for
549people who have an IRC client running all the time and don't want to run an
550additional IM client. BitlBee currently supports XMPP/Jabber (including
551Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
552microblogging network (plus all other Twitter API compatible services like
553identi.ca and status.net).")
554 (home-page "https://www.bitlbee.org/")
555 (license (list license:gpl2+ license:bsd-2))))
556
557(define-public bitlbee-purple
558 ;; This variant uses libpurple, which provides support for more protocols at
559 ;; the expense of a much bigger closure.
560 (package/inherit bitlbee
561 (name "bitlbee-purple")
562 (synopsis "IRC to instant messaging gateway (using Pidgin's libpurple)")
563 (inputs `(("purple" ,pidgin)
564 ,@(package-inputs bitlbee)))
565 (arguments
566 (substitute-keyword-arguments (package-arguments bitlbee)
567 ((#:phases phases '%standard-phases)
568 `(modify-phases ,phases
569 (replace 'configure ;add "--purple=1"
570 (lambda* (#:key outputs #:allow-other-keys)
571 (invoke "./configure"
572 (string-append "--prefix="
573 (assoc-ref outputs "out"))
574 "--otr=1" "--purple=1")))))
575 ((#:tests? _ #t)
576 ;; XXX: Tests fail to link, and ./configure says that it's "supported
577 ;; on a best-effort basis" anyway.
578 #f)))))
579
580(define-public bitlbee-discord
581 (package
582 (name "bitlbee-discord")
583 (version "0.4.3")
584 (source
585 (origin
586 (method git-fetch)
587 (uri (git-reference
588 (url "https://github.com/sm00th/bitlbee-discord")
589 (commit version)))
590 (file-name (git-file-name name version))
591 (sha256
592 (base32 "00qgdvrp7hv02n0ns685igp810zxmv3adsama8601122al6x041n"))))
593 (build-system gnu-build-system)
594 (arguments
595 `(#:configure-flags
596 (let ((out (assoc-ref %outputs "out")))
597 (list (string-append "--with-bdatadir=" out "/share/bitlbee/")
598 (string-append "--with-plugindir=" out "/lib/bitlbee/")))
599 #:phases
600 (modify-phases %standard-phases
601 (add-after 'unpack 'patch-autogen
602 (lambda _
603 (let ((sh (which "sh")))
604 (substitute* "autogen.sh" (("/bin/sh") sh))
605 (setenv "CONFIG_SHELL" sh)))))))
606 (inputs `(("glib" ,glib)))
607 (native-inputs `(("pkg-config" ,pkg-config)
608 ("autoconf" ,autoconf)
609 ("automake" ,automake)
610 ("texinfo" ,texinfo)
611 ("libtool" ,libtool)
612 ("bitlbee" ,bitlbee) ; needs bitlbee headers
613 ("bash" ,bash)))
614 (synopsis "Discord plugin for Bitlbee")
615 (description "Bitlbee-discord is a plugin for Bitlbee which provides
616access to servers running the Discord protocol.")
617 (home-page "https://github.com/sm00th/bitlbee-discord/")
618 (license license:gpl2+)))
619
620(define-public purple-mattermost
621 ;; The latest release (1.2) only supports Mattermost's /api/v3. Choose a
622 ;; commit that supports /api/v4.
623 (let ((commit "158ce2052af9aaf3d1f6f045f0cfba276e0e91cf")
624 (revision "0"))
625 (package
626 (name "purple-mattermost")
627 (version (git-version "1.2" revision commit))
628 (home-page "https://github.com/EionRobb/purple-mattermost")
629 (source (origin
630 (method git-fetch)
631 (uri (git-reference (url home-page)
632 (commit commit)))
633 (file-name (git-file-name name version))
634 (sha256
635 (base32
636 "1481zm20pnfq52ncg7hxayjq8cw3a6yh9m4jm1m5s8chsq04015l"))))
637 (build-system gnu-build-system)
638 (arguments
639 `(#:phases (modify-phases %standard-phases
640 (replace 'configure
641 (lambda* (#:key inputs outputs #:allow-other-keys)
642 ;; Adjust the makefile to install files in the right
643 ;; place.
644 (let ((out (assoc-ref outputs "out")))
645 (substitute* "Makefile"
646 (("MATTERMOST_DEST = .*")
647 (string-append "MATTERMOST_DEST = " out
648 "/lib/purple-2\n")) ;XXX: hardcoded
649 (("MATTERMOST_ICONS_DEST = .*")
650 (string-append "MATTERMOST_ICONS_DEST = "
651 out
652 "/share/pixmaps/pidgin/protocols\n")))
653 #t))))
654 #:make-flags (list "CC=gcc"
655 ,(string-append "PLUGIN_VERSION=" version))
656 #:tests? #f))
657 (inputs `(("glib" ,glib)
658 ("json-glib" ,json-glib)
659 ("discount" ,discount)
660 ("pidgin" ,pidgin)))
661 (native-inputs `(("pkg-config" ,pkg-config)))
662 (synopsis "Purple plug-in to access Mattermost instant messaging")
663 (description
664 "Purple-Mattermost is a plug-in for Purple, the instant messaging library
665used by Pidgin and Bitlbee, among others, to access
666@uref{https://mattermost.com/, Mattermost} servers.")
667 (license license:gpl3+))))
668
669(define-public hexchat
670 (package
671 (name "hexchat")
672 (version "2.14.3")
673 (source (origin
674 (method url-fetch)
675 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
676 version ".tar.xz"))
677 (patches (search-patches "hexchat-add-libera-chat.patch"))
678 (sha256
679 (base32
680 "10p829jm1r6kidkgf5lhqhyqc5mxdcq96q3zhadsckasvc9rs6lh"))))
681 (build-system meson-build-system)
682 (native-inputs `(("gettext" ,gettext-minimal)
683 ("glib:bin" ,glib "bin") ;need glib-genmarshal
684 ("perl" ,perl)
685 ("pkg-config" ,pkg-config)))
686 (inputs `(("dbus-glib" ,dbus-glib)
687 ("dbus" ,dbus)
688 ("enchant" ,enchant)
689 ("gtk" ,gtk+-2)
690 ("libcanberra" ,libcanberra)
691 ("libnotify" ,libnotify)
692 ("libproxy" ,libproxy)
693 ("openssl" ,openssl)
694
695 ;; Bindings for add-on scripts.
696 ("luajit" ,luajit)
697 ("perl-xml-parser" ,perl-xml-parser)
698 ("python-2" ,python-2)))
699 (arguments
700 `(#:phases
701 (modify-phases %standard-phases
702 (add-after 'unpack 'skip-desktop-database-updates
703 (lambda _
704 ;; The build scripts update icon and desktop file databases when
705 ;; DESTDIR is not set. We can't update these databases from
706 ;; within the build chroot, but we also don't set DESTDIR. So, we
707 ;; just skip this code.
708 (substitute* "meson_post_install.py"
709 (("if 'DESTDIR' not in os.environ:")
710 "if False:"))
711 #t)))))
712 (synopsis "Graphical IRC client")
713 (description
714 "HexChat lets you connect to multiple IRC networks at once. The main
715window shows the list of currently connected networks and their channels, the
716current conversation and the list of users. It uses colors to differentiate
717between users and to highlight messages. It checks spelling using available
718dictionaries. HexChat can be extended with multiple addons.")
719 (home-page "https://hexchat.net/")
720 (license license:gpl2+)))
721
722(define-public ngircd
723 (package
724 (name "ngircd")
725 (version "26.1")
726 (source (origin
727 (method url-fetch)
728 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
729 version ".tar.xz"))
730 (sha256
731 (base32
732 "0m32v0c7mq96rshws4h6d0pi4bm0hynfzx3x01mgrxh9c396zham"))
733 (patches (search-patches "ngircd-handle-zombies.patch"))))
734 (build-system gnu-build-system)
735 ;; Needed for the test suite.
736 (native-inputs `(("procps" ,procps)
737 ("expect" ,expect)
738 ("inetutils" ,inetutils)
739 ("openssl" ,openssl)))
740 ;; XXX Add libident.
741 (inputs `(("zlib" ,zlib)
742 ("libwrap" ,tcp-wrappers)
743 ("gnutls" ,gnutls)
744 ,@(if (string-suffix? "-linux"
745 (or (%current-target-system)
746 (%current-system)))
747 `(("linux-pam" ,linux-pam))
748 '())))
749 (arguments
750 `(#:configure-flags
751 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
752 ,@(if (string-suffix? "-linux"
753 (or (%current-target-system)
754 (%current-system)))
755 '("--with-pam")
756 '()))
757 #:phases
758 (modify-phases %standard-phases
759 ;; Necessary for the test suite.
760 (add-after 'configure 'post-configure
761 (lambda _
762 (substitute* "src/ngircd/Makefile"
763 (("/bin/sh") (which "sh")))
764 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
765 ;; which fails arbitrarily.
766 (with-output-to-file "src/testsuite/getpid.sh"
767 (lambda ()
768 (display
769 (string-append
770 "#!" (which "sh") "\n"
771 "ps -C \"$1\" -o pid=\n"))))
772 ;; Our variant of getpid.sh does not match interpreter names
773 ;; when the script's shebang is invoked directly as "./foo".
774 ;; Patch cases where the test suite relies on this.
775 (substitute* "src/testsuite/start-server.sh"
776 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
777 ;; 'make' instead.
778 (("getpid.sh sh") "getpid.sh make")))))))
779 (home-page "https://ngircd.barton.de/")
780 (synopsis "Lightweight Internet Relay Chat server for small networks")
781 (description
782 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
783or private networks. It is easy to configure, can cope with dynamic IP
784addresses, and supports IPv6, SSL-protected connections, as well as PAM for
785authentication.")
786 (license license:gpl2+)))
787
788(define-public pidgin
789 (package
790 (name "pidgin")
791 (version "2.14.5")
792 (source
793 (origin
794 (method url-fetch)
795 (uri
796 (string-append "mirror://sourceforge/pidgin/Pidgin/"
797 version "/pidgin-" version ".tar.gz"))
798 (sha256
799 (base32 "12llip3r8126gph82r638xjv2v2rg34qgggn1nbwfmc3s7halimr"))
800 (patches
801 (search-patches "pidgin-add-search-path.patch"))
802 (modules '((guix build utils)))
803 (snippet
804 '(begin
805 ;; Remove stale generated file after applying patches.
806 (delete-file "configure")
807 #t))))
808 (build-system glib-or-gtk-build-system)
809 (native-inputs
810 `(("autoconf" ,autoconf) ;; For bootstrap
811 ("automake" ,automake) ;; For bootstrap
812 ("check" ,check)
813 ("dot" ,graphviz)
814 ("gconf" ,gconf)
815 ("intltool" ,intltool)
816 ("libtool" ,libtool) ;; For bootstrap
817 ("pkg-config" ,pkg-config)))
818 (inputs
819 `(("avahi" ,avahi)
820 ("cyrus-sasl" ,cyrus-sasl)
821 ("dbus" ,dbus)
822 ("dbus-glib" ,dbus-glib)
823 ;; ("evolution-data-server" ,evolution-data-server)
824 ("farstream" ,farstream)
825 ("gnutls" ,gnutls)
826 ("gstreamer" ,gstreamer)
827 ;; ("gtkspell2" ,gtkspell2)
828 ("libgadu" ,libgadu)
829 ("libgcrypt" ,libgcrypt)
830 ("libgnt" ,libgnt)
831 ("libice" ,libice)
832 ("libidn" ,libidn)
833 ("libltdl" ,libltdl)
834 ("libsm" ,libsm)
835 ("libx11" ,libx11)
836 ("libxext" ,libxext)
837 ("libxml2" ,libxml2)
838 ("libxscrnsaver" ,libxscrnsaver)
839 ("libxslt" ,libxslt)
840 ;; ("libzephyr" ,libzephyr)
841 ("meanwhile" ,meanwhile)
842 ("mono" ,mono)
843 ("ncurses" ,ncurses)
844 ("network-manager" ,network-manager)
845 ("nspr" ,nspr)
846 ("nss" ,nss)
847 ("pango" ,pango)
848 ("perl" ,perl)
849 ("python" ,python-2)
850 ("python2-dbus" ,python2-dbus)
851 ("silc" ,silc-toolkit)
852 ("sqlite" ,sqlite)
853 ("startup-notification" ,startup-notification)
854 ("tcl" ,tcl)
855 ("tk" ,tk)))
856 (propagated-inputs
857 `(("glib" ,glib)
858 ("gtk+" ,gtk+-2)))
859 (arguments
860 `(#:configure-flags
861 (list
862 (string-append "CFLAGS=-I"
863 (assoc-ref %build-inputs "gst-plugins-base")
864 "/include/gstreamer-1.0")
865 "--disable-gtkspell"
866 "--disable-gevolution"
867 "--enable-cap"
868 "--enable-mono"
869 "--enable-cyrus-sasl"
870 (string-append "--with-ncurses-headers="
871 (assoc-ref %build-inputs "ncurses")
872 "/include")
873 (string-append "--with-tclconfig="
874 (assoc-ref %build-inputs "tcl")
875 "/lib")
876 (string-append "--with-tkconfig="
877 (assoc-ref %build-inputs "tk")
878 "/lib"))))
879 (native-search-paths
880 (list
881 (search-path-specification
882 (variable "PURPLE_PLUGIN_PATH")
883 (files
884 (list
885 (string-append "lib/purple-"
886 (version-major version))
887 "lib/pidgin")))))
888 (home-page "https://www.pidgin.im/")
889 (synopsis "Graphical multi-protocol instant messaging client")
890 (description "Pidgin is a modular instant messaging client that supports
891many popular chat protocols.")
892 (license
893 (list
894 license:gpl2+ ; Most of the code
895 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
896 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
897 ;; The following licenses cover the zephyr protocol plugin:
898 (license:non-copyleft
899 "file://libpurple/protocols/zephyr/mit-copyright.h"
900 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
901 (license:non-copyleft
902 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
903 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
904
905(define-public pidgin-otr
906 (package
907 (name "pidgin-otr")
908 (version "4.0.2")
909 (source
910 (origin
911 (method url-fetch)
912 (uri
913 (string-append "https://otr.cypherpunks.ca/"
914 name "-" version ".tar.gz"))
915 (sha256
916 (base32 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
917 (build-system gnu-build-system)
918 (native-inputs
919 `(("gettext" ,gettext-minimal)
920 ("intltool" ,intltool)
921 ("pkg-config" ,pkg-config)))
922 (inputs
923 `(("glib" ,glib)
924 ("gtk+" ,gtk+-2)
925 ("libgcrypt" ,libgcrypt)
926 ("libgpg-error" ,libgpg-error)
927 ("libotr" ,libotr)
928 ("perl" ,perl)
929 ("pidgin" ,pidgin)))
930 (home-page "https://otr.cypherpunks.ca/")
931 (synopsis "Off-the-Record Messaging plugin for Pidgin")
932 (description "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin
933instant messaging client. OTR (Off-the-Record) Messaging allows you to have
934private conversations over instant messaging by providing: (1) Encryption: No
935one else can read your instant messages. (2) Authentication: You are assured
936the correspondent is who you think it is. (3) Deniability: The messages you
937send do not have digital signatures that are checkable by a third party. Anyone
938can forge messages after a conversation to make them look like they came from
939you. However, during a conversation, your correspondent is assured the messages
940he sees are authentic and unmodified. (4) Perfect forward secrecy: If you lose
941control of your private keys, no previous conversation is compromised.")
942 (license license:gpl2+)))
943
944(define-public znc
945 (package
946 (name "znc")
947 (version "1.8.2")
948 (source (origin
949 (method url-fetch)
950 (uri (string-append "https://znc.in/releases/archive/znc-"
951 version ".tar.gz"))
952 (sha256
953 (base32
954 "03fyi0j44zcanj1rsdx93hkdskwfvhbywjiwd17f9q1a7yp8l8zz"))))
955 (build-system cmake-build-system)
956 (arguments
957 `(#:configure-flags
958 (list "-DWANT_CYRUS=ON"
959 "-DWANT_I18N=ON"
960 "-DWANT_PERL=ON"
961 "-DWANT_PYTHON=ON")
962 #:phases
963 (modify-phases %standard-phases
964 (add-after 'unpack 'unpack-googletest
965 ;; Copy the googletest sources to where the CMake build expects them.
966 (lambda* (#:key inputs #:allow-other-keys)
967 (let ((source (assoc-ref inputs "googletest-source"))
968 (target "third_party/googletest"))
969 (mkdir-p target)
970 (copy-recursively source target)
971 #t))))))
972 (native-inputs
973 `(("boost" ,boost)
974 ("gettext" ,gettext-minimal)
975 ("googletest-source" ,(package-source googletest))
976 ("pkg-config" ,pkg-config)))
977 (inputs
978 `(("cyrus-sasl" ,cyrus-sasl)
979 ("icu4c" ,icu4c)
980 ("openssl" ,openssl)
981 ("perl" ,perl)
982 ("python" ,python)
983 ("zlib" ,zlib)))
984 (home-page "https://wiki.znc.in/ZNC")
985 (synopsis "IRC network bouncer")
986 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
987detach the client from the actual IRC server, and also from selected channels.
988Multiple clients from different locations can connect to a single ZNC account
989simultaneously and therefore appear under the same nickname on IRC.")
990 (license license:asl2.0)))
991
992(define-public python-nbxmpp
993 (package
994 (name "python-nbxmpp")
995 (version "2.0.2")
996 (source
997 (origin
998 (method url-fetch)
999 (uri
1000 (pypi-uri "nbxmpp" version))
1001 (sha256
1002 (base32 "1482fva70i01w60fk70c0fhqmqgzi1fb4xflllz2v6c8mdqkd1m3"))))
1003 (build-system python-build-system)
1004 (native-inputs
1005 `(("glib:bin" ,glib "bin")))
1006 (inputs
1007 `(("glib" ,glib)
1008 ("glib-networking" ,glib-networking)
1009 ("libsoup" ,libsoup)
1010 ("python-gssapi" ,python-gssapi)
1011 ("python-idna" ,python-idna)
1012 ("python-precis-i18n" ,python-precis-i18n)
1013 ("python-pygobject" ,python-pygobject)))
1014 (synopsis "Non-blocking XMPP Module")
1015 (description "Python-nbxmpp is a Python library that provides a way for
1016Python applications to use the XMPP network. This library was initially a fork
1017of xmpppy.")
1018 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
1019 (license license:gpl3+)))
1020
1021(define-public gajim
1022 (package
1023 (name "gajim")
1024 (version "1.3.2")
1025 (source
1026 (origin
1027 (method url-fetch)
1028 (uri
1029 (string-append "https://gajim.org/downloads/"
1030 (version-major+minor version)
1031 "/gajim-" version ".tar.gz"))
1032 (sha256
1033 (base32 "1vjzv8zg9s393xw81klcgbkn4h6j2blzla9iil5kqfrw7wmldskh"))
1034 (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
1035 (build-system python-build-system)
1036 (arguments
1037 `(#:imported-modules
1038 (,@%python-build-system-modules
1039 (guix build glib-or-gtk-build-system))
1040 #:modules
1041 ((guix build python-build-system)
1042 ((guix build glib-or-gtk-build-system)
1043 #:prefix glib-or-gtk:)
1044 (guix build utils))
1045 #:phases
1046 (modify-phases %standard-phases
1047 (add-after 'unpack 'disable-failing-tests
1048 (lambda _
1049 ;; ModuleNotFoundError: No module named 'gajim.gui.emoji_data'
1050 ;; https://dev.gajim.org/gajim/gajim/-/issues/10478
1051 (delete-file "test/lib/gajim_mocks.py")
1052 (delete-file "test/unit/test_gui_interface.py")
1053 #t))
1054 (replace 'check
1055 (lambda _
1056 ;; Tests require a running X server.
1057 (system "Xvfb :1 +extension GLX &")
1058 (setenv "DISPLAY" ":1")
1059 ;; For missing '/etc/machine-id'.
1060 (setenv "DBUS_FATAL_WARNINGS" "0")
1061 (invoke "dbus-launch" "python" "./setup.py" "test")
1062 #t))
1063 (add-after 'install 'glib-or-gtk-compile-schemas
1064 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
1065 (add-after 'install 'glib-or-gtk-wrap
1066 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
1067 (add-after 'install 'wrap-env
1068 (lambda* (#:key outputs #:allow-other-keys)
1069 (let ((out (assoc-ref outputs "out")))
1070 (for-each
1071 (lambda (name)
1072 (let ((file (string-append out "/bin/" name))
1073 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
1074 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
1075 (wrap-program file
1076 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
1077 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
1078 '("gajim" "gajim-remote" "gajim-history-manager")))
1079 #t)))))
1080 (native-search-paths
1081 (list
1082 (search-path-specification
1083 (variable "GAJIM_PLUGIN_PATH")
1084 (separator #f) ;single entry
1085 (files
1086 (list
1087 "share/gajim/plugins")))
1088 ;; Gajim needs to use the propagated inputs of its plugins.
1089 (search-path-specification
1090 (variable "GUIX_PYTHONPATH")
1091 (files
1092 (list
1093 (string-append
1094 "lib/python"
1095 ;; FIXME: Cannot use this expression as it would
1096 ;; introduce a circular dependency at the top level.
1097 ;; (version-major+minor (package-version python))
1098 "3.8"
1099 "/site-packages"))))))
1100 (native-inputs
1101 `(("gettext" ,gettext-minimal)
1102 ("glib:bin" ,glib "bin")
1103 ("gobject-introspection" ,gobject-introspection)
1104 ("gtk+:bin" ,gtk+ "bin")
1105 ("python-distutils-extra" ,python-distutils-extra)
1106 ("python-setuptools" ,python-setuptools)
1107 ("xorg-server" ,xorg-server-for-tests)))
1108 (inputs
1109 `(("avahi" ,avahi)
1110 ("dbus" ,dbus)
1111 ("farstream" ,farstream)
1112 ("geoclue" ,geoclue)
1113 ("glib" ,glib)
1114 ("glib-networking" ,glib-networking)
1115 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
1116 ("gsound",gsound)
1117 ("gspell" ,gspell)
1118 ("gstreamer" ,gstreamer)
1119 ("gst-plugins-base" ,gst-plugins-base)
1120 ("gtk+" ,gtk+)
1121 ("gupnp-igd" ,gupnp-igd)
1122 ("libsecret" ,libsecret)
1123 ("libsoup" ,libsoup)
1124 ("libxss" ,libxscrnsaver)
1125 ("network-manager" ,network-manager)
1126 ("python-css-parser" ,python-css-parser)
1127 ("python-keyring" ,python-keyring)
1128 ("python-nbxmpp" ,python-nbxmpp)
1129 ("python-packaging" ,python-packaging)
1130 ("python-pillow" ,python-pillow)
1131 ("python-precis-i18n" ,python-precis-i18n)
1132 ("python-pycairo" ,python-pycairo)
1133 ("python-pygobject" ,python-pygobject)
1134 ("python-pyopenssl" ,python-pyopenssl)))
1135 (propagated-inputs
1136 `(("dconf" ,dconf)))
1137 (synopsis "Fully-featured XMPP client")
1138 (description "Gajim aims to be an easy to use and fully-featured XMPP chat
1139client. It is extensible via plugins, supports end-to-end encryption (OMEMO
1140and OpenPGP) and available in 29 languages.")
1141 (home-page "https://gajim.org/")
1142 (license license:gpl3)))
1143
1144(define-public gajim-omemo
1145 (package
1146 (name "gajim-omemo")
1147 (version "2.7.14")
1148 (source
1149 (origin
1150 (method url-fetch/zipbomb)
1151 (uri
1152 (string-append
1153 "https://ftp.gajim.org/plugins_releases/omemo_"
1154 version ".zip"))
1155 (sha256
1156 (base32 "0jmyjqfc4vimvq5vdqsvz25dsij6bh92alml8qnn59p5farnf86v"))))
1157 (build-system trivial-build-system)
1158 (arguments
1159 `(#:modules ((guix build utils))
1160 #:builder
1161 (begin
1162 (use-modules (guix build utils))
1163 (let* ((out (assoc-ref %outputs "out"))
1164 (share (in-vicinity out "share/gajim/plugins"))
1165 (source (assoc-ref %build-inputs "source")))
1166 (mkdir-p share)
1167 (copy-recursively source share)
1168 #t))))
1169 (propagated-inputs
1170 `(("python-axolotl" ,python-axolotl)
1171 ("python-axolotl-curve25519" ,python-axolotl-curve25519)
1172 ("python-cryptography" ,python-cryptography)
1173 ("python-qrcode" ,python-qrcode)))
1174 (synopsis "Gajim OMEMO plugin")
1175 (description "Gajim-OMEMO is a plugin that adds support for the OMEMO
1176Encryption to Gajim. OMEMO is an XMPP Extension Protocol (XEP) for secure
1177multi-client end-to-end encryption.")
1178 (home-page
1179 "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OmemoGajimPlugin")
1180 (license license:gpl3+)))
1181
1182(define-public gajim-openpgp
1183 (package
1184 (name "gajim-openpgp")
1185 (version "1.3.9")
1186 (source
1187 (origin
1188 (method url-fetch/zipbomb)
1189 (uri
1190 (string-append
1191 "https://ftp.gajim.org/plugins_releases/openpgp_"
1192 version ".zip"))
1193 (sha256
1194 (base32 "0fzvvrap1hmj4rbrcjs6cs5c9l9c0795bgw9vxxxk915n6j91m23"))))
1195 (build-system trivial-build-system)
1196 (arguments
1197 `(#:modules ((guix build utils))
1198 #:builder
1199 (begin
1200 (use-modules (guix build utils))
1201 (let* ((out (assoc-ref %outputs "out"))
1202 (share (in-vicinity out "share/gajim/plugins"))
1203 (source (assoc-ref %build-inputs "source")))
1204 (mkdir-p share)
1205 (copy-recursively source share)
1206 #t))))
1207 (propagated-inputs
1208 `(("python-cryptography" ,python-cryptography)
1209 ("python-gnupg" ,python-gnupg)
1210 ("python-gpg" ,python-gpg)))
1211 (synopsis "Gajim OpenPGP plugin")
1212 (description "Gajim-OpenPGP is a plugin that adds support for the OpenPGP
1213Encryption to Gajim.")
1214 (home-page "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OpenPGPplugin")
1215 (license license:gpl3+)))
1216
1217(define-public dino
1218 (package
1219 (name "dino")
1220 (version "0.2.1")
1221 (source
1222 (origin
1223 (method url-fetch)
1224 (uri
1225 (string-append "https://github.com/dino/dino/releases/download/v"
1226 version "/dino-" version ".tar.gz"))
1227 (sha256
1228 (base32 "13rk8b0sj35az32c0ii173g9ww231awmyb4jlk56jy38hpyp7x1g"))))
1229 (build-system cmake-build-system)
1230 (outputs '("out" "debug"))
1231 (arguments
1232 `(#:tests? #f
1233 #:parallel-build? #f ; not supported
1234 #:modules ((guix build cmake-build-system)
1235 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
1236 (guix build utils))
1237 #:imported-modules (,@%gnu-build-system-modules
1238 (guix build cmake-build-system)
1239 (guix build glib-or-gtk-build-system))
1240 #:phases
1241 (modify-phases %standard-phases
1242 ;; To be enabled in v0.3.0, for A/V support.
1243 ;;(add-after 'install 'wrap
1244 ;;(lambda* (#:key outputs #:allow-other-keys)
1245 ;;(let* ((out (assoc-ref outputs "out"))
1246 ;;(dino (string-append out "/bin/dino"))
1247 ;;(gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
1248 ;;(wrap-program dino
1249 ;;`("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))))
1250 (add-after 'install 'glib-or-gtk-wrap
1251 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
1252 (native-inputs
1253 `(("gettext" ,gettext-minimal)
1254 ("glib:bin" ,glib "bin")
1255 ("gobject-introspection" ,gobject-introspection)
1256 ("gtk+:bin" ,gtk+ "bin")
1257 ("pkg-config" ,pkg-config)
1258 ("vala" ,vala)))
1259 (inputs
1260 ;; NOTE: Commented-out lines are to be enabled in v0.3.0.
1261 `(("atk" ,atk)
1262 ("cairo" ,cairo)
1263 ("gdk-pixbuf" ,gdk-pixbuf+svg)
1264 ("glib" ,glib)
1265 ("glib-networking" ,glib-networking)
1266 ("gpgme" ,gpgme)
1267 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
1268 ("gspell" ,gspell) ;for spell-check support
1269 ;;("gstreamer" ,gstreamer) ;for A/V support
1270 ;;("gst-plugins-base" ,gst-plugins-base)
1271 ;;("gst-plugins-good" ,gst-plugins-good)
1272 ("gtk+" ,gtk+)
1273 ("icu4c" ,icu4c) ;for emoji support
1274 ;;("libcanberra" ,libcanberra) ;for sound-notification support
1275 ("libgcrypt" ,libgcrypt)
1276 ("libgee" ,libgee)
1277 ("libnice" ,libnice)
1278 ("libsignal-protocol-c" ,libsignal-protocol-c)
1279 ("libsoup" ,libsoup)
1280 ;;("libsrtp" ,libsrtp) ;for calls support
1281 ("pango" ,pango)
1282 ("qrencode" ,qrencode)
1283 ("sqlite" ,sqlite)))
1284 ;;("webrtc-audio-processing" ,webrtc-audio-processing))) ;for A/V support
1285 (synopsis "Graphical Jabber/XMPP Client using GTK+/Vala")
1286 (description "Dino is a chat client for the desktop. It focuses on providing
1287a minimal yet reliable Jabber/XMPP experience and having encryption enabled by
1288default.")
1289 (home-page "https://dino.im")
1290 (license license:gpl3+)))
1291
1292(define-public prosody
1293 (package
1294 (name "prosody")
1295 (version "0.11.9")
1296 (source (origin
1297 (method url-fetch)
1298 (uri (string-append "https://prosody.im/downloads/source/"
1299 "prosody-" version ".tar.gz"))
1300 (sha256
1301 (base32
1302 "02gzvsaq0l5lx608sfh7hfz14s6yfsr4sr4kzcsqd1cxljp35h6c"))))
1303 (build-system gnu-build-system)
1304 (arguments
1305 `(#:tests? #f ;tests require "busted"
1306 #:configure-flags (list "--no-example-certs")
1307 #:modules ((ice-9 match)
1308 (srfi srfi-1)
1309 (guix build gnu-build-system)
1310 (guix build utils))
1311 #:phases
1312 (modify-phases %standard-phases
1313 (add-after 'unpack 'fix-configure-script
1314 (lambda _
1315 ;; The configure script aborts when it encounters unexpected
1316 ;; arguments. Make it more tolerant.
1317 (substitute* "configure"
1318 (("exit 1") ""))
1319 #t))
1320 (add-after 'unpack 'fix-makefile
1321 (lambda _
1322 (substitute* "GNUmakefile"
1323 ;; prosodyctl needs to read the configuration file.
1324 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
1325 ;; prosodyctl needs a place to put auto-generated certificates.
1326 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
1327 #t))
1328 (add-after 'install 'wrap-programs
1329 (lambda* (#:key inputs outputs #:allow-other-keys)
1330 ;; Make sure all executables in "bin" find the required Lua
1331 ;; modules at runtime.
1332 (let* ((out (assoc-ref outputs "out"))
1333 (bin (string-append out "/bin/"))
1334 (deps (delete #f (map (match-lambda
1335 ((label . directory)
1336 (if (string-prefix? "lua" label)
1337 directory #f)))
1338 inputs)))
1339 (lua-path (string-join
1340 (map (lambda (path)
1341 (string-append
1342 path "/share/lua/5.2/?.lua;"
1343 path "/share/lua/5.2/?/?.lua"))
1344 (cons out deps))
1345 ";"))
1346 (lua-cpath (string-join
1347 (map (lambda (path)
1348 (string-append
1349 path "/lib/lua/5.2/?.so;"
1350 path "/lib/lua/5.2/?/?.so"))
1351 (cons out deps))
1352 ";"))
1353 (openssl (assoc-ref inputs "openssl"))
1354 (coreutils (assoc-ref inputs "coreutils"))
1355 (path (map (lambda (dir)
1356 (string-append dir "/bin"))
1357 (list openssl coreutils))))
1358 (for-each (lambda (file)
1359 (wrap-program file
1360 `("LUA_PATH" ";" = (,lua-path))
1361 `("LUA_CPATH" ";" = (,lua-cpath))
1362 `("PATH" ":" prefix ,path)))
1363 (find-files bin ".*"))
1364 #t))))))
1365 (inputs
1366 `(("libidn" ,libidn)
1367 ("openssl" ,openssl)
1368 ("lua" ,lua-5.2)
1369 ("lua5.2-bitop" ,lua5.2-bitop)
1370 ("lua5.2-expat" ,lua5.2-expat)
1371 ("lua5.2-socket" ,lua5.2-socket)
1372 ("lua5.2-filesystem" ,lua5.2-filesystem)
1373 ("lua5.2-sec" ,lua5.2-sec)))
1374 (home-page "https://prosody.im/")
1375 (synopsis "Jabber (XMPP) server")
1376 (description "Prosody is a modern XMPP communication server. It aims to
1377be easy to set up and configure, and efficient with system resources.
1378Additionally, for developers it aims to be easy to extend and give a flexible
1379system on which to rapidly develop added functionality, or prototype new
1380protocols.")
1381 (license license:x11)))
1382
1383(define-public prosody-http-upload
1384 (let ((changeset "765735bb590b")
1385 (revision "1"))
1386 (package
1387 (name "prosody-http-upload")
1388 (version (string-append "0-" revision "." (string-take changeset 7)))
1389 (source (origin
1390 (method hg-fetch)
1391 (uri (hg-reference
1392 (url "https://hg.prosody.im/prosody-modules/")
1393 (changeset changeset)))
1394 (file-name (string-append name "-" version "-checkout"))
1395 (sha256
1396 (base32
1397 "142wrcism70nf8ffahhd961cqg2pi1h7ic8adfs3zwh0j3pnf41f"))))
1398 (build-system trivial-build-system)
1399 (arguments
1400 '(#:modules ((guix build utils))
1401 #:builder
1402 (begin
1403 (use-modules (guix build utils))
1404 (let ((out (assoc-ref %outputs "out"))
1405 (source (assoc-ref %build-inputs "source")))
1406 (with-directory-excursion (in-vicinity source "mod_http_upload")
1407 (install-file "mod_http_upload.lua" out))
1408 #t))))
1409 (home-page "https://modules.prosody.im/mod_http_upload.html")
1410 (synopsis "XEP-0363: Allow clients to upload files over HTTP")
1411 (description "This module implements XEP-0363: it allows clients to
1412upload files over HTTP.")
1413 (license (package-license prosody)))))
1414
1415(define-public prosody-smacks
1416 (let ((changeset "67f1d1f22625")
1417 (revision "1"))
1418 (package
1419 (name "prosody-smacks")
1420 (version (string-append "0-" revision "." (string-take changeset 7)))
1421 (source (origin
1422 (method hg-fetch)
1423 (uri (hg-reference
1424 (url "https://hg.prosody.im/prosody-modules/")
1425 (changeset changeset)))
1426 (file-name (string-append name "-" version "-checkout"))
1427 (sha256
1428 (base32
1429 "020ngpax30fgarah98yvlj0ni8rcdwq60if03a9hqdw8mic0nxxs"))))
1430 (build-system trivial-build-system)
1431 (arguments
1432 '(#:modules ((guix build utils))
1433 #:builder
1434 (begin
1435 (use-modules (guix build utils))
1436 (let ((out (assoc-ref %outputs "out"))
1437 (source (assoc-ref %build-inputs "source")))
1438 (with-directory-excursion (in-vicinity source "mod_smacks")
1439 (install-file "mod_smacks.lua" out))
1440 #t))))
1441 (home-page "https://modules.prosody.im/mod_smacks.html")
1442 (synopsis "XEP-0198: Reliability and fast reconnects for XMPP")
1443 (description "This module implements XEP-0198: when supported by both
1444the client and server, it can allow clients to resume a disconnected session,
1445and prevent message loss.")
1446 (license (package-license prosody)))))
1447
1448(define-public libtoxcore
1449 (let ((revision "2")
1450 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
1451 (package
1452 (name "libtoxcore")
1453 (version (string-append "0.0.0" "-"
1454 revision "."(string-take commit 7)))
1455 (source (origin
1456 (method git-fetch)
1457 (uri (git-reference
1458 (url "https://github.com/irungentoo/toxcore")
1459 (commit commit)))
1460 (file-name (string-append name "-" version "-checkout"))
1461 (sha256
1462 (base32
1463 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
1464 (build-system gnu-build-system)
1465 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
1466 (native-inputs
1467 `(("autoconf" ,autoconf)
1468 ("automake" ,automake)
1469 ("libtool" ,libtool)
1470 ("check" ,check)
1471 ("pkg-config" ,pkg-config)))
1472 (inputs
1473 `(("libsodium" ,libsodium)
1474 ("opus" ,opus)
1475 ("libvpx" ,libvpx)))
1476 (synopsis "Library for the Tox encrypted messenger protocol")
1477 (description
1478 "C library implementation of the Tox encrypted messenger protocol.")
1479 (license license:gpl3+)
1480 (home-page "https://tox.chat"))))
1481
1482;; Some tox clients move to c-toxcore, which seems to be where all the
1483;; recent development happens. It is run by the same developers as toxcore,
1484;; forked into a group namespace.
1485(define-public c-toxcore
1486 (package
1487 (name "c-toxcore")
1488 (version "0.2.12")
1489 (source
1490 (origin
1491 (method git-fetch)
1492 (uri (git-reference
1493 (url "https://github.com/TokTok/c-toxcore")
1494 (commit (string-append "v" version))))
1495 (file-name (git-file-name name version))
1496 (sha256
1497 (base32
1498 "0a6sqpm00d2rn0nviqfz4gh9ck1wzci6rxgmqmcyryl5ca19ffvp"))))
1499 (arguments
1500 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
1501 ; for now.
1502 (build-system cmake-build-system)
1503 (native-inputs
1504 `(("pkg-config" ,pkg-config)))
1505 (propagated-inputs
1506 `(("libsodium" ,libsodium)
1507 ("opus" ,opus)
1508 ("libvpx" ,libvpx)))
1509 (home-page "https://tox.chat")
1510 (synopsis "Library for the Tox encrypted messenger protocol")
1511 (description
1512 "Official fork of the C library implementation of the Tox encrypted
1513messenger protocol.")
1514 (license license:gpl3+)))
1515
1516(define-public utox
1517 (package
1518 (name "utox")
1519 (version "0.18.1")
1520 (source
1521 (origin
1522 (method git-fetch)
1523 (uri (git-reference
1524 (url "https://github.com/uTox/uTox")
1525 (commit (string-append "v" version))
1526 (recursive? #t))) ;; Needed for 'minini' git submodule.
1527 (file-name (string-append name "-" version "-checkout"))
1528 (sha256
1529 (base32
1530 "01rvlf94d4rkrygnnjak3cg16hrrqyi1rn9nx65y17qk2nbyh68g"))))
1531 (build-system cmake-build-system)
1532 (arguments
1533 `(#:configure-flags '("-DENABLE_TESTS=on")
1534 #:phases
1535 (modify-phases %standard-phases
1536 (add-before 'build 'patch-absolute-filename-libgtk-3
1537 (lambda* (#:key inputs outputs #:allow-other-keys)
1538 (substitute* "../source/src/xlib/gtk.c"
1539 (("libgtk-3.so")
1540 (string-append (assoc-ref inputs "gtk+")
1541 "/lib/libgtk-3.so")))))
1542 (add-after 'install 'wrap-program
1543 (lambda* (#:key inputs outputs #:allow-other-keys)
1544 (wrap-program (string-append (assoc-ref outputs "out")
1545 "/bin/utox")
1546 ;; For GtkFileChooserDialog.
1547 `("GSETTINGS_SCHEMA_DIR" =
1548 (,(string-append (assoc-ref inputs "gtk+")
1549 "/share/glib-2.0/schemas")))))))))
1550 (inputs
1551 `(("dbus" ,dbus)
1552 ("filteraudio" ,filteraudio)
1553 ("fontconfig" ,fontconfig)
1554 ("freetype" ,freetype)
1555 ("c-toxcore" ,c-toxcore)
1556 ("gtk+" ,gtk+)
1557 ("libvpx" ,libvpx)
1558 ("libx11" ,libx11)
1559 ("libxext" ,libxext)
1560 ("libxrender" ,libxrender)
1561 ("openal" ,openal)
1562 ("v4l-utils" ,v4l-utils)))
1563 (native-inputs
1564 `(("check" ,check)
1565 ("pkg-config" ,pkg-config)))
1566 (synopsis "Lightweight Tox client")
1567 (description
1568 "uTox is a lightweight Tox client. Tox is a distributed and secure
1569instant messenger with audio and video chat capabilities.")
1570 (home-page "https://github.com/uTox/uTox")
1571 (license license:gpl3)))
1572
1573(define-public qtox
1574 (package
1575 (name "qtox")
1576 (version "1.17.3")
1577 (source (origin
1578 (method url-fetch)
1579 (uri (string-append "https://github.com/qTox/qTox/releases"
1580 "/download/v" version
1581 "/v" version ".tar.gz"))
1582 (sha256
1583 (base32
1584 "11n7si9wdpf80iwkvbspp14dh5jrwm7hxkj8vqhn5pkc48c5bh9j"))
1585 (file-name (string-append name "-" version ".tar.gz"))))
1586 (build-system cmake-build-system)
1587 (arguments
1588 '(#:phases
1589 (modify-phases %standard-phases
1590 (add-after 'unpack 'fix-reproducibility-issues
1591 (lambda _
1592 (substitute* "src/main.cpp"
1593 (("__DATE__") "\"\"")
1594 (("__TIME__") "\"\"")
1595 (("TIMESTAMP") "\"\""))
1596 #t))
1597 (add-after 'unpack 'disable-network-tests
1598 (lambda _
1599 ;; These tests require network access.
1600 (substitute* "cmake/Testing.cmake"
1601 (("auto_test\\(core core\\)") "# auto_test(core core)")
1602 (("auto_test\\(net bsu\\)") "# auto_test(net bsu)"))
1603 #t))
1604 ;; Ensure that icons are found at runtime.
1605 (add-after 'install 'wrap-executable
1606 (lambda* (#:key inputs outputs #:allow-other-keys)
1607 (let ((out (assoc-ref outputs "out")))
1608 (wrap-program (string-append out "/bin/qtox")
1609 `("QT_PLUGIN_PATH" prefix
1610 ,(list (string-append (assoc-ref inputs "qtsvg")
1611 "/lib/qt5/plugins/"))))))))))
1612 (inputs
1613 `(("ffmpeg" ,ffmpeg)
1614 ("filteraudio" ,filteraudio)
1615 ("glib" ,glib)
1616 ("gtk+" ,gtk+-2)
1617 ("libsodium" ,libsodium)
1618 ("c-toxcore" ,c-toxcore)
1619 ("libvpx" ,libvpx)
1620 ("libxscrnsaver" ,libxscrnsaver)
1621 ("libx11" ,libx11)
1622 ("libexif" ,libexif)
1623 ("sqlite" ,sqlite)
1624 ("openal" ,openal)
1625 ("qrencode" ,qrencode)
1626 ("qtbase" ,qtbase-5)
1627 ("qtsvg" ,qtsvg)
1628 ("sqlcipher" ,sqlcipher)))
1629 (native-inputs
1630 `(("pkg-config" ,pkg-config)
1631 ("qmake" ,qttools)))
1632 (home-page "https://qtox.github.io/")
1633 (synopsis "Tox chat client using Qt")
1634 (description "qTox is a Tox client that follows the Tox design
1635guidelines. It provides an easy to use application that allows you to
1636connect with friends and family without anyone else listening in.")
1637 (license license:gpl3+)))
1638
1639(define-public ytalk
1640 (package
1641 (name "ytalk")
1642 (version "3.3.0")
1643 (source
1644 (origin
1645 (method url-fetch)
1646 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1647 version ".tar.gz"))
1648 (sha256
1649 (base32
1650 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1651 (build-system gnu-build-system)
1652 (inputs
1653 `(("ncurses" ,ncurses)))
1654 (home-page "https://ytalk.ourproject.org")
1655 (synopsis "Multi-user chat program")
1656 (description "Ytalk is a replacement for the BSD talk program. Its main
1657advantage is the ability to communicate with any arbitrary number of users at
1658once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1659with several different talk daemons at the same time.")
1660 (license license:gpl2+)))
1661
1662(define-public gloox
1663 (package
1664 (name "gloox")
1665 (version "1.0.24")
1666 (source
1667 (origin
1668 (method url-fetch)
1669 (uri (string-append "https://camaya.net/download/gloox-"
1670 version ".tar.bz2"))
1671 (sha256
1672 (base32 "1jgrd07qr9jvbb5hcmhrqz4w4lvwc51m30jls1fgxf1f5az6455f"))))
1673 (build-system gnu-build-system)
1674 (inputs
1675 `(("libidn" ,libidn)
1676 ("gnutls" ,gnutls)
1677 ("zlib" ,zlib)))
1678 (native-inputs
1679 `(("pkg-config" ,pkg-config)))
1680 (synopsis "Portable high-level Jabber/XMPP library for C++")
1681 (description
1682 "gloox is a full-featured Jabber/XMPP client library,
1683written in ANSI C++. It makes writing spec-compliant clients easy
1684and allows for hassle-free integration of Jabber/XMPP functionality
1685into existing applications.")
1686 (home-page "https://camaya.net/gloox")
1687 (license license:gpl3)))
1688
1689(define-public perl-net-psyc
1690 (package
1691 (name "perl-net-psyc")
1692 (version "1.3")
1693 (source
1694 (origin
1695 (method url-fetch)
1696 (uri (string-append "https://perl.psyc.eu/"
1697 "perlpsyc-" version ".zip"))
1698 (file-name (string-append name "-" version ".zip"))
1699 (sha256
1700 (base32
1701 "0vsjclglkwgbyd9m5ad642fyysxw2x725nhq4r2m9pvqaq6s5yf2"))))
1702 (build-system perl-build-system)
1703 (native-inputs
1704 `(("unzip" ,unzip)))
1705 (inputs
1706 `(("perl-curses" ,perl-curses)
1707 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1708 (arguments
1709 `(#:phases
1710 (modify-phases %standard-phases
1711 (delete 'configure) ; No configure script
1712 ;; There is a Makefile, but it does not install everything
1713 ;; (leaves out psycion) and says
1714 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1715 (replace 'build
1716 (lambda _ (invoke "make" "manuals")))
1717 (replace 'install
1718 (lambda* (#:key outputs #:allow-other-keys)
1719 (let* ((out (assoc-ref outputs "out"))
1720 (doc (string-append out "/share/doc/perl-net-psyc"))
1721 (man1 (string-append out "/share/man/man1"))
1722 (man3 (string-append out "/share/man/man3"))
1723 (bin (string-append out "/bin"))
1724 (libpsyc (string-append out "/lib/psyc/ion"))
1725 (libperl (string-append out "/lib/perl5/site_perl/"
1726 ,(package-version perl))))
1727
1728 (copy-recursively "lib/perl5" libperl)
1729 (copy-recursively "lib/psycion" libpsyc)
1730 (copy-recursively "bin" bin)
1731 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1732 (copy-recursively "contrib" (string-append doc "/contrib"))
1733 (copy-recursively "hooks" (string-append doc "/hooks"))
1734 (copy-recursively "sdj" (string-append doc "/sdj"))
1735 (install-file "README.txt" doc)
1736 (install-file "TODO.txt" doc)
1737 (copy-recursively "share/man/man1" man1)
1738 (copy-recursively "share/man/man3" man3)
1739 #t)))
1740 (add-after 'install 'wrap-programs
1741 (lambda* (#:key outputs #:allow-other-keys)
1742 ;; Make sure all executables in "bin" find the Perl modules
1743 ;; provided by this package at runtime.
1744 (let* ((out (assoc-ref outputs "out"))
1745 (bin (string-append out "/bin/"))
1746 (path (getenv "PERL5LIB")))
1747 (for-each (lambda (file)
1748 (wrap-program file
1749 `("PERL5LIB" ":" prefix (,path))))
1750 (find-files bin "\\.*$"))
1751 #t))))))
1752 (description
1753 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1754Gtk2 event loops. This package includes 12 applications and additional scripts:
1755psycion (a @uref{https://about.psyc.eu,PSYC} chat client), remotor (a control console
1756for @uref{https://torproject.org,tor} router) and many more.")
1757 (synopsis "Perl implementation of PSYC protocol")
1758 (home-page "https://perl.psyc.eu")
1759 (license (list license:gpl2
1760 license:perl-license
1761 ;; contrib/irssi-psyc.pl:
1762 license:public-domain
1763 ;; bin/psycplay states AGPL with no version:
1764 license:agpl3+))))
1765
1766(define-public libpsyc
1767 (package
1768 (name "libpsyc")
1769 (version "20160913")
1770 (source (origin
1771 (method url-fetch)
1772 (uri (string-append "http://www.psyced.org/files/"
1773 name "-" version ".tar.xz"))
1774 (sha256
1775 (base32
1776 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1777 (build-system gnu-build-system)
1778 (native-inputs
1779 `(("perl" ,perl)
1780 ("netcat" ,netcat)
1781 ("procps" ,procps)))
1782 (arguments
1783 `(#:make-flags
1784 (list "CC=gcc"
1785 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1786 #:phases
1787 (modify-phases %standard-phases
1788 ;; The rust bindings are the only ones in use, the lpc bindings
1789 ;; are in psyclpc. The other bindings are not used by anything,
1790 ;; the chances are high that the bindings do not even work,
1791 ;; therefore we do not include them.
1792 ;; TODO: Get a cargo build system in Guix.
1793 (delete 'configure)))) ; no configure script
1794 (home-page "https://about.psyc.eu/libpsyc")
1795 (description
1796 "@code{libpsyc} is a PSYC library in C which implements
1797core aspects of PSYC, useful for all kinds of clients and servers
1798including psyced.")
1799 (synopsis "PSYC library in C")
1800 (license license:agpl3+)))
1801
1802;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
1803(define-public psyclpc
1804 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1805 (revision "2"))
1806 (package
1807 (name "psyclpc")
1808 (version (string-append "20160821-" revision "." (string-take commit 7)))
1809 (source (origin
1810 (method git-fetch)
1811 (uri (git-reference
1812 (url "git://git.psyced.org/git/psyclpc")
1813 (commit commit)))
1814 (file-name (string-append name "-" version "-checkout"))
1815 (sha256
1816 (base32
1817 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1818 (build-system gnu-build-system)
1819 (arguments
1820 `(#:tests? #f ; There are no tests/checks.
1821 #:configure-flags
1822 ;; If you have questions about this part, look at
1823 ;; "src/settings/psyced" and the ebuild.
1824 (list
1825 "--enable-use-tls=yes"
1826 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1827 (string-append "--prefix="
1828 (assoc-ref %outputs "out"))
1829 ;; src/Makefile: Set MUD_LIB to the directory which contains
1830 ;; the mud data. defaults to MUD_LIB = @libdir@
1831 (string-append "--libdir="
1832 (assoc-ref %outputs "out")
1833 "/opt/psyced/world")
1834 (string-append "--bindir="
1835 (assoc-ref %outputs "out")
1836 "/opt/psyced/bin")
1837 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1838 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1839 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1840 (string-append "--libexecdir="
1841 (assoc-ref %outputs "out")
1842 "/opt/psyced/run"))
1843 #:phases
1844 (modify-phases %standard-phases
1845 (add-before 'configure 'chdir-to-src
1846 ;; We need to pass this as env variables
1847 ;; and manually change the directory.
1848 (lambda _
1849 (chdir "src")
1850 (setenv "CONFIG_SHELL" (which "sh"))
1851 (setenv "SHELL" (which "sh"))
1852 #t)))
1853 #:make-flags (list "install-all")))
1854 (inputs
1855 `(("zlib" ,zlib)
1856 ("openssl" ,openssl-1.0)
1857 ("pcre" ,pcre)))
1858 (native-inputs
1859 `(("pkg-config" ,pkg-config)
1860 ("bison" ,bison)
1861 ("gettext" ,gettext-minimal)
1862 ("help2man" ,help2man)
1863 ("autoconf" ,autoconf)
1864 ("automake" ,automake)))
1865 (home-page "http://lpc.psyc.eu/")
1866 (synopsis "psycLPC is a multi-user network server programming language")
1867 (description
1868 "LPC is a bytecode language, invented to specifically implement
1869multi user virtual environments on the internet. This technology is used for
1870MUDs and also the psyced implementation of the Protocol for SYnchronous
1871Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1872many bug fixes.")
1873 (license license:gpl2))))
1874
1875(define-public loudmouth
1876 (package
1877 (name "loudmouth")
1878 (version "1.5.4")
1879 (source
1880 (origin
1881 (method url-fetch)
1882 (uri (string-append "https://mcabber.com/files/loudmouth/"
1883 name "-" version ".tar.bz2"))
1884 (sha256
1885 (base32
1886 "03adv5xc84l9brcx0dpyqyffmsclans8yfrpnd357k6x3wfckjri"))))
1887 (build-system gnu-build-system)
1888 (outputs '("out" "doc"))
1889 (arguments
1890 `(#:configure-flags
1891 (list
1892 "--disable-static"
1893 "--enable-gtk-doc"
1894 (string-append "--with-html-dir="
1895 (assoc-ref %outputs "doc")
1896 "/share/gtk-doc/html"))
1897 #:make-flags
1898 (list
1899 "CFLAGS=-Wno-error=all")))
1900 (inputs
1901 `(("glib" ,glib)
1902 ("gnutls" ,gnutls)
1903 ("krb5" ,mit-krb5)
1904 ("libidn" ,libidn)))
1905 (native-inputs
1906 `(("pkg-config" ,pkg-config)
1907 ("check" ,check)
1908 ("glib" ,glib "bin") ; gtester
1909 ("gtk-doc" ,gtk-doc)))
1910 (home-page "https://mcabber.com/")
1911 (description
1912 "Loudmouth is a lightweight and easy-to-use C library for programming
1913with the XMPP (formerly known as Jabber) protocol. It is designed to be
1914easy to get started with and yet extensible to let you do anything the XMPP
1915protocol allows.")
1916 (synopsis "Asynchronous XMPP library")
1917 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1918 (license license:lgpl2.0+)))
1919
1920(define-public mcabber
1921 (package
1922 (name "mcabber")
1923 (version "1.1.2")
1924 (source
1925 (origin
1926 (method url-fetch)
1927 (uri (string-append "https://mcabber.com/files/"
1928 name "-" version ".tar.bz2"))
1929 (sha256
1930 (base32 "0q1i5acyghsmzas88qswvki8kkk2nfpr8zapgnxbcd3lwcxl38f4"))))
1931 (build-system gnu-build-system)
1932 (arguments
1933 `(#:configure-flags
1934 (list
1935 "--disable-static"
1936 "--enable-otr"
1937 "--enable-enchant"
1938 "--enable-aspell")))
1939 (inputs
1940 `(("gpgme" ,gpgme)
1941 ("libotr" ,libotr)
1942 ("aspell" ,aspell)
1943 ("enchant" ,enchant-1.6)
1944 ("libidn" ,libidn)
1945 ("glib" ,glib)
1946 ("ncurses" ,ncurses)
1947 ("loudmouth" ,loudmouth)))
1948 (native-inputs
1949 `(("perl" ,perl)
1950 ("pkg-config" ,pkg-config)
1951 ("python" ,python-wrapper)))
1952 (home-page "https://mcabber.com")
1953 (description
1954 "Mcabber is a small XMPP (Jabber) console client, which includes features
1955such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1956command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1957support, and more.")
1958 (synopsis "Small XMPP console client")
1959 (license license:gpl2+)))
1960
1961(define-public freetalk
1962 (package
1963 (name "freetalk")
1964 (version "4.1")
1965 (source (origin
1966 (method url-fetch)
1967 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1968 version ".tar.gz"))
1969 (sha256
1970 (base32
1971 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1972 (build-system gnu-build-system)
1973 (arguments
1974 `(#:phases
1975 (modify-phases %standard-phases
1976 ;; For 'system' commands in Scheme code.
1977 (add-after 'install 'wrap-program
1978 (lambda* (#:key inputs outputs #:allow-other-keys)
1979 (let* ((out (assoc-ref outputs "out"))
1980 (bash (assoc-ref inputs "bash"))
1981 (coreutils (assoc-ref inputs "coreutils"))
1982 (less (assoc-ref inputs "less")))
1983 (wrap-program (string-append out "/bin/freetalk")
1984 `("PATH" ":" prefix
1985 ,(map (lambda (dir)
1986 (string-append dir "/bin"))
1987 (list bash coreutils less))))
1988 #t))))))
1989 (native-inputs
1990 `(("autoconf" ,autoconf)
1991 ("automake" ,automake)
1992 ("pkg-config" ,pkg-config)
1993 ("texinfo" ,texinfo)))
1994 (inputs
1995 `(("bash" ,bash)
1996 ("glib" ,glib)
1997 ("guile" ,guile-2.0)
1998 ("less" ,less)
1999 ("loudmouth" ,loudmouth)
2000 ("readline" ,readline)))
2001 (synopsis "Extensible console-based Jabber client")
2002 (description
2003 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
2004the Readline library to handle input, so it features convenient navigation of
2005text as well as tab-completion of buddy names, commands and English words. It
2006is also scriptable and extensible via Guile.")
2007 (home-page "https://www.gnu.org/software/freetalk/")
2008 (license license:gpl3+)))
2009
2010(define-public libmesode
2011 (package
2012 (name "libmesode")
2013 (version "0.10.1")
2014 (source (origin
2015 (method git-fetch)
2016 (uri (git-reference
2017 (url "https://github.com/profanity-im/libmesode")
2018 (commit version)))
2019 (file-name (git-file-name name version))
2020 (sha256
2021 (base32
2022 "1bxnkhrypgv41qyy1n545kcggmlw1hvxnhwihijhhcf2pxd2s654"))))
2023 (build-system gnu-build-system)
2024 (arguments
2025 `(#:configure-flags (list "--disable-static")
2026 #:phases
2027 (modify-phases %standard-phases
2028 (add-after 'unpack 'patch-make
2029 (lambda _
2030 (substitute* "Makefile.am"
2031 (("'\\^xmpp_'") "'.'"))
2032 #t)))))
2033 (inputs
2034 `(("expat" ,expat)
2035 ("openssl" ,openssl)))
2036 (native-inputs
2037 `(("autoconf" ,autoconf)
2038 ("automake" ,automake)
2039 ("libtool" ,libtool)
2040 ("pkg-config" ,pkg-config)))
2041 (synopsis "C library for writing XMPP clients")
2042 (description "Libmesode is a fork of libstrophe for use with Profanity
2043XMPP Client. In particular, libmesode provides extra TLS functionality such as
2044manual SSL certificate verification.")
2045 (home-page "https://github.com/profanity/libmesode")
2046 ;; Dual-licensed.
2047 (license (list license:gpl3+ license:x11))))
2048
2049(define-public libstrophe
2050 (package
2051 (name "libstrophe")
2052 (version "0.10.1")
2053 (source
2054 (origin
2055 (method git-fetch)
2056 (uri (git-reference
2057 (url "https://github.com/strophe/libstrophe")
2058 (commit version)))
2059 (file-name (git-file-name name version))
2060 (sha256
2061 (base32 "11d341avsfr0z4lq15cy5dkmff6qpy91wkgzdpfdy31l27pa1g79"))))
2062 (build-system gnu-build-system)
2063 (arguments
2064 `(#:configure-flags (list "--disable-static")
2065 #:phases
2066 (modify-phases %standard-phases
2067 (add-after 'unpack 'patch-make
2068 (lambda _
2069 (substitute* "Makefile.am"
2070 (("'\\^xmpp_'") "'.'"))
2071 #t)))))
2072 (inputs
2073 `(("expat" ,expat)
2074 ("openssl" ,openssl)))
2075 (native-inputs
2076 `(("autoconf" ,autoconf)
2077 ("automake" ,automake)
2078 ("libtool" ,libtool)
2079 ("pkg-config" ,pkg-config)))
2080 (synopsis "C library for writing XMPP clients")
2081 (description "Libstrophe is a minimal XMPP library written in C. It has
2082almost no external dependencies, only an XML parsing library (expat or libxml
2083are both supported).")
2084 (home-page "http://strophe.im/libstrophe")
2085 ;; Dual-licensed.
2086 (license (list license:gpl3+ license:x11))))
2087
2088(define-public profanity
2089 (package
2090 (name "profanity")
2091 (version "0.10.0")
2092 (source
2093 (origin
2094 (method url-fetch)
2095 (uri
2096 (string-append "https://profanity-im.github.io/profanity-"
2097 version ".tar.gz"))
2098 (sha256
2099 (base32
2100 "137z77514fgj2dk13d12g4jrn6gs5k85nwrk1r1kiv7rj0jy61aa"))))
2101 (build-system glib-or-gtk-build-system)
2102 (arguments
2103 `(#:configure-flags
2104 (list
2105 "--disable-static"
2106 "--enable-notifications"
2107 "--enable-python-plugins"
2108 "--enable-c-plugins"
2109 "--enable-plugins"
2110 "--enable-otr"
2111 "--enable-pgp"
2112 "--enable-omemo"
2113 "--enable-icons-and-clipboard")))
2114 (native-inputs
2115 `(("autoconf" ,autoconf)
2116 ("autoconf-archive" ,autoconf-archive)
2117 ("automake" ,automake)
2118 ("cmocka" ,cmocka)
2119 ("libtool" ,libtool)
2120 ("pkg-config" ,pkg-config)))
2121 (inputs
2122 `(("curl" ,curl)
2123 ("expat" ,expat)
2124 ("glib" ,glib)
2125 ("gpgme" ,gpgme)
2126 ("gtk+" ,gtk+-2)
2127 ("libgcrypt" ,libgcrypt)
2128 ("libmesode" ,libmesode)
2129 ("libnotify" ,libnotify)
2130 ("libotr" ,libotr)
2131 ("libsignal-protocol-c" ,libsignal-protocol-c)
2132 ;; ("libxss" ,libxss)
2133 ("ncurses" ,ncurses)
2134 ("openssl" ,openssl)
2135 ("python" ,python-wrapper)
2136 ("readline" ,readline)
2137 ("sqlite" ,sqlite)))
2138 (synopsis "Console-based XMPP client")
2139 (description "Profanity is a console based XMPP client written in C
2140using ncurses and libmesode, inspired by Irssi.")
2141 (home-page "https://profanity-im.github.io")
2142 (license license:gpl3+)))
2143
2144(define-public libircclient
2145 (package
2146 (name "libircclient")
2147 (version "1.10")
2148 (source
2149 (origin
2150 (method url-fetch)
2151 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
2152 version "/libircclient-" version ".tar.gz"))
2153 (sha256
2154 (base32
2155 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
2156 (build-system gnu-build-system)
2157 (inputs
2158 `(("openssl" ,openssl)))
2159 (arguments
2160 `(#:configure-flags
2161 (list (string-append "--libdir="
2162 (assoc-ref %outputs "out") "/lib")
2163 "--enable-shared"
2164 "--enable-ipv6"
2165 "--enable-openssl")
2166 #:tests? #f)) ; no test suite
2167 (home-page "https://www.ulduzsoft.com/libircclient/")
2168 (synopsis "Library implementing the client IRC protocol")
2169 (description "Libircclient is a library which implements the client IRC
2170protocol. It is designed to be small, fast, portable and compatible with the
2171RFC standards as well as non-standard but popular features. It can be used for
2172building the IRC clients and bots.")
2173 (license license:lgpl3+)))
2174
2175(define-public toxic
2176 (package
2177 (name "toxic")
2178 (version "0.8.4")
2179 (source
2180 (origin
2181 (method git-fetch)
2182 (uri (git-reference
2183 (url "https://github.com/JFreegman/toxic")
2184 (commit (string-append "v" version))))
2185 (sha256
2186 (base32 "0p1cmj1kyp506y5xm04mhlznhf5wcylvgsn6b307ms91vjqs3fg2"))
2187 (file-name (git-file-name name version))))
2188 (build-system gnu-build-system)
2189 (arguments
2190 `(#:tests? #f ; no tests
2191 #:make-flags
2192 (list
2193 "CC=gcc"
2194 (string-append "PREFIX="
2195 (assoc-ref %outputs "out")))
2196 #:phases
2197 (modify-phases %standard-phases
2198 (delete 'configure)
2199 (add-before 'build 'enable-python-scripting
2200 (lambda _
2201 ;; XXX: For compatibility with Python 3.8, adjust python3-config
2202 ;; invokation to include --embed; see
2203 ;; <https://github.com/JFreegman/toxic/issues/533>.
2204 (substitute* "cfg/checks/python.mk"
2205 (("python3-config --ldflags")
2206 "python3-config --ldflags --embed"))
2207 (setenv "ENABLE_PYTHON" "1")
2208 #t)))))
2209 (inputs
2210 `(("c-toxcore" ,c-toxcore)
2211 ("curl" ,curl)
2212 ("freealut" ,freealut)
2213 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
2214 ("libconfig" ,libconfig)
2215 ("libnotify" ,libnotify)
2216 ("libpng" ,libpng)
2217 ("libvpx" ,libvpx)
2218 ("libx11" ,libx11)
2219 ("ncurses" ,ncurses)
2220 ("openal" ,openal)
2221 ("python" ,python)
2222 ("qrencode" ,qrencode)))
2223 (native-inputs
2224 `(("pkg-config" ,pkg-config)))
2225 (home-page "https://github.com/JFreegman/toxic")
2226 (synopsis "Tox chat client using ncurses")
2227 (description "Toxic is a console-based instant messaging client, using
2228c-toxcore and ncurses. It provides audio calls, sound and desktop
2229notifications, and Python scripting support.")
2230 (license license:gpl3+)))
2231
2232(define-public libqmatrixclient
2233 (package
2234 (name "libqmatrixclient")
2235 (version "0.5.3.2")
2236 (source
2237 (origin
2238 (method git-fetch)
2239 (uri (git-reference
2240 (url "https://github.com/quotient-im/libQuotient")
2241 (commit version)))
2242 (file-name (git-file-name name version))
2243 (sha256
2244 (base32 "0gkwr3yw6k2m0j8cc085b5p2q788rf5nhp1p5hc5d55pc7mci2qs"))))
2245 (build-system cmake-build-system)
2246 (inputs
2247 `(("qtbase" ,qtbase-5)
2248 ("qtmultimedia" ,qtmultimedia)))
2249 (arguments
2250 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
2251 #:tests? #f)) ; no tests
2252 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
2253 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
2254 (description "libqmatrixclient is a Qt5 library to write clients for the
2255Matrix instant messaging protocol. Quaternion is the reference client
2256implementation. Quaternion and libqmatrixclient together form the
2257QMatrixClient project.")
2258 (license license:lgpl2.1+)))
2259
2260(define-public mtxclient
2261 (package
2262 (name "mtxclient")
2263 (version "0.3.1")
2264 (source
2265 (origin
2266 (method git-fetch)
2267 (uri (git-reference
2268 (url "https://github.com/Nheko-Reborn/mtxclient")
2269 (commit (string-append "v" version))))
2270 (file-name (git-file-name name version))
2271 (sha256
2272 (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x"))))
2273 (arguments
2274 `(#:configure-flags
2275 (list
2276 ;; Disable example binaries (not installed)
2277 "-DBUILD_LIB_EXAMPLES=OFF")
2278 #:phases
2279 (modify-phases %standard-phases
2280 (add-before 'configure 'disable-network-tests
2281 (lambda _
2282 (substitute* "CMakeLists.txt"
2283 (("add_test\\((BasicConnectivity|ClientAPI|MediaAPI|Encryption|Pushrules)")
2284 "# add_test"))
2285 #t))
2286 (add-before 'configure 'set-home
2287 (lambda _
2288 ;; Tries to create package registry file
2289 ;; So, set HOME.
2290 (setenv "HOME" "/tmp")
2291 #t)))))
2292 (build-system cmake-build-system)
2293 (inputs
2294 `(("boost" ,boost)
2295 ("json-modern-cxx" ,json-modern-cxx)
2296 ("libolm" ,libolm)
2297 ("libsodium" ,libsodium)
2298 ("openssl" ,openssl)
2299 ("spdlog" ,spdlog)
2300 ("zlib" ,zlib)))
2301 (native-inputs
2302 `(("googletest" ,googletest)
2303 ("pkg-config" ,pkg-config)))
2304 (home-page "https://github.com/Nheko-Reborn/mtxclient")
2305 (synopsis "Client API library for the Matrix protocol")
2306 (description "@code{mtxclient} is a C++ library that implements client API
2307for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
2308 (license license:expat)))
2309
2310(define-public nheko
2311 (package
2312 (name "nheko")
2313 (version "0.7.2")
2314 (source
2315 (origin
2316 (method git-fetch)
2317 (uri (git-reference
2318 (url "https://github.com/Nheko-Reborn/nheko")
2319 (commit (string-append "v" version))))
2320 (file-name (git-file-name name version))
2321 (sha256
2322 (base32 "1cbhgaf9klgxdirrxj571fqwspm0byl75c1xc40l727a6qswvp7s"))))
2323 (arguments
2324 `(#:tests? #f ;no test target
2325 #:configure-flags
2326 (list
2327 "-DCMAKE_BUILD_TYPE=Release"
2328 "-DCMAKE_CXX_FLAGS=-fpermissive")
2329 #:phases
2330 (modify-phases %standard-phases
2331 (add-after 'unpack 'remove-Werror
2332 (lambda _
2333 (substitute* "CMakeLists.txt"
2334 (("-Werror") ""))
2335 #t))
2336 (add-after 'unpack 'fix-determinism
2337 (lambda _
2338 ;; Make Qt deterministic.
2339 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
2340 #t)))))
2341 (build-system qt-build-system)
2342 (inputs
2343 `(("boost" ,boost)
2344 ("cmark" ,cmark)
2345 ("json-modern-cxx" ,json-modern-cxx)
2346 ("libolm" ,libolm)
2347 ("lmdb" ,lmdb)
2348 ("lmdbxx" ,lmdbxx)
2349 ("mtxclient" ,mtxclient)
2350 ("openssl" ,openssl)
2351 ("qtbase" ,qtbase-5)
2352 ("qtdeclarative" ,qtdeclarative)
2353 ("qtgraphicaleffects" ,qtgraphicaleffects)
2354 ("qtmultimedia" ,qtmultimedia)
2355 ("qtquickcontrols2" ,qtquickcontrols2)
2356 ("qtsvg" ,qtsvg)
2357 ("spdlog" ,spdlog)
2358 ("tweeny" ,tweeny)
2359 ("zlib" ,zlib)))
2360 (native-inputs
2361 `(("pkg-config" ,pkg-config)
2362 ("qtlinguist" ,qttools)))
2363 (home-page "https://github.com/Nheko-Reborn/nheko")
2364 (synopsis "Desktop client for Matrix using Qt and C++14")
2365 (description "@code{Nheko} want to provide a native desktop app for the
2366Matrix protocol that feels more like a mainstream chat app and less like an IRC
2367client.
2368
2369There is support for:
2370@itemize
2371@item E2E encryption (text messages only: attachments are currently sent unencrypted).
2372@item User registration.
2373@item Creating, joining & leaving rooms.
2374@item Sending & receiving invites.
2375@item Sending & receiving files and emoji.
2376@item Typing notifications.
2377@item Username auto-completion.
2378@item Message & mention notifications.
2379@item Redacting messages.
2380@item Read receipts.
2381@item Basic communities support.
2382@item Room switcher (@key{ctrl-K}).
2383@item Light, Dark & System themes.
2384@end itemize")
2385 (license license:gpl3+)))
2386
2387(define-public quaternion
2388 (package
2389 (name "quaternion")
2390 (version "0.0.9.4f")
2391 (outputs '("out" "debug"))
2392 (source
2393 (origin
2394 (method git-fetch)
2395 (uri (git-reference
2396 (url "https://github.com/quotient-im/Quaternion")
2397 (commit version)))
2398 (file-name (git-file-name name version))
2399 (sha256
2400 (base32 "1q9ddz4rs02a0w3lwrsjnh59khv38cq9f0kv09vnwvazvayn87ck"))))
2401 (build-system qt-build-system)
2402 (inputs
2403 `(("libqmatrixclient" ,libqmatrixclient)
2404 ("qtbase" ,qtbase-5)
2405 ("qtdeclarative" ,qtdeclarative)
2406 ("qtmultimedia" ,qtmultimedia)
2407 ("qtquickcontrols" ,qtquickcontrols)
2408 ("qtquickcontrols2" ,qtquickcontrols2)
2409 ("qtsvg" ,qtsvg)
2410 ("qttools" ,qttools)
2411 ("xdg-utils" ,xdg-utils)))
2412 (arguments
2413 `(#:tests? #f)) ; no tests
2414 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
2415 (synopsis "Graphical client for the Matrix instant messaging protocol")
2416 (description "Quaternion is a Qt5 desktop client for the Matrix instant
2417messaging protocol. It uses libqmatrixclient and is its reference client
2418implementation. Quaternion and libqmatrixclient together form the
2419QMatrixClient project.")
2420 (license (list license:gpl3+ ; all source code
2421 license:lgpl3+)))) ; icons/breeze
2422
2423(define-public hangups
2424 (package
2425 (name "hangups")
2426 (version "0.4.14")
2427 (source
2428 (origin
2429 (method url-fetch)
2430 (uri (pypi-uri "hangups" version))
2431 (sha256
2432 (base32 "15qbbafcrdkx73xz9y30qa3d8nj6mgrp2m41749i5nn1qywmikk8"))))
2433 (build-system python-build-system)
2434 (arguments
2435 `(#:phases
2436 (modify-phases %standard-phases
2437 (add-before 'build 'relax-dependencies
2438 ;; Relax overly strict package version specifications.
2439 (lambda _
2440 (substitute* "setup.py"
2441 (("==") ">=")
2442 ((",<.*'") "'"))
2443 #t))
2444 (replace 'check
2445 (lambda* (#:key tests? #:allow-other-keys)
2446 (when tests?
2447 (invoke "pytest" "hangups"))
2448 #t)))))
2449 (propagated-inputs
2450 `(("python-aiohttp" ,python-aiohttp)
2451 ("python-appdirs" ,python-appdirs)
2452 ("python-async-timeout" ,python-async-timeout)
2453 ("python-configargparse" ,python-configargparse)
2454 ("python-mechanicalsoup" ,python-mechanicalsoup)
2455 ("python-protobuf" ,python-protobuf-3.6)
2456 ("python-readlike" ,python-readlike)
2457 ("python-reparser" ,python-reparser)
2458 ("python-requests" ,python-requests)
2459 ("python-urwid" ,python-urwid)))
2460 (native-inputs
2461 `(("python-httpretty" ,python-httpretty)
2462 ("python-pytest" ,python-pytest)))
2463 (home-page "https://hangups.readthedocs.io/")
2464 (synopsis "Instant messaging client for Google Hangouts")
2465 (description
2466 "Hangups is an instant messaging client for Google Hangouts. It includes
2467both a Python library and a reference client with a text-based user interface.
2468
2469Hangups is implements a reverse-engineered version of Hangouts' proprietary,
2470non-interoperable protocol, which allows it to support features like group
2471messaging that aren’t available to clients that connect over XMPP.")
2472 (license license:expat)))
2473
2474(define-public telegram-purple
2475 (package
2476 (name "telegram-purple")
2477 (version "1.4.7")
2478 (home-page "https://github.com/majn/telegram-purple")
2479 (source (origin
2480 (method git-fetch)
2481 (uri (git-reference
2482 (url home-page)
2483 (commit (string-append "v" version))
2484 (recursive? #t)))
2485 (sha256
2486 (base32
2487 "14h8lvj0kjvy1b5i84ha2w9rl3akxjwwvsp5j4dcxwfghrkzqgf2"))
2488 (modules '((guix build utils)))
2489 (snippet
2490 '(begin
2491 (substitute* "Makefile.in"
2492 ;; By default these two directories point to Pidgin's own
2493 ;; prefix.
2494 (("^PLUGIN_DIR_PURPLE=.*")
2495 (string-append
2496 "exec_prefix := @exec_prefix@\n"
2497 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
2498 (("^DATA_ROOT_DIR_PURPLE=.*")
2499 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
2500
2501 ;; Honor sysconfdir instead of trying to write to /etc.
2502 (("DESTDIR\\)/etc/telegram-purple")
2503 "DESTDIR)@sysconfdir@/telegram-purple"))
2504 #t))
2505 (patches (search-patches "telegram-purple-adjust-test.patch"))
2506 (file-name (git-file-name name version))))
2507 (build-system gnu-build-system)
2508 (native-inputs
2509 `(("pkg-config" ,pkg-config)
2510 ("gettext" ,gettext-minimal)
2511 ("which" ,which)))
2512 (inputs
2513 `(("pidgin" ,pidgin)
2514 ("libgcrypt" ,libgcrypt)
2515 ("libwebp" ,libwebp)
2516 ("glib" ,glib)
2517 ("gtk+" ,gtk+-2)
2518 ("zlib" ,zlib)))
2519 (arguments
2520 `(#:phases
2521 (modify-phases %standard-phases
2522 ;; We're using release tag for repository checkout - let's prepare
2523 ;; header defining GIT_COMMIT manually instead of running git to
2524 ;; identify version which is being compiled. Git repository
2525 ;; is removed anyway and only source code is kept.
2526 (add-after 'unpack 'prepare-commit.h
2527 (lambda _
2528 (with-output-to-file "./commit.h"
2529 (lambda ()
2530 (display
2531 (string-append "//generated by guix, use version instead of "
2532 "commit\n"
2533 "#ifndef GIT_COMMIT\n"
2534 "# define GIT_COMMIT \"v"
2535 ,version "\"\n"
2536 "#endif\n"))))
2537 #t))
2538 (add-before 'configure 'set-SHELL-variables
2539 ;; Set these environment variables so that 'tgl/configure' uses the
2540 ;; right shell and not /bin/sh.
2541 (lambda _
2542 (let ((bash (which "bash")))
2543 (setenv "SHELL" bash)
2544 (setenv "CONFIG_SHELL" bash)
2545 #t))))))
2546 (synopsis "Telegram messaging support for Pidgin")
2547 (description
2548 "Telegram-purple is a plugin for Libpurple, the communication library
2549used by the Pidgin instant messaging client, that adds support for the
2550Telegram messenger.
2551
2552This package is on ``life support'' until @code{tdlib-purple} is a full
2553replacement.")
2554
2555 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
2556 ;; itself is GPLv2+.
2557 (license license:gpl2+)))
2558
2559(define-public tdlib
2560 (package
2561 (name "tdlib")
2562 (version "1.7.0")
2563 (source (origin
2564 (method git-fetch)
2565 (uri (git-reference
2566 (url "https://github.com/tdlib/td")
2567 (commit (string-append "v" version))))
2568 (sha256
2569 (base32
2570 "0dfir57ljcn98mkg061c5642qb93wh2lm1n4nngpl3na9vvfk75i"))
2571 (file-name (git-file-name name version))))
2572 (build-system cmake-build-system)
2573 (arguments
2574 `(#:tests? #t
2575 #:configure-flags
2576 (list "-DCMAKE_BUILD_TYPE=Release"
2577 "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work.
2578 #:phases
2579 (modify-phases %standard-phases
2580 (add-after 'unpack 'remove-failing-tests
2581 (lambda _
2582 (substitute* "test/CMakeLists.txt"
2583 ;; The test cases are compiled into a distinct binary
2584 ;; which uses mtproto.cpp to attempt to connect to
2585 ;; a remote server. Removing this file from the sources
2586 ;; list disables those specific test cases.
2587 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") ""))
2588 #t)))))
2589 (native-inputs
2590 `(("gperf" ,gperf)
2591 ("openssl" ,openssl)
2592 ("zlib" ,zlib)
2593 ("php" ,php)
2594 ("doxygen" ,doxygen)))
2595 (synopsis "Cross-platform library for building Telegram clients")
2596 (description "Tdlib is a cross-platform library for creating custom
2597Telegram clients following the official Telegram API. It can be easily used
2598from almost any programming language with a C-FFI and features first-class
2599support for high performance Telegram Bot creation.")
2600 (home-page "https://core.telegram.org/tdlib")
2601 (license license:boost1.0)))
2602
2603(define-public purple-mm-sms
2604 (package
2605 (name "purple-mm-sms")
2606 (version "0.1.4")
2607 (source (origin
2608 (method git-fetch)
2609 (uri (git-reference
2610 (url "https://source.puri.sm/Librem5/purple-mm-sms.git")
2611 (commit (string-append "v" version))))
2612 (file-name (git-file-name name version))
2613 (sha256
2614 (base32
2615 "1daf7zl8bhhm1szkgxflpqql69f2w9i9nlgf1n4p1nynxifz1bim"))))
2616 (build-system gnu-build-system)
2617 (arguments
2618 `(#:make-flags
2619 (let ((out (assoc-ref %outputs "out")))
2620 ;; Fix hardcoded paths
2621 (list (string-append "PREFIX=" out)
2622 (string-append "PLUGIN_DIR_PURPLE=" out "/lib/purple-2")
2623 (string-append "DATA_ROOT_DIR_PURPLE=" out "/share")))
2624 #:tests? #f ; no tests
2625 #:phases
2626 (modify-phases %standard-phases
2627 (delete 'configure))))
2628 (native-inputs
2629 `(("glib:bin" ,glib "bin")
2630 ("pkg-config" ,pkg-config)))
2631 (inputs
2632 `(("modem-manager" ,modem-manager)
2633 ("pidgin" ,pidgin)))
2634 (synopsis "Libpurple plugin for SMS via ModemManager")
2635 (description "Plugin for libpurple to allow sending SMS using ModemManager.")
2636 (home-page "https://source.puri.sm/Librem5/purple-mm-sms")
2637 (license license:gpl2+)))
2638
2639(define-public chatty
2640 (package
2641 (name "chatty")
2642 (version "0.1.17")
2643 (source (origin
2644 (method git-fetch)
2645 (uri (git-reference
2646 (url "https://source.puri.sm/Librem5/chatty.git")
2647 (commit (string-append "v" version))))
2648 (file-name (git-file-name name version))
2649 (sha256
2650 (base32
2651 "0ba1rw8a3vif9k3570hxjfm25vqys3vk3f6g8z5irklwq4bi6lmn"))))
2652 (build-system meson-build-system)
2653 (arguments
2654 '(#:phases
2655 (modify-phases %standard-phases
2656 (add-after 'unpack 'skip-updating-desktop-database
2657 (lambda _
2658 (substitute* "meson.build"
2659 (("meson.add_install_script.*") ""))
2660 #t)))))
2661 (native-inputs
2662 `(("gettext" ,gettext-minimal)
2663 ("glib:bin" ,glib "bin")
2664 ("pkg-config" ,pkg-config)))
2665 (inputs
2666 `(("feedbackd" ,feedbackd)
2667 ("folks" ,folks)
2668 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
2669 ("libgcrypt" ,libgcrypt)
2670 ("libgee" ,libgee)
2671 ("libhandy" ,libhandy-0.0)
2672 ("pidgin" ,pidgin)
2673 ("purple-mm-sms" ,purple-mm-sms)
2674 ("sqlite" ,sqlite)))
2675 (propagated-inputs
2676 `(("adwaita-icon-theme" ,adwaita-icon-theme)
2677 ("evolution-data-server" ,evolution-data-server)))
2678 (synopsis "Mobile client for XMPP and SMS messaging")
2679 (description "Chatty is a chat program for XMPP and SMS. It works on mobile
2680as well as on desktop platforms. It's based on libpurple and ModemManager.")
2681 (home-page "https://source.puri.sm/Librem5/chatty")
2682 (license license:gpl3+)))
2683
2684(define-public mosquitto
2685 (package
2686 (name "mosquitto")
2687 (version "1.6.12")
2688 (source
2689 (origin
2690 (method url-fetch)
2691 (uri (string-append "https://mosquitto.org/files/source/mosquitto-"
2692 version ".tar.gz"))
2693 (sha256
2694 (base32
2695 "1yq7y329baa1ly488rw125c3mvsnsa7kjkik602xv1xpkz8p73al"))))
2696 (build-system cmake-build-system)
2697 (inputs
2698 `(("openssl" ,openssl)))
2699 (synopsis "Message broker")
2700 (description "This package provides Eclipse Mosquitto, a message broker
2701that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto
2702is lightweight and is suitable for use on all devices from low power single
2703board computers to full servers.
2704
2705The MQTT protocol provides a lightweight method of carrying out messaging
2706using a publish/subscribe model. This makes it suitable for Internet of
2707Things messaging such as with low power sensors or mobile devices such
2708as phones, embedded computers or microcontrollers.")
2709 (home-page "https://mosquitto.org/")
2710 ;; Dual licensed.
2711 (license (list license:epl1.0 license:edl1.0))))
2712
2713(define-public movim-desktop
2714 (let ((commit "83d583b83629dbd2ec448da9a1ffd81f6c1fb295")
2715 (revision "3"))
2716 (package
2717 (name "movim-desktop")
2718 (version
2719 (git-version "0.14.0" revision commit))
2720 (source
2721 (origin
2722 (method git-fetch)
2723 (uri
2724 (git-reference
2725 (url "https://github.com/movim/movim_desktop")
2726 (commit commit)))
2727 (file-name (git-file-name name version))
2728 (sha256
2729 (base32 "1lsa3k3wx1d2lk0qs0k5jc5bmapnmpzwynprjf2wihh8c8y3iwlz"))))
2730 (build-system qt-build-system)
2731 (arguments
2732 `(#:tests? #f ; No target
2733 #:phases
2734 (modify-phases %standard-phases
2735 (add-after 'unpack 'patch
2736 (lambda* (#:key outputs #:allow-other-keys)
2737 (substitute* `("CMakeLists.txt" "movim.desktop")
2738 (("/usr")
2739 (assoc-ref outputs "out"))
2740 (("\"build")
2741 "\"../build"))
2742 #t)))))
2743 (inputs
2744 `(("qtbase" ,qtbase-5)
2745 ("qtdeclarative" ,qtdeclarative)
2746 ("qtwebchannel" ,qtwebchannel)))
2747 (propagated-inputs
2748 `(("qtwebengine" ,qtwebengine)))
2749 (home-page "https://movim.eu/")
2750 (synopsis "Desktop Application for Movim")
2751 (description
2752 "Movim-Desktop is a desktop application, relying on Qt, for the Movim
2753social and chat platform.")
2754 (license license:gpl3+))))
2755
2756(define-public psi-plus
2757 (package
2758 (name "psi-plus")
2759 (version "1.5.1484")
2760 (source
2761 (origin
2762 (method git-fetch)
2763 (uri
2764 (git-reference
2765 (url "https://github.com/psi-plus/psi-plus-snapshots")
2766 (commit version)))
2767 (file-name (git-file-name name version))
2768 (modules '((guix build utils)))
2769 (snippet
2770 `(begin
2771 (delete-file-recursively "3rdparty")))
2772 (sha256
2773 (base32 "1jsm39nzzbqkp3zc0xqx7jid6p4q1ra28xad38wjr2l1jb8qjn24"))))
2774 (build-system qt-build-system)
2775 (arguments
2776 `(#:tests? #f ; No target
2777 #:imported-modules
2778 (,@%qt-build-system-modules
2779 (guix build glib-or-gtk-build-system))
2780 #:modules
2781 ((guix build qt-build-system)
2782 ((guix build glib-or-gtk-build-system)
2783 #:prefix glib-or-gtk:)
2784 (guix build utils))
2785 #:configure-flags
2786 (list
2787 "-DBUILD_PSIMEDIA=ON" ; For A/V support
2788 "-DENABLE_PLUGINS=ON"
2789 "-DUSE_HUNSPELL=OFF" ; Use Enchant instead
2790 "-DUSE_ENCHANT=ON"
2791 "-DUSE_CCACHE=OFF") ; Not required
2792 #:phases
2793 (modify-phases %standard-phases
2794 (add-after 'unpack 'patch-source
2795 (lambda _
2796 (substitute* "CMakeLists.txt"
2797 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/http-parser/http_parser.h")
2798 "")
2799 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/qhttp.pro")
2800 "")
2801 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/qite.pro")
2802 "")
2803 (("add_subdirectory\\( 3rdparty \\)")
2804 ""))
2805 (substitute* "src/CMakeLists.txt"
2806 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/libqite")
2807 "")
2808 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/http-parser")
2809 "")
2810 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/src/private")
2811 "")
2812 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/src")
2813 "")
2814 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty")
2815 "")
2816 (("add_dependencies\\(\\$\\{PROJECT_NAME\\} qhttp\\)")
2817 "target_link_libraries(${PROJECT_NAME} qhttp)"))
2818 (substitute* "src/src.cmake"
2819 (("include\\(\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/libqite/libqite.cmake\\)")
2820 "list(APPEND EXTRA_LIBS qite)"))
2821 (substitute* '("src/filesharingmanager.h" "src/widgets/psirichtext.cpp"
2822 "src/filesharingmanager.cpp" "src/widgets/psitextview.cpp"
2823 "src/chatview_te.cpp" "src/msgmle.cpp")
2824 (("qite.h")
2825 "qite/qite.h")
2826 (("qiteaudio.h")
2827 "qite/qiteaudio.h")
2828 (("qiteaudiorecorder.h")
2829 "qite/qiteaudiorecorder.h"))
2830 #t))
2831 (add-after 'install 'wrap-env
2832 (lambda* (#:key outputs #:allow-other-keys)
2833 (let ((out (assoc-ref outputs "out")))
2834 (for-each
2835 (lambda (name)
2836 (let ((file (string-append out "/bin/" name))
2837 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
2838 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
2839 (wrap-program file
2840 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
2841 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
2842 '("psi-plus")))
2843 #t))
2844 (add-after 'wrap-env 'glib-or-gtk-compile-schemas
2845 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
2846 (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
2847 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
2848 (native-inputs
2849 `(("glib:bin" ,glib "bin")
2850 ("gobject-introspection" ,gobject-introspection)
2851 ("perl" ,perl)
2852 ("pkg-config" ,pkg-config)
2853 ("python" ,python-wrapper)
2854 ("ruby" ,ruby)))
2855 (inputs
2856 `(("blake2" ,libb2)
2857 ("dbus" ,dbus)
2858 ("enchant" ,enchant)
2859 ("glib" ,glib)
2860 ("gstreamer" ,gstreamer)
2861 ("gst-plugins-base" ,gst-plugins-base)
2862 ("http-parser" ,http-parser)
2863 ("libgcrypt" ,libgcrypt)
2864 ("libgpg-error" ,libgpg-error)
2865 ("libidn" ,libidn)
2866 ("libotr" ,libotr)
2867 ("libsignal-protocol-c" ,libsignal-protocol-c)
2868 ("libtidy" ,tidy-html)
2869 ("openssl" ,openssl)
2870 ("qca" ,qca)
2871 ("qhttp" ,qhttp)
2872 ("qite" ,qite)
2873 ("qtbase" ,qtbase-5)
2874 ("qtkeychain" ,qtkeychain)
2875 ("qtmultimedia" ,qtmultimedia)
2876 ("qtsvg" ,qtsvg)
2877 ("qtx11extras" ,qtx11extras)
2878 ("usrsctp" ,usrsctp)
2879 ("x11" ,libx11)
2880 ("xext" ,libxext)
2881 ("xcb" ,libxcb)
2882 ("xss" ,libxscrnsaver)
2883 ("zlib" ,zlib)))
2884 (home-page "https://psi-plus.com/")
2885 (synopsis "Qt-based XMPP Client")
2886 (description
2887 "Psi+ is a spin-off of Psi XMPP client. It is a powerful XMPP client
2888designed for experienced users.")
2889 (license license:gpl2+)))
2890
2891(define-public python-zulip
2892 (package
2893 (name "python-zulip")
2894 (version "0.7.1")
2895 (source
2896 (origin
2897 ;; There is no source on Pypi.
2898 (method git-fetch)
2899 (uri (git-reference
2900 (url "https://github.com/zulip/python-zulip-api")
2901 (commit version)))
2902 (file-name (git-file-name name version))
2903 (sha256
2904 (base32
2905 "0da1ki1v252avy27j6d7snnc0gyq0xa9fypm3qdmxhw2w79d6q36"))))
2906 (build-system python-build-system)
2907 (arguments
2908 `(#:phases
2909 (modify-phases %standard-phases
2910 (add-after 'unpack 'cd-to-zulip-dir
2911 (lambda _
2912 (chdir "zulip")
2913 #t))
2914 (replace 'check
2915 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2916 (let ((test-zulip "../tools/test-zulip"))
2917 (when tests?
2918 (add-installed-pythonpath inputs outputs)
2919 (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
2920 (patch-shebang test-zulip)
2921 (invoke test-zulip))
2922 #t))))))
2923 (propagated-inputs
2924 `(("python-matrix-client" ,python-matrix-client)
2925 ("python-pyopenssl" ,python-pyopenssl)
2926 ("python-requests" ,python-requests)
2927 ("python-six" ,python-six)))
2928 (native-inputs
2929 `(("python-cython" ,python-cython)
2930 ("python-distro" ,python-distro)
2931 ("python-pytest" ,python-pytest)))
2932 (home-page "https://github.com/zulip/python-zulip-api")
2933 (synopsis "Zulip's API Python bindings")
2934 (description
2935 "This package provides Python bindings to Zulip's API.")
2936 (license license:asl2.0)))
2937
2938(define-public zulip-term
2939 (package
2940 (name "zulip-term")
2941 (version "0.5.2")
2942 (source
2943 (origin
2944 ;; Pypi package doesn't ship tests.
2945 (method git-fetch)
2946 (uri (git-reference
2947 (url "https://github.com/zulip/zulip-terminal")
2948 (commit version)))
2949 (file-name (git-file-name name version))
2950 (sha256
2951 (base32
2952 "1xhhy3v4wck74a83avil0rnmsi2grrh03cww19n5mv80p2q1cjmf"))
2953 (modules '((guix build utils)))
2954 (snippet
2955 '(begin
2956 (substitute* "setup.py"
2957 (("\\=\\=1\\.7") ">=1.7") ; pytest-mock
2958 (("\\=\\=2\\.5") ">=2.5") ; pytest-cov
2959 (("4\\.5\\.2") "4.4.2")) ; lxml
2960 #t))))
2961 (build-system python-build-system)
2962 (arguments
2963 '(#:phases
2964 (modify-phases %standard-phases
2965 (replace 'check
2966 (lambda* (#:key tests? #:allow-other-keys)
2967 (when tests?
2968 ;; Delete failing tests.
2969 (delete-file "tests/cli/test_run.py")
2970 (invoke "pytest"))
2971 #t)))))
2972 (inputs
2973 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2974 ("python-lxml" ,python-lxml)
2975 ("python-mypy-extensions" ,python-mypy-extensions)
2976 ("python-urwid" ,python-urwid)
2977 ("python-urwid-readline" ,python-urwid-readline)
2978 ("python-zulip" ,python-zulip)))
2979 (native-inputs
2980 `(("python-distro" ,python-distro)
2981 ("python-pytest" ,python-pytest)
2982 ("python-pytest-cov" ,python-pytest-cov)
2983 ("python-pytest-mock" ,python-pytest-mock)))
2984 (home-page "https://github.com/zulip/zulip-terminal")
2985 (synopsis "Zulip's official terminal client")
2986 (description "This package contains Zulip's official terminal client.")
2987 (license license:asl2.0)))
2988
2989(define-public matterbridge
2990 (package
2991 (name "matterbridge")
2992 (version "1.22.2")
2993 (source
2994 (origin
2995 (method git-fetch)
2996 (uri (git-reference
2997 (url "https://github.com/42wim/matterbridge")
2998 (commit (string-append "v" version))))
2999 (file-name (git-file-name name version))
3000 (sha256
3001 (base32
3002 "07rgdc4v043fhzsalmlhickqizk6xjlpjkzn6l5v9ryp5gmv580z"))))
3003 (build-system go-build-system)
3004 (arguments
3005 `(#:import-path "github.com/42wim/matterbridge"
3006 #:unpack-path "github.com/42wim/matterbridge"))
3007 (synopsis "Bridge together various messaging networks and protocols")
3008 (description "Relays messages between different channels from various
3009messaging networks and protocols. So far it supports mattermost, IRC, gitter,
3010xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp,
3011keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST
3012API. Mattermost is not required.")
3013 (home-page "https://github.com/42wim/matterbridge")
3014 (license license:asl2.0)))
3015
3016;;; messaging.scm ends here