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