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