gnu: qtquickcontrols: Rename to qtquickcontrols-5.
[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>
d4607705 6;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2021 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>
7ebed0cd 12;;; Copyright © 2017, 2018, 2020, 2021 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>
c017e0b6 21;;; Copyright © 2020, 2021 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>
9b73b76c 28;;; Copyright © 2020, 2022 Raghav Gururajan <rg@raghavgururajan.name>
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>
b2d81744 32;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
026ac3c0 33;;; Copyright © 2021 jgart <jgart@dismail.de>
65424e98 34;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
74afcc0f 35;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
b7349559 36;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
a5f20beb 37;;; Copyright © 2022 Jack Hill <jackhill@jackhill.us>
7c706558
MW
38;;;
39;;; This file is part of GNU Guix.
40;;;
41;;; GNU Guix is free software; you can redistribute it and/or modify it
42;;; under the terms of the GNU General Public License as published by
43;;; the Free Software Foundation; either version 3 of the License, or (at
44;;; your option) any later version.
45;;;
46;;; GNU Guix is distributed in the hope that it will be useful, but
47;;; WITHOUT ANY WARRANTY; without even the implied warranty of
48;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
49;;; GNU General Public License for more details.
50;;;
51;;; You should have received a copy of the GNU General Public License
52;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
53
54(define-module (gnu packages messaging)
8b3099cf 55 #:use-module (gnu packages)
661da251 56 #:use-module (gnu packages admin)
bc1c995e 57 #:use-module (gnu packages aidc)
cd4a232d 58 #:use-module (gnu packages aspell)
661da251 59 #:use-module (gnu packages audio)
b1a2bc89
MW
60 #:use-module (gnu packages autotools)
61 #:use-module (gnu packages avahi)
5b494618 62 #:use-module (gnu packages base)
661da251
TGR
63 #:use-module (gnu packages bash)
64 #:use-module (gnu packages bison)
44ddf0f1 65 #:use-module (gnu packages boost)
b1a2bc89 66 #:use-module (gnu packages check)
026ac3c0 67 #:use-module (gnu packages code)
661da251 68 #:use-module (gnu packages compression)
57163f91 69 #:use-module (gnu packages cpp)
901c1aae 70 #:use-module (gnu packages crypto)
a829c650 71 #:use-module (gnu packages curl)
b1a2bc89
MW
72 #:use-module (gnu packages cyrus-sasl)
73 #:use-module (gnu packages databases)
2d20b230 74 #:use-module (gnu packages docbook)
99828fa7 75 #:use-module (gnu packages documentation)
b977cd2b 76 #:use-module (gnu packages enchant)
661da251 77 #:use-module (gnu packages fontutils)
593ef98a 78 #:use-module (gnu packages freedesktop)
ebfc2ecc 79 #:use-module (gnu packages gettext)
661da251 80 #:use-module (gnu packages glib)
b977cd2b 81 #:use-module (gnu packages gnome)
661da251 82 #:use-module (gnu packages gnupg)
2fbffcf5 83 #:use-module (gnu packages golang)
403604c3 84 #:use-module (gnu packages gperf)
10f32ae2 85 #:use-module (gnu packages graphviz)
a4f763cd 86 #:use-module (gnu packages gstreamer)
b977cd2b 87 #:use-module (gnu packages gtk)
661da251
TGR
88 #:use-module (gnu packages guile)
89 #:use-module (gnu packages icu4c)
61f81618 90 #:use-module (gnu packages image)
1521775b 91 #:use-module (gnu packages kde)
9b73b76c 92 #:use-module (gnu packages kde-frameworks)
fcd984d7 93 #:use-module (gnu packages kerberos)
661da251 94 #:use-module (gnu packages less)
b977cd2b 95 #:use-module (gnu packages libcanberra)
f36a175a 96 #:use-module (gnu packages libevent)
413f8f3f 97 #:use-module (gnu packages libffi)
b1a2bc89 98 #:use-module (gnu packages libidn)
1521775b 99 #:use-module (gnu packages libreoffice)
661da251 100 #:use-module (gnu packages linux)
57163f91 101 #:use-module (gnu packages logging)
1ae27aac 102 #:use-module (gnu packages lua)
661da251 103 #:use-module (gnu packages man)
b40f4052 104 #:use-module (gnu packages markup)
685fa3f5 105 #:use-module (gnu packages matrix)
d02ada47 106 #:use-module (gnu packages mono)
dbcfefe5 107 #:use-module (gnu packages mpd)
b1a2bc89 108 #:use-module (gnu packages ncurses)
661da251 109 #:use-module (gnu packages networking)
10f32ae2 110 #:use-module (gnu packages nss)
661da251
TGR
111 #:use-module (gnu packages pcre)
112 #:use-module (gnu packages perl)
113 #:use-module (gnu packages photo)
403604c3 114 #:use-module (gnu packages php)
8b3099cf 115 #:use-module (gnu packages pkg-config)
f65fdd95 116 #:use-module (gnu packages protobuf)
8b3099cf 117 #:use-module (gnu packages python)
673031c7 118 #:use-module (gnu packages python-check)
cc6f4912 119 #:use-module (gnu packages python-crypto)
f65fdd95 120 #:use-module (gnu packages python-web)
44d10b1f 121 #:use-module (gnu packages python-xyz)
661da251
TGR
122 #:use-module (gnu packages qt)
123 #:use-module (gnu packages readline)
1521775b 124 #:use-module (gnu packages ruby)
dbcfefe5 125 #:use-module (gnu packages sphinx)
cd0322a3 126 #:use-module (gnu packages sqlite)
ea119a28 127 #:use-module (gnu packages tcl)
74afcc0f 128 #:use-module (gnu packages telephony)
661da251 129 #:use-module (gnu packages texinfo)
61f81618 130 #:use-module (gnu packages textutils)
a10052ac 131 #:use-module (gnu packages tls)
901c1aae 132 #:use-module (gnu packages video)
ebfc2ecc 133 #:use-module (gnu packages web)
661da251 134 #:use-module (gnu packages xdisorg)
3b38d78e 135 #:use-module (gnu packages xiph)
661da251
TGR
136 #:use-module (gnu packages xml)
137 #:use-module (gnu packages xorg)
138 #:use-module (guix build-system cmake)
3c401ca6 139 #:use-module (guix build-system go)
661da251
TGR
140 #:use-module (guix build-system glib-or-gtk)
141 #:use-module (guix build-system gnu)
142 #:use-module (guix build-system meson)
143 #:use-module (guix build-system perl)
144 #:use-module (guix build-system python)
34e31612 145 #:use-module (guix build-system qt)
435d8a83 146 #:use-module (guix build-system trivial)
661da251 147 #:use-module (guix download)
09431303 148 #:use-module (guix gexp)
661da251 149 #:use-module (guix git-download)
e0aa5b5b 150 #:use-module (guix hg-download)
661da251
TGR
151 #:use-module ((guix licenses) #:prefix license:)
152 #:use-module (guix packages)
153 #:use-module (guix utils))
7c706558 154
2fbffcf5
RG
155(define-public omemo-wget
156 (package
157 (name "omemo-wget")
158 (version "0.3.0")
159 (source
160 (origin
161 (method git-fetch)
162 (uri
163 (git-reference
164 (url "https://github.com/roobre/omemo-wget")
165 (commit (string-append "v" version))))
166 (file-name (git-file-name name version))
167 (sha256
168 (base32 "0s3vfaicw5xbjl9yiyr4ckrzhzqbvfh1w2ih1igavlfpgw4v7kva"))))
169 (build-system go-build-system)
170 (arguments
171 `(#:import-path "github.com/roobre/omemo-wget"
172 #:phases
173 (modify-phases %standard-phases
174 (add-after 'unpack 'patch
175 (lambda* (#:key inputs #:allow-other-keys)
176 (let* ((xdg-utils (assoc-ref inputs "xdg-utils"))
177 (xdg-open (string-append xdg-utils "/bin/xdg-open")))
178 (substitute* (find-files "." "\\.go$")
179 ;; Correct the import path of 'aesgcm' package.
180 (("roob\\.re/omemo-wget/aesgcm")
181 "github.com/roobre/omemo-wget/aesgcm")
182 ;; Use absolute path of 'xdg-open' program.
183 (("xdg-open") xdg-open))))))))
184 (inputs
8394619b 185 (list go-github-com-pkg-errors xdg-utils))
2fbffcf5
RG
186 (home-page "https://roob.re/omemo-wget")
187 (synopsis "Program to download and decrypt @code{aesgcm://} URLs")
188 (description "OMEMO-wget is a tool to handle cryptographic URLs, generated
189by @acronym{OMEMO, OMEMO Multi-End Message and Object Encryption}, during
190XMPP-based sessions.")
191 (license license:lgpl3+)))
192
1521775b
RG
193(define-public psi
194 (package
195 (name "psi")
196 (version "1.5")
197 (source
198 (origin
199 (method url-fetch)
200 (uri
201 (string-append "mirror://sourceforge/psi/Psi/"
202 version "/psi-" version ".tar.xz"))
203 (modules '((guix build utils)))
204 (snippet
205 `(begin
206 (delete-file-recursively "3rdparty")))
207 (sha256
208 (base32 "1dxmm1d1zr0pfs51lba732ipm6hm2357jlfb934lvarzsh7karri"))))
209 (build-system qt-build-system)
210 (arguments
211 `(#:tests? #f ; No target
212 #:configure-flags
213 (list
214 "-DUSE_ENCHANT=ON"
215 "-DUSE_CCACHE=OFF")
216 #:phases
217 (modify-phases %standard-phases
218 (add-after 'unpack 'patch-cmake
219 (lambda _
220 (substitute* "cmake/modules/FindHunspell.cmake"
221 (("hunspell-1.6")
222 "hunspell-1.7"))
223 #t)))))
224 (native-inputs
225 `(("pkg-config" ,pkg-config)
226 ("python" ,python-wrapper)
227 ("ruby" ,ruby)))
228 (inputs
229 `(("aspell" ,aspell)
230 ("enchant" ,enchant-1.6)
231 ("hunspell" ,hunspell)
232 ("libidn" ,libidn)
233 ("qca" ,qca)
ea0a5107 234 ("qtbase" ,qtbase-5)
5f228543 235 ("qtmultimedia-5" ,qtmultimedia-5)
1ef04fb2 236 ("qtsvg-5" ,qtsvg-5)
1521775b
RG
237 ("qtwebkit" ,qtwebkit)
238 ("qtx11extras" ,qtx11extras)
239 ("x11" ,libx11)
240 ("xext" ,libxext)
241 ("xcb" ,libxcb)
242 ("zlib" ,zlib)))
243 (synopsis "Qt-based XMPP Client")
244 (description "Psi is a capable XMPP client aimed at experienced users.
245Its design goals are simplicity and stability.")
246 (home-page "https://psi-im.org")
247 (license license:gpl2+)))
248
2d20b230
RG
249(define-public libgnt
250 (package
251 (name "libgnt")
046fcbae 252 (version "2.14.3")
2d20b230
RG
253 (source
254 (origin
255 (method url-fetch)
256 (uri
257 (string-append "mirror://sourceforge/pidgin/libgnt/"
258 version "/libgnt-" version ".tar.xz"))
259 (sha256
046fcbae 260 (base32 "08v14fjcx2wx6c573wllq015l6zc8qkpz8rrl6qhp7crf9zlbxap"))))
2d20b230
RG
261 (build-system meson-build-system)
262 (outputs '("out" "doc"))
263 (arguments
264 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
265 #:phases
266 (modify-phases %standard-phases
267 (add-after 'unpack 'patch-ncurses-path
268 (lambda* (#:key inputs #:allow-other-keys)
269 (substitute* "meson.build"
270 (("'/usr'")
271 (string-append "'"
272 (assoc-ref inputs "ncurses")
046fcbae 273 "'")))))
2d20b230
RG
274 (add-before 'configure 'patch-docbook-xml
275 (lambda* (#:key inputs #:allow-other-keys)
276 (with-directory-excursion "doc"
277 (substitute* "libgnt-docs.xml"
278 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
279 (string-append (assoc-ref inputs "docbook-xml")
046fcbae 280 "/xml/dtd/docbook/"))))))
2d20b230
RG
281 (add-after 'install 'move-doc
282 (lambda* (#:key outputs #:allow-other-keys)
283 (let* ((out (assoc-ref outputs "out"))
284 (doc (assoc-ref outputs "doc")))
285 (mkdir-p (string-append doc "/share"))
286 (rename-file
287 (string-append out "/share/gtk-doc")
046fcbae 288 (string-append doc "/share/gtk-doc"))))))))
2d20b230
RG
289 (native-inputs
290 `(("docbook-xml" ,docbook-xml-4.1.2)
291 ("glib:bin" ,glib "bin")
292 ("gobject-introspection" ,gobject-introspection)
293 ("gtk-doc" ,gtk-doc)
294 ("pkg-config" ,pkg-config)))
295 (inputs
8394619b 296 (list ncurses))
2d20b230
RG
297 (propagated-inputs
298 `(("glib" ,glib)
299 ("libxml" ,libxml2)
300 ("python" ,python-2)))
301 (synopsis "GLib Ncurses Toolkit")
302 (description "GNT is an ncurses toolkit for creating text-mode graphical
303user interfaces in a fast and easy way. It is based on GLib and ncurses.")
304 (home-page "https://keep.imfreedom.org/libgnt/libgnt")
305 (license license:gpl2+)))
306
4b8aa089
RG
307(define-public libgadu
308 (package
309 (name "libgadu")
310 (version "1.12.2")
311 (source
312 (origin
313 (method git-fetch)
314 (uri
315 (git-reference
316 (url "https://github.com/wojtekka/libgadu.git")
317 (commit version)))
318 (file-name
319 (git-file-name name version))
320 (sha256
321 (base32 "1s16cripy5w9k12534qb012iwc5m9qcjyrywgsziyn3kl3i0aa8h"))))
322 (build-system gnu-build-system)
323 (arguments
74632463
LC
324 ;; 'test/manual/userconfig.h' contains definitions in lieu of
325 ;; declarations, hence '-fcommon'.
4b8aa089 326 `(#:configure-flags
74632463 327 (list "--disable-static" "CFLAGS=-O2 -g -fcommon")
4b8aa089
RG
328 #:phases
329 (modify-phases %standard-phases
330 (add-after 'unpack 'patch-shebangs
331 (lambda* (#:key inputs #:allow-other-keys)
332 (substitute* "protobufgen.sh"
333 (("/bin/sh")
bc64d955 334 (search-input-file inputs "/bin/sh"))))))))
4b8aa089 335 (native-inputs
8394619b
LC
336 (list autoconf
337 automake
338 bash
339 doxygen
340 libtool
341 perl
342 pkg-config))
4b8aa089
RG
343 (inputs
344 `(("curl" ,curl)
345 ("expat" ,expat)
346 ("libprotobuf-c" ,protobuf-c)
347 ("libxml" ,libxml2)
348 ("openssl" ,openssl)
349 ("zlib" ,zlib)))
350 (propagated-inputs
8394619b 351 (list gnutls))
4b8aa089
RG
352 (synopsis "Library for handling the protocol of Gadu-Gadu")
353 (description "LibGadu is library for handling Gadu-Gadu instant messenger
354protocol. The library is written in C and aims to be operating system and
355environment independent.")
356 (home-page "https://libgadu.net/index.en.html")
357 (license license:lgpl2.1+)))
358
e5eb4db8
RG
359(define-public silc-toolkit
360 (package
361 (name "silc-toolkit")
362 (version "1.1.12")
363 (source
364 (origin
365 (method url-fetch)
366 (uri
367 (string-append "mirror://sourceforge/silc/silc/toolkit/sources/silc-toolkit-"
368 version ".tar.gz"))
369 (sha256
370 (base32 "0mnvf9n7qriadg0p7a8qmvcayhnns2g9fhmcymavlm0v8xrky33y"))))
371 (build-system gnu-build-system)
372 (arguments
373 `(#:configure-flags
374 (list
375 "--disable-static"
376 "--enable-ipv6"
377 "--enable-stack-trace")
378 #:phases
379 (modify-phases %standard-phases
380 (add-after 'unpack 'trigger-bootstrap
381 (lambda _
382 (delete-file "configure")
383 (delete-file "Makefile.in")
384 #t)))))
385 (native-inputs
8394619b 386 (list autoconf automake libtool perl pkg-config))
e5eb4db8
RG
387 (synopsis "SILC ToolKit")
388 (description "SILC (Secure Internet Live Conferencing) is a modern and secure
389conferencing protocol. It provides all the common conferencing services like
390private messages, instant messages, channels and groups, and video and audio
391conferencing.")
392 (home-page "https://silc.github.io/info")
393 (license
394 ;; Dual-licensed
395 (list
396 license:gpl2+
397 license:bsd-2))))
398
b2d81744
VM
399(define-public qxmpp
400 (package
401 (name "qxmpp")
402 (version "1.4.0")
403 (source
404 (origin
405 (method git-fetch)
406 (uri (git-reference
407 (url "https://github.com/qxmpp-project/qxmpp")
408 (commit (string-append "v" version))))
409 (file-name (git-file-name name version))
410 (sha256
411 (base32 "1knpq1jkwk0lxdwczbmzf7qrjvlxba9yr40nbq9s5nqkcx6q1c3i"))))
412 (build-system cmake-build-system)
413 (arguments
414 `(#:configure-flags (list "-DBUILD_EXAMPLES=false"
415 "-DWITH_GSTREAMER=true")
416 #:phases
417 (modify-phases %standard-phases
418 (replace 'check
419 (lambda* (#:key tests? #:allow-other-keys)
420 (when tests?
421 (invoke "ctest" "-E"
422 (string-join ;; These tests use the network.
423 (list "tst_qxmppiceconnection"
424 "tst_qxmppcallmanager"
425 "tst_qxmpptransfermanager")
426 "|"))))))))
427 (native-inputs
8394619b 428 (list pkg-config))
b2d81744 429 (inputs
8394619b 430 (list gstreamer qtbase-5))
b2d81744
VM
431 (home-page "https://github.com/qxmpp-project/qxmpp")
432 (synopsis "XMPP client and server library")
433 (description
434 "QXmpp is a XMPP client and server library written in C++ and uses the Qt
435framework. It builds XMPP clients complying with the XMPP Compliance Suites
4362021 for IM and Advanced Mobile.")
437 (license license:lgpl2.1+)))
438
30db113f
RG
439(define-public meanwhile
440 (package
441 (name "meanwhile")
442 (version "1.1.1")
443 (source
444 (origin
445 (method git-fetch)
446 (uri
447 (git-reference
448 (url "https://github.com/obriencj/meanwhile.git")
449 (commit
450 (string-append "v" version))))
451 (file-name
452 (git-file-name name version))
453 (sha256
454 (base32 "1k1gvmx1ikm0y1mdmm495rzkb00pl170jfaf2dy0n5aiiknkk7q3"))))
455 (build-system glib-or-gtk-build-system)
456 (native-inputs
8394619b 457 (list autoconf automake doxygen libtool pkg-config))
30db113f 458 (propagated-inputs
8394619b 459 (list glib))
30db113f
RG
460 (synopsis "Library for Lotus Instant Messaging")
461 (description "Meanwhile is a library for connecting to a LIM (Lotus Instant
462Messaging, formerly Lotus Sametime, formerly VPBuddy) community. It uses a
463protocol based in part off of the IMPP draft(*1), and in part off of traces of
464TCP sessions from existing clients.")
465 (home-page "https://github.com/obriencj/meanwhile")
466 (license license:lgpl3)))
467
dbcfefe5
RG
468(define-public poezio
469 (package
470 (name "poezio")
ddfebdab 471 (version "0.13.2")
dbcfefe5
RG
472 (source
473 (origin
474 (method git-fetch)
475 (uri
476 (git-reference
477 (url "https://lab.louiz.org/poezio/poezio.git")
478 (commit
479 (string-append "v" version))))
480 (file-name
481 (git-file-name name version))
482 (sha256
ddfebdab 483 (base32 "0p92k8ssjsgavyfv1fd5cgzyw87dmdd84vaz7zvfsf5crvpr1mkf"))))
dbcfefe5
RG
484 (build-system python-build-system)
485 (arguments
ddfebdab 486 (list #:phases
487 #~(modify-phases %standard-phases
488 (add-after 'unpack 'patch
489 (lambda _
490 (substitute* "setup.py"
491 (("'CC', 'cc'")
492 "'CC', 'gcc'")))))))
dbcfefe5 493 (native-inputs
8394619b 494 (list pkg-config python-setuptools python-sphinx))
dbcfefe5 495 (inputs
8394619b
LC
496 (list python-mpd2
497 python-potr
498 python-pyasn1
499 python-pyasn1-modules
500 python-pygments
501 python-pyinotify
8394619b
LC
502 python-qrcode
503 python-slixmpp))
dbcfefe5
RG
504 (synopsis "Console Jabber/XMPP Client")
505 (description "Poezio is a free console XMPP client (the protocol on which
506the Jabber IM network is built).
507Its goal is to let you connect very easily (no account creation needed) to the
508network and join various chatrooms, immediately. It tries to look like the
509most famous IRC clients (weechat, irssi, etc). Many commands are identical and
510you won't be lost if you already know these clients. Configuration can be
511made in a configuration file or directly from the client.
512You'll find the light, fast, geeky and anonymous spirit of IRC while using a
513powerful, standard and open protocol.")
514 (home-page "https://poez.io/en/")
515 (license license:zlib)))
516
7c706558
MW
517(define-public libotr
518 (package
519 (name "libotr")
89e58e8e 520 (version "4.1.1")
844da716
RG
521 (source
522 (origin
523 (method url-fetch)
524 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
525 version ".tar.gz"))
526 (sha256
527 (base32 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
528 (patches
529 (search-patches "libotr-test-auth-fix.patch"))))
7c706558 530 (build-system gnu-build-system)
844da716 531 (native-inputs
8394619b 532 (list perl)) ; for the test suite
844da716 533 (inputs
8394619b 534 (list libgpg-error))
7c706558 535 (propagated-inputs
8394619b 536 (list libgcrypt)) ; libotr headers include gcrypt.h
7c706558 537 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
844da716
RG
538 (description "OTR allows you to have private conversations over instant
539messaging by providing: (1) Encryption: No one else can read your instant
540messages. (2) Authentication: You are assured the correspondent is who you
541think it is. (3) Deniability: The messages you send do not have digital
542signatures that are checkable by a third party. Anyone can forge messages
543after a conversation to make them look like they came from you. However,
544during a conversation, your correspondent is assured the messages he sees are
545authentic and unmodified. (4) Perfect forward secrecy: If you lose control of
546your private keys, no previous conversation is compromised.")
7c706558 547 (home-page "https://otr.cypherpunks.ca/")
844da716
RG
548 (license
549 (list
d3fb65a8
RG
550 ;; Library
551 license:lgpl2.1+
552 ;; Others
553 license:gpl2+))))
7c706558 554
0d549f60
RH
555(define-public libsignal-protocol-c
556 (package
f36a175a 557 (name "libsignal-protocol-c")
558 (version "2.3.3")
559 (source (origin
560 (method git-fetch)
561 (uri (git-reference
562 (url "https://github.com/WhisperSystems/libsignal-protocol-c")
563 (commit (string-append "v" version))))
564 (file-name (git-file-name name version))
565 (sha256
566 (base32
567 "0z5p03vk15i6h870azfjgyfgxhv31q2vq6rfhnybrnkxq2wqzwhk"))))
568 (arguments
569 `(;; Required for proper linking and for tests to run.
570 #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
571 (build-system cmake-build-system)
572 (inputs (list ;; Required for tests:
573 check openssl))
574 (native-inputs (list pkg-config))
575 (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
576 (synopsis "Implementation of a ratcheting forward secrecy protocol")
577 (description "libsignal-protocol-c is an implementation of a ratcheting
0d549f60
RH
578forward secrecy protocol that works in synchronous and asynchronous
579messaging environments. It can be used with messaging software to provide
580end-to-end encryption.")
f36a175a 581 (license license:gpl3+)))
0d549f60 582
8e5df0ce
JT
583(define-public axc
584 (package
585 (name "axc")
ac65e302 586 (version "0.3.7")
8e5df0ce
JT
587 (source
588 (origin
589 (method git-fetch)
590 (uri (git-reference
591 (url "https://github.com/gkdr/axc")
592 (commit (string-append "v" version))))
593 (modules '((guix build utils)))
594 (snippet
595 `(begin
ac65e302
TGR
596 ;; Empty directories meant to hold submodules that we provide as
597 ;; proper inputs below.
8e5df0ce
JT
598 (delete-file-recursively "lib")))
599 (file-name
600 (git-file-name name version))
601 (sha256
ac65e302 602 (base32 "0b02b9flri374f8aw6xfz7mm9s57rb7393r8mdphv7kcsf76i7i5"))))
8e5df0ce
JT
603 (build-system cmake-build-system)
604 (arguments
605 `(#:phases (modify-phases %standard-phases
606 (replace 'configure
607 (lambda* (#:key outputs #:allow-other-keys)
608 (let ((out (assoc-ref outputs "out")))
609 (setenv "CC" "gcc")
610 (setenv "PREFIX" out)))))
611 #:parallel-tests? #f))
8394619b
LC
612 (native-inputs (list cmocka pkg-config))
613 (inputs (list glib libgcrypt libsignal-protocol-c sqlite))
8e5df0ce
JT
614 (synopsis "Client library for libsignal-protocol-c")
615 (description "This is a client library for @code{libsignal-protocol-c}.
616It implements the necessary interfaces using @code{libgcrypt} and
617@code{sqlite}.")
618 (home-page "https://github.com/gkdr/axc")
619 (license license:gpl3))) ;GPLv3-only, per license headers
620
2a056768
JT
621(define-public libomemo
622 (package
623 (name "libomemo")
624 (version "0.7.1")
625 (source
626 (origin
627 (method git-fetch)
628 (uri (git-reference
629 (url "https://github.com/gkdr/libomemo")
630 (commit (string-append "v" version))))
631 (file-name
632 (git-file-name name version))
633 (sha256
634 (base32 "1q3vyj8zk3vm0a4v6w8qya5dhk2yw04bga8799a0zl6907nf122k"))))
635 (build-system cmake-build-system)
636 (arguments
637 `(#:phases (modify-phases %standard-phases
638 (replace 'configure
639 (lambda* (#:key outputs #:allow-other-keys)
640 (let ((out (assoc-ref outputs "out")))
641 (setenv "CC" "gcc")
642 (setenv "PREFIX" out)))))
643 #:parallel-tests? #f))
8394619b
LC
644 (native-inputs (list cmocka pkg-config))
645 (inputs (list glib libgcrypt minixml sqlite))
2a056768
JT
646 (synopsis "OMEMO C library")
647 (description "This library implements @acronym{OMEMO, OMEMO Multi-End
648Message and Object Encryption} of XMPP (XEP-0384) in C.")
649 (home-page "https://github.com/gkdr/libomemo")
650 (license license:expat)))
651
8b3099cf
MW
652(define-public bitlbee
653 (package
654 (name "bitlbee")
f9ea47a9 655 (version "3.6")
8b3099cf
MW
656 (source (origin
657 (method url-fetch)
95791189 658 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
8b3099cf
MW
659 version ".tar.gz"))
660 (sha256
f9ea47a9 661 (base32 "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz"))))
8b3099cf 662 (build-system gnu-build-system)
8394619b
LC
663 (native-inputs (list pkg-config
664 ;; Note: Change to 'check' for versions > 3.6.
665 check-0.12))
666 (inputs (list glib libotr gnutls python perl))
8b3099cf 667 (arguments
dc1d3cde
KK
668 `(#:phases
669 (modify-phases %standard-phases
d7554047
TL
670 (add-before 'configure 'set-python
671 (lambda _ (setenv "PYTHON" (which "python3")) #t))
dc1d3cde
KK
672 (add-after 'install 'install-etc
673 (lambda* (#:key (make-flags '()) #:allow-other-keys)
bea06837 674 (apply invoke "make" "install-etc" make-flags)))
31060bff
PAR
675 (add-after 'install-etc 'install-lib
676 (lambda* (#:key (make-flags '()) #:allow-other-keys)
bea06837 677 (apply invoke "make" "install-dev" make-flags)))
dc1d3cde
KK
678 (replace 'configure
679 ;; bitlbee's configure script does not tolerate many of the
680 ;; variable settings that Guix would pass to it.
681 (lambda* (#:key outputs #:allow-other-keys)
bea06837
RW
682 (invoke "./configure"
683 (string-append "--prefix="
684 (assoc-ref outputs "out"))
685 "--otr=1"))))))
8b3099cf
MW
686 (synopsis "IRC to instant messaging gateway")
687 (description "BitlBee brings IM (instant messaging) to IRC clients, for
688people who have an IRC client running all the time and don't want to run an
689additional IM client. BitlBee currently supports XMPP/Jabber (including
690Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
691microblogging network (plus all other Twitter API compatible services like
692identi.ca and status.net).")
85ad4ffb 693 (home-page "https://www.bitlbee.org/")
29e83e1c 694 (license (list license:gpl2+ license:bsd-2))))
8b3099cf 695
8e6c9005
LC
696(define-public bitlbee-purple
697 ;; This variant uses libpurple, which provides support for more protocols at
698 ;; the expense of a much bigger closure.
699 (package/inherit bitlbee
700 (name "bitlbee-purple")
701 (synopsis "IRC to instant messaging gateway (using Pidgin's libpurple)")
2fb4304e
LC
702 (inputs (modify-inputs (package-inputs bitlbee)
703 (prepend pidgin)))
cd6d3a87
LC
704 (native-search-paths
705 (list (search-path-specification
706 (variable "PURPLE_PLUGIN_PATH")
707 ;; XXX: Should be (version-major (package-version pidgin)) but
708 ;; can't due to circular references.
709 (files (list (string-append "lib/purple-2")
710 "lib/pidgin")))))
8e6c9005
LC
711 (arguments
712 (substitute-keyword-arguments (package-arguments bitlbee)
713 ((#:phases phases '%standard-phases)
714 `(modify-phases ,phases
715 (replace 'configure ;add "--purple=1"
716 (lambda* (#:key outputs #:allow-other-keys)
717 (invoke "./configure"
718 (string-append "--prefix="
719 (assoc-ref outputs "out"))
720 "--otr=1" "--purple=1")))))
721 ((#:tests? _ #t)
722 ;; XXX: Tests fail to link, and ./configure says that it's "supported
723 ;; on a best-effort basis" anyway.
724 #f)))))
725
b992bfea 726(define-public bitlbee-discord
854e38ee
AM
727 ;; Version 0.4.3 of bitlbee-discord was prepared to work for
728 ;; glib@2.68. However, version 2.69 of glib introduced a breaking change
729 ;; causing bitlbee-discord to throw:
730 ;;
731 ;; discord - Login error: Failed to switch to websocket mode
732 ;;
733 ;; This makes the plugin unable to connect and therefore unusable:
734 ;; https://github.com/sm00th/bitlbee-discord/issues/226
735 ;; The specified commit fixes incompatibility with glib@2.69 and newer.
736 (let ((commit "607f9887ca85f246e970778e3d40aa5c346365a7")
737 (revision "1"))
738 (package
739 (name "bitlbee-discord")
740 (version (git-version "0.4.3" revision commit))
741 (source
742 (origin
743 (method git-fetch)
744 (uri (git-reference
745 (url "https://github.com/sm00th/bitlbee-discord")
746 (commit commit)))
747 (file-name (git-file-name name version))
748 (sha256
749 (base32 "0jkwhx2walx2ay0vc9x13q0j1qq4r5x30ss03a3j7ks28xvsnxc7"))))
750 (build-system gnu-build-system)
751 (arguments
752 `(#:configure-flags
753 (let ((out (assoc-ref %outputs "out")))
754 (list (string-append "--with-bdatadir=" out "/share/bitlbee/")
755 (string-append "--with-plugindir=" out "/lib/bitlbee/")))
756 #:phases
757 (modify-phases %standard-phases
758 (add-after 'unpack 'patch-autogen
759 (lambda _
760 (let ((sh (which "sh")))
761 (substitute* "autogen.sh" (("/bin/sh") sh))
762 (setenv "CONFIG_SHELL" sh)))))))
763 (inputs (list glib))
764 (native-inputs (list pkg-config
765 autoconf
766 automake
767 texinfo
768 libtool
769 bitlbee ; needs bitlbee headers
770 bash))
771 (synopsis "Discord plugin for Bitlbee")
772 (description "Bitlbee-discord is a plugin for Bitlbee which provides
b992bfea 773access to servers running the Discord protocol.")
854e38ee
AM
774 (home-page "https://github.com/sm00th/bitlbee-discord/")
775 (license license:gpl2+))))
b992bfea 776
a17ab977 777(define-public purple-mattermost
13a5d9f9
LC
778 ;; The latest release (1.2) only supports Mattermost's /api/v3. Choose a
779 ;; commit that supports /api/v4.
780 (let ((commit "158ce2052af9aaf3d1f6f045f0cfba276e0e91cf")
781 (revision "0"))
782 (package
783 (name "purple-mattermost")
784 (version (git-version "1.2" revision commit))
785 (home-page "https://github.com/EionRobb/purple-mattermost")
786 (source (origin
787 (method git-fetch)
788 (uri (git-reference (url home-page)
789 (commit commit)))
790 (file-name (git-file-name name version))
791 (sha256
792 (base32
793 "1481zm20pnfq52ncg7hxayjq8cw3a6yh9m4jm1m5s8chsq04015l"))))
794 (build-system gnu-build-system)
795 (arguments
796 `(#:phases (modify-phases %standard-phases
797 (replace 'configure
798 (lambda* (#:key inputs outputs #:allow-other-keys)
799 ;; Adjust the makefile to install files in the right
800 ;; place.
801 (let ((out (assoc-ref outputs "out")))
802 (substitute* "Makefile"
803 (("MATTERMOST_DEST = .*")
804 (string-append "MATTERMOST_DEST = " out
805 "/lib/purple-2\n")) ;XXX: hardcoded
806 (("MATTERMOST_ICONS_DEST = .*")
807 (string-append "MATTERMOST_ICONS_DEST = "
808 out
809 "/share/pixmaps/pidgin/protocols\n")))
810 #t))))
811 #:make-flags (list "CC=gcc"
812 ,(string-append "PLUGIN_VERSION=" version))
813 #:tests? #f))
8394619b
LC
814 (inputs (list glib json-glib discount pidgin))
815 (native-inputs (list pkg-config))
13a5d9f9
LC
816 (synopsis "Purple plug-in to access Mattermost instant messaging")
817 (description
818 "Purple-Mattermost is a plug-in for Purple, the instant messaging library
a17ab977
LC
819used by Pidgin and Bitlbee, among others, to access
820@uref{https://mattermost.com/, Mattermost} servers.")
13a5d9f9 821 (license license:gpl3+))))
a17ab977 822
b977cd2b
JL
823(define-public hexchat
824 (package
825 (name "hexchat")
b7349559 826 (version "2.16.1")
413f8f3f
TGR
827 (source
828 (origin
829 (method url-fetch)
830 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
831 version ".tar.xz"))
832 (sha256
b7349559 833 (base32 "1iy4ln6yfgy3xysrfpjxw8fn38i3qx8jsn2mk2prshfzf7d9gr57"))))
c2a601c9
LF
834 (build-system meson-build-system)
835 (native-inputs `(("gettext" ,gettext-minimal)
9e21a1c8 836 ("glib:bin" ,glib "bin") ;need glib-genmarshal
c2a601c9 837 ("perl" ,perl)
74b86713 838 ("pkg-config" ,pkg-config)))
b977cd2b
JL
839 (inputs `(("dbus-glib" ,dbus-glib)
840 ("dbus" ,dbus)
841 ("enchant" ,enchant)
b977cd2b
JL
842 ("gtk" ,gtk+-2)
843 ("libcanberra" ,libcanberra)
b977cd2b 844 ("openssl" ,openssl)
71af71dc
TGR
845
846 ;; Bindings for add-on scripts.
847 ("luajit" ,luajit)
848 ("perl-xml-parser" ,perl-xml-parser)
413f8f3f
TGR
849 ("python" ,python)
850 ("python-cffi" ,python-cffi)
851
852 ;; For the ensuing WRAP-PROGRAM.
853 ("bash-minimal" ,bash-minimal)))
74b86713 854 (arguments
c2a601c9 855 `(#:phases
74b86713 856 (modify-phases %standard-phases
c2a601c9
LF
857 (add-after 'unpack 'skip-desktop-database-updates
858 (lambda _
859 ;; The build scripts update icon and desktop file databases when
860 ;; DESTDIR is not set. We can't update these databases from
861 ;; within the build chroot, but we also don't set DESTDIR. So, we
862 ;; just skip this code.
863 (substitute* "meson_post_install.py"
864 (("if 'DESTDIR' not in os.environ:")
413f8f3f
TGR
865 "if False:"))))
866 (add-after 'install 'wrap-program
867 ;; Let it ‘initialize the Python-CFFI embedding logic’ at run time.
868 (lambda* (#:key outputs #:allow-other-keys)
869 (let* ((out (assoc-ref outputs "out"))
870 (bin (string-append out "/bin")))
871 (wrap-program (string-append bin "/hexchat")
f3496c2b
GLV
872 `("GUIX_PYTHONPATH" ":" prefix
873 (,(getenv "GUIX_PYTHONPATH"))))))))))
f255bec6 874 (synopsis "Graphical IRC client")
b977cd2b 875 (description
71af71dc
TGR
876 "HexChat lets you connect to multiple IRC networks at once. The main
877window shows the list of currently connected networks and their channels, the
878current conversation and the list of users. It uses colors to differentiate
879between users and to highlight messages. It checks spelling using available
b977cd2b 880dictionaries. HexChat can be extended with multiple addons.")
e02013b7 881 (home-page "https://hexchat.net/")
29e83e1c 882 (license license:gpl2+)))
b977cd2b 883
ea119a28
TUBK
884(define-public ngircd
885 (package
886 (name "ngircd")
84ea98d6 887 (version "26.1")
ea119a28
TUBK
888 (source (origin
889 (method url-fetch)
6809d937 890 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
ea119a28
TUBK
891 version ".tar.xz"))
892 (sha256
893 (base32
84ea98d6 894 "0m32v0c7mq96rshws4h6d0pi4bm0hynfzx3x01mgrxh9c396zham"))
4fd95d91 895 (patches (search-patches "ngircd-handle-zombies.patch"))))
ea119a28
TUBK
896 (build-system gnu-build-system)
897 ;; Needed for the test suite.
8394619b 898 (native-inputs (list procps expect inetutils openssl))
8f3afba4 899 ;; XXX Add libident.
ea119a28 900 (inputs `(("zlib" ,zlib)
8f3afba4 901 ("libwrap" ,tcp-wrappers)
ea119a28
TUBK
902 ("gnutls" ,gnutls)
903 ,@(if (string-suffix? "-linux"
904 (or (%current-target-system)
905 (%current-system)))
906 `(("linux-pam" ,linux-pam))
907 '())))
908 (arguments
909 `(#:configure-flags
8f3afba4 910 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
ea119a28
TUBK
911 ,@(if (string-suffix? "-linux"
912 (or (%current-target-system)
913 (%current-system)))
914 '("--with-pam")
915 '()))
916 #:phases
341ed63f
TGR
917 (modify-phases %standard-phases
918 ;; Necessary for the test suite.
919 (add-after 'configure 'post-configure
920 (lambda _
921 (substitute* "src/ngircd/Makefile"
922 (("/bin/sh") (which "sh")))
923 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
924 ;; which fails arbitrarily.
925 (with-output-to-file "src/testsuite/getpid.sh"
926 (lambda ()
927 (display
928 (string-append
929 "#!" (which "sh") "\n"
930 "ps -C \"$1\" -o pid=\n"))))
931 ;; Our variant of getpid.sh does not match interpreter names
932 ;; when the script's shebang is invoked directly as "./foo".
933 ;; Patch cases where the test suite relies on this.
934 (substitute* "src/testsuite/start-server.sh"
935 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
936 ;; 'make' instead.
937 (("getpid.sh sh") "getpid.sh make")))))))
6809d937 938 (home-page "https://ngircd.barton.de/")
ea119a28
TUBK
939 (synopsis "Lightweight Internet Relay Chat server for small networks")
940 (description
07b7a665
TGR
941 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
942or private networks. It is easy to configure, can cope with dynamic IP
943addresses, and supports IPv6, SSL-protected connections, as well as PAM for
944authentication.")
29e83e1c 945 (license license:gpl2+)))
ea119a28 946
b1a2bc89
MW
947(define-public pidgin
948 (package
949 (name "pidgin")
5c38e5e2 950 (version "2.14.5")
b1a2bc89
MW
951 (source
952 (origin
953 (method url-fetch)
60e1fa20
RG
954 (uri
955 (string-append "mirror://sourceforge/pidgin/Pidgin/"
89f4f0ba 956 version "/pidgin-" version ".tar.gz"))
b1a2bc89 957 (sha256
5c38e5e2 958 (base32 "12llip3r8126gph82r638xjv2v2rg34qgggn1nbwfmc3s7halimr"))
60e1fa20 959 (patches
8d89d3c9 960 (search-patches "pidgin-add-search-path.patch"))
44929817
TGR
961 (modules '((guix build utils)))
962 (snippet
963 '(begin
89f4f0ba 964 ;; Remove stale generated file after applying patches.
44929817
TGR
965 (delete-file "configure")
966 #t))))
b1a2bc89
MW
967 (build-system glib-or-gtk-build-system)
968 (native-inputs
7b1dccfb
RG
969 `(("autoconf" ,autoconf) ;; For bootstrap
970 ("automake" ,automake) ;; For bootstrap
971 ("check" ,check)
10f32ae2 972 ("dot" ,graphviz)
b1a2bc89 973 ("gconf" ,gconf)
7b1dccfb
RG
974 ("intltool" ,intltool)
975 ("libtool" ,libtool) ;; For bootstrap
10f32ae2 976 ("pkg-config" ,pkg-config)))
b1a2bc89 977 (inputs
7b1dccfb 978 `(("avahi" ,avahi)
b1a2bc89
MW
979 ("cyrus-sasl" ,cyrus-sasl)
980 ("dbus" ,dbus)
981 ("dbus-glib" ,dbus-glib)
10f32ae2 982 ;; ("evolution-data-server" ,evolution-data-server)
3fd44778 983 ("farstream" ,farstream)
7b1dccfb 984 ("gnutls" ,gnutls)
3fd44778 985 ("gstreamer" ,gstreamer)
10f32ae2 986 ;; ("gtkspell2" ,gtkspell2)
55412068 987 ("libgadu" ,libgadu)
7b1dccfb 988 ("libgcrypt" ,libgcrypt)
10f32ae2 989 ("libgnt" ,libgnt)
7b1dccfb 990 ("libice" ,libice)
b1a2bc89
MW
991 ("libidn" ,libidn)
992 ("libltdl" ,libltdl)
7b1dccfb 993 ("libsm" ,libsm)
10f32ae2
RG
994 ("libx11" ,libx11)
995 ("libxext" ,libxext)
b1a2bc89 996 ("libxml2" ,libxml2)
7b1dccfb 997 ("libxscrnsaver" ,libxscrnsaver)
b1a2bc89 998 ("libxslt" ,libxslt)
10f32ae2 999 ;; ("libzephyr" ,libzephyr)
80ecda97 1000 ("meanwhile" ,meanwhile)
d02ada47 1001 ("mono" ,mono)
b1a2bc89 1002 ("ncurses" ,ncurses)
569958ae 1003 ("network-manager" ,network-manager)
10f32ae2
RG
1004 ("nspr" ,nspr)
1005 ("nss" ,nss)
1006 ("pango" ,pango)
1007 ("perl" ,perl)
1008 ("python" ,python-2)
7b1dccfb 1009 ("python2-dbus" ,python2-dbus)
43ba7a9b 1010 ("silc" ,silc-toolkit)
b1a2bc89 1011 ("sqlite" ,sqlite)
82356780 1012 ("startup-notification" ,startup-notification)
f0e429a2
RG
1013 ("tcl" ,tcl)
1014 ("tk" ,tk)))
10f32ae2 1015 (propagated-inputs
8394619b 1016 (list glib gtk+-2))
b1a2bc89
MW
1017 (arguments
1018 `(#:configure-flags
60e1fa20 1019 (list
3fd44778
RG
1020 (string-append "CFLAGS=-I"
1021 (assoc-ref %build-inputs "gst-plugins-base")
1022 "/include/gstreamer-1.0")
60e1fa20 1023 "--disable-gtkspell"
c6e9efd6 1024 "--disable-gevolution"
1b80f670 1025 "--enable-cap"
d02ada47 1026 "--enable-mono"
60e1fa20
RG
1027 "--enable-cyrus-sasl"
1028 (string-append "--with-ncurses-headers="
1029 (assoc-ref %build-inputs "ncurses")
82356780
RG
1030 "/include")
1031 (string-append "--with-tclconfig="
1032 (assoc-ref %build-inputs "tcl")
f0e429a2
RG
1033 "/lib")
1034 (string-append "--with-tkconfig="
1035 (assoc-ref %build-inputs "tk")
c6e9efd6 1036 "/lib"))))
b1a2bc89 1037 (native-search-paths
60e1fa20
RG
1038 (list
1039 (search-path-specification
1040 (variable "PURPLE_PLUGIN_PATH")
1041 (files
1042 (list
1043 (string-append "lib/purple-"
1044 (version-major version))
1045 "lib/pidgin")))))
dbe2dfa5 1046 (home-page "https://www.pidgin.im/")
b1a2bc89 1047 (synopsis "Graphical multi-protocol instant messaging client")
60e1fa20
RG
1048 (description "Pidgin is a modular instant messaging client that supports
1049many popular chat protocols.")
b1a2bc89
MW
1050 (license
1051 (list
60e1fa20
RG
1052 license:gpl2+ ; Most of the code
1053 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
29e83e1c 1054 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
b1a2bc89 1055 ;; The following licenses cover the zephyr protocol plugin:
29e83e1c 1056 (license:non-copyleft
b1a2bc89
MW
1057 "file://libpurple/protocols/zephyr/mit-copyright.h"
1058 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
29e83e1c 1059 (license:non-copyleft
b1a2bc89
MW
1060 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
1061 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
1062
0a143f67
MW
1063(define-public pidgin-otr
1064 (package
1065 (name "pidgin-otr")
f9733422 1066 (version "4.0.2")
4f1f5189
RG
1067 (source
1068 (origin
1069 (method url-fetch)
1070 (uri
1071 (string-append "https://otr.cypherpunks.ca/"
1072 name "-" version ".tar.gz"))
1073 (sha256
1074 (base32 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
0a143f67
MW
1075 (build-system gnu-build-system)
1076 (native-inputs
e3196755 1077 (list gettext-minimal intltool pkg-config))
0a143f67 1078 (inputs
8394619b
LC
1079 (list glib
1080 gtk+-2
1081 libgcrypt
1082 libgpg-error
1083 libotr
1084 perl
1085 pidgin))
0a143f67
MW
1086 (home-page "https://otr.cypherpunks.ca/")
1087 (synopsis "Off-the-Record Messaging plugin for Pidgin")
4f1f5189
RG
1088 (description "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin
1089instant messaging client. OTR (Off-the-Record) Messaging allows you to have
1090private conversations over instant messaging by providing: (1) Encryption: No
1091one else can read your instant messages. (2) Authentication: You are assured
1092the correspondent is who you think it is. (3) Deniability: The messages you
1093send do not have digital signatures that are checkable by a third party. Anyone
0a143f67 1094can forge messages after a conversation to make them look like they came from
4f1f5189
RG
1095you. However, during a conversation, your correspondent is assured the messages
1096he sees are authentic and unmodified. (4) Perfect forward secrecy: If you lose
1097control of your private keys, no previous conversation is compromised.")
3fd6fd72 1098 (license license:gpl2+)))
0a143f67 1099
a10052ac
DT
1100(define-public znc
1101 (package
1102 (name "znc")
042d7eb1 1103 (version "1.8.2")
a10052ac
DT
1104 (source (origin
1105 (method url-fetch)
df3a4611 1106 (uri (string-append "https://znc.in/releases/archive/znc-"
a10052ac
DT
1107 version ".tar.gz"))
1108 (sha256
1109 (base32
042d7eb1 1110 "03fyi0j44zcanj1rsdx93hkdskwfvhbywjiwd17f9q1a7yp8l8zz"))))
2b0f3293 1111 (build-system cmake-build-system)
a10052ac 1112 (arguments
2b0f3293
TGR
1113 `(#:configure-flags
1114 (list "-DWANT_CYRUS=ON"
44ddf0f1 1115 "-DWANT_I18N=ON"
2b0f3293
TGR
1116 "-DWANT_PERL=ON"
1117 "-DWANT_PYTHON=ON")
1118 #:phases
500fc65b
TGR
1119 (modify-phases %standard-phases
1120 (add-after 'unpack 'unpack-googletest
2b0f3293 1121 ;; Copy the googletest sources to where the CMake build expects them.
500fc65b 1122 (lambda* (#:key inputs #:allow-other-keys)
2b0f3293
TGR
1123 (let ((source (assoc-ref inputs "googletest-source"))
1124 (target "third_party/googletest"))
1125 (mkdir-p target)
1126 (copy-recursively source target)
1127 #t))))))
a10052ac 1128 (native-inputs
44ddf0f1
TGR
1129 `(("boost" ,boost)
1130 ("gettext" ,gettext-minimal)
1131 ("googletest-source" ,(package-source googletest))
d7463e01 1132 ("pkg-config" ,pkg-config)))
a10052ac 1133 (inputs
8394619b
LC
1134 (list cyrus-sasl
1135 icu4c
1136 openssl
1137 perl
1138 python
1139 zlib))
204623bc 1140 (home-page "https://wiki.znc.in/ZNC")
a10052ac 1141 (synopsis "IRC network bouncer")
1a544482
TGR
1142 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
1143detach the client from the actual IRC server, and also from selected channels.
1144Multiple clients from different locations can connect to a single ZNC account
a10052ac 1145simultaneously and therefore appear under the same nickname on IRC.")
29e83e1c 1146 (license license:asl2.0)))
a10052ac 1147
246bc76a
RW
1148(define-public python-nbxmpp
1149 (package
1150 (name "python-nbxmpp")
59363483 1151 (version "3.1.0")
246bc76a
RW
1152 (source
1153 (origin
1154 (method url-fetch)
0bb718c1
RG
1155 (uri
1156 (pypi-uri "nbxmpp" version))
246bc76a 1157 (sha256
59363483 1158 (base32 "0c32090gr1fiy7hkn73dcj4ad9gfdpks8hivl1dl8bql01jsfdnj"))))
246bc76a 1159 (build-system python-build-system)
7c2f4604 1160 (native-inputs
e3196755 1161 (list `(,glib "bin")))
7c2f4604 1162 (inputs
8394619b
LC
1163 (list glib
1164 glib-networking
d6abbfda 1165 libsoup-minimal-2
8394619b
LC
1166 python-gssapi
1167 python-idna
1168 python-precis-i18n
1169 python-pygobject))
6010fde5
RG
1170 (synopsis "Non-blocking XMPP Module")
1171 (description "Python-nbxmpp is a Python library that provides a way for
1172Python applications to use the XMPP network. This library was initially a fork
1173of xmpppy.")
46cb089f 1174 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
29e83e1c 1175 (license license:gpl3+)))
246bc76a 1176
1f321f87
RW
1177(define-public gajim
1178 (package
1179 (name "gajim")
6ed5b496 1180 (version "1.4.6")
51e7e72b
RG
1181 (source
1182 (origin
1183 (method url-fetch)
1184 (uri
1185 (string-append "https://gajim.org/downloads/"
1186 (version-major+minor version)
a4f763cd 1187 "/gajim-" version ".tar.gz"))
51e7e72b 1188 (sha256
6ed5b496 1189 (base32 "0ks25hh7ksx0nfydixpixcli556w7qcylxp2z2xsx8mgzqv7c9la"))
c18803f2 1190 (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
e2d8b4a8 1191 (build-system python-build-system)
1f321f87 1192 (arguments
a4f763cd
RG
1193 `(#:imported-modules
1194 (,@%python-build-system-modules
1195 (guix build glib-or-gtk-build-system))
1196 #:modules
1197 ((guix build python-build-system)
1198 ((guix build glib-or-gtk-build-system)
1199 #:prefix glib-or-gtk:)
1200 (guix build utils))
1201 #:phases
1f321f87 1202 (modify-phases %standard-phases
29980098
RG
1203 (add-after 'unpack 'disable-failing-tests
1204 (lambda _
1205 ;; XXX Gajim builds fine on some (my) machines but fails elsewhere:
1206 ;; ModuleNotFoundError: No module named 'gajim.gui.emoji_data'
1207 ;; https://dev.gajim.org/gajim/gajim/-/issues/11041
1208 (delete-file "test/no_gui/test_styling.py")))
5cfec72f
CL
1209 (replace 'check
1210 (lambda _
a4f763cd
RG
1211 ;; Tests require a running X server.
1212 (system "Xvfb :1 +extension GLX &")
1213 (setenv "DISPLAY" ":1")
1214 ;; For missing '/etc/machine-id'.
1215 (setenv "DBUS_FATAL_WARNINGS" "0")
f3b64ad5 1216 (invoke "dbus-launch" "python" "./setup.py" "test")))
fb6c4a0c
RG
1217 ;; Loading gajim_remote require running session bus,
1218 ;; which in-turn requires running elogind for XDG_RUNTIME_DIR;
1219 ;; neither of which are possible inside build environment.
1220 (delete 'sanity-check)
a4f763cd
RG
1221 (add-after 'install 'glib-or-gtk-compile-schemas
1222 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
1223 (add-after 'install 'glib-or-gtk-wrap
1224 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
1225 (add-after 'install 'wrap-env
0f6b6cb9 1226 (lambda* (#:key outputs #:allow-other-keys)
e2d8b4a8
CL
1227 (let ((out (assoc-ref outputs "out")))
1228 (for-each
1229 (lambda (name)
1230 (let ((file (string-append out "/bin/" name))
a4f763cd 1231 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
e2d8b4a8
CL
1232 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
1233 (wrap-program file
a4f763cd
RG
1234 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
1235 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
d89e75ee 1236 '("gajim" "gajim-remote"))))))))
9e3644a8 1237 (native-search-paths
51e7e72b
RG
1238 (list
1239 (search-path-specification
1240 (variable "GAJIM_PLUGIN_PATH")
1241 (separator #f) ;single entry
1242 (files
1243 (list
1244 "share/gajim/plugins")))
1245 ;; Gajim needs to use the propagated inputs of its plugins.
1246 (search-path-specification
cdd5fb52 1247 (variable "GUIX_PYTHONPATH")
51e7e72b
RG
1248 (files
1249 (list
1250 (string-append
1251 "lib/python"
1252 ;; FIXME: Cannot use this expression as it would
1253 ;; introduce a circular dependency at the top level.
1254 ;; (version-major+minor (package-version python))
fb6c4a0c 1255 "3.9"
51e7e72b 1256 "/site-packages"))))))
1f321f87 1257 (native-inputs
a4f763cd
RG
1258 `(("gettext" ,gettext-minimal)
1259 ("glib:bin" ,glib "bin")
1260 ("gobject-introspection" ,gobject-introspection)
1261 ("gtk+:bin" ,gtk+ "bin")
1262 ("python-distutils-extra" ,python-distutils-extra)
1263 ("python-setuptools" ,python-setuptools)
ff337525 1264 ("xorg-server" ,xorg-server-for-tests)))
51a0887d 1265 (inputs
a4f763cd
RG
1266 `(("avahi" ,avahi)
1267 ("dbus" ,dbus)
1268 ("farstream" ,farstream)
1269 ("geoclue" ,geoclue)
1270 ("glib" ,glib)
1271 ("glib-networking" ,glib-networking)
a4f763cd
RG
1272 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
1273 ("gsound",gsound)
1274 ("gspell" ,gspell)
1275 ("gstreamer" ,gstreamer)
1276 ("gst-plugins-base" ,gst-plugins-base)
e2d8b4a8 1277 ("gtk+" ,gtk+)
d89e75ee 1278 ("gtksourceview" ,gtksourceview)
a4f763cd 1279 ("gupnp-igd" ,gupnp-igd)
ec90cdfd 1280 ("libappindicator" ,libappindicator)
2ef377ed 1281 ("libnice" ,libnice)
e5d726fe 1282 ("libsecret" ,libsecret)
a4f763cd
RG
1283 ("libsoup" ,libsoup)
1284 ("libxss" ,libxscrnsaver)
1285 ("network-manager" ,network-manager)
1286 ("python-css-parser" ,python-css-parser)
00a42ee7 1287 ("python-dbus" ,python-dbus)
d89e75ee 1288 ("python-gssapi" ,python-gssapi)
992a4965 1289 ("python-keyring" ,python-keyring)
e2d8b4a8 1290 ("python-nbxmpp" ,python-nbxmpp)
a4f763cd 1291 ("python-packaging" ,python-packaging)
e2d8b4a8 1292 ("python-pillow" ,python-pillow)
992a4965 1293 ("python-precis-i18n" ,python-precis-i18n)
e2d8b4a8
CL
1294 ("python-pycairo" ,python-pycairo)
1295 ("python-pygobject" ,python-pygobject)
a4f763cd
RG
1296 ("python-pyopenssl" ,python-pyopenssl)))
1297 (propagated-inputs
8394619b 1298 (list dconf))
7d8f997b
RG
1299 (synopsis "Fully-featured XMPP client")
1300 (description "Gajim aims to be an easy to use and fully-featured XMPP chat
1301client. It is extensible via plugins, supports end-to-end encryption (OMEMO
1302and OpenPGP) and available in 29 languages.")
1f321f87 1303 (home-page "https://gajim.org/")
d6465efa 1304 (license license:gpl3)))
1f321f87 1305
435d8a83
CL
1306(define-public gajim-omemo
1307 (package
1308 (name "gajim-omemo")
c4d5e605 1309 (version "2.8.15")
7c63d0e2
RG
1310 (source
1311 (origin
1312 (method url-fetch/zipbomb)
1313 (uri
1314 (string-append
c4d5e605 1315 "https://ftp.gajim.org/plugins/master/omemo/omemo_"
7c63d0e2
RG
1316 version ".zip"))
1317 (sha256
c4d5e605 1318 (base32 "1hf148ywr8knk5y3y5xvvwgw74ld1pcfjkp78g514ikcnzfycfcn"))))
435d8a83
CL
1319 (build-system trivial-build-system)
1320 (arguments
1321 `(#:modules ((guix build utils))
1322 #:builder
1323 (begin
1324 (use-modules (guix build utils))
1325 (let* ((out (assoc-ref %outputs "out"))
9ed1fa7d 1326 (share (in-vicinity out "share/gajim/plugins/omemo"))
435d8a83
CL
1327 (source (assoc-ref %build-inputs "source")))
1328 (mkdir-p share)
1329 (copy-recursively source share)
1330 #t))))
1331 (propagated-inputs
8394619b
LC
1332 (list python-axolotl python-axolotl-curve25519 python-cryptography
1333 python-qrcode))
7c63d0e2 1334 (synopsis "Gajim OMEMO plugin")
a9c72b9a
RG
1335 (description "Gajim-OMEMO is a plugin that adds support for the OMEMO
1336Encryption to Gajim. OMEMO is an XMPP Extension Protocol (XEP) for secure
1337multi-client end-to-end encryption.")
435d8a83 1338 (home-page
657b6072 1339 "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OmemoGajimPlugin")
435d8a83
CL
1340 (license license:gpl3+)))
1341
2cbda6de
RG
1342(define-public gajim-openpgp
1343 (package
1344 (name "gajim-openpgp")
aa0d30aa 1345 (version "1.4.9")
2cbda6de
RG
1346 (source
1347 (origin
1348 (method url-fetch/zipbomb)
1349 (uri
1350 (string-append
aa0d30aa 1351 "https://ftp.gajim.org/plugins/master/openpgp/openpgp_"
2cbda6de
RG
1352 version ".zip"))
1353 (sha256
aa0d30aa 1354 (base32 "1xwmf6ai1z7z9x6p1ysglxji73r7d27c0gzc8ykab29cjhjyv0dq"))))
2cbda6de
RG
1355 (build-system trivial-build-system)
1356 (arguments
1357 `(#:modules ((guix build utils))
1358 #:builder
1359 (begin
1360 (use-modules (guix build utils))
1361 (let* ((out (assoc-ref %outputs "out"))
b7f6c418 1362 (share (in-vicinity out "share/gajim/plugins/openpgp"))
2cbda6de
RG
1363 (source (assoc-ref %build-inputs "source")))
1364 (mkdir-p share)
1365 (copy-recursively source share)
1366 #t))))
1367 (propagated-inputs
8394619b 1368 (list python-cryptography python-gnupg python-gpg))
2cbda6de
RG
1369 (synopsis "Gajim OpenPGP plugin")
1370 (description "Gajim-OpenPGP is a plugin that adds support for the OpenPGP
1371Encryption to Gajim.")
1372 (home-page "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OpenPGPplugin")
435d8a83
CL
1373 (license license:gpl3+)))
1374
50cb3c8d 1375(define-public dino
a1da0fb2
AI
1376 (package
1377 (name "dino")
74afcc0f 1378 (version "0.3.0")
a1da0fb2
AI
1379 (source
1380 (origin
1381 (method url-fetch)
d829c348
RG
1382 (uri
1383 (string-append "https://github.com/dino/dino/releases/download/v"
1384 version "/dino-" version ".tar.gz"))
a1da0fb2 1385 (sha256
74afcc0f 1386 (base32 "07nw275xfamczzvzps8hsnpbhzvr4qc726fx92w8ncmdag7wlw1r"))))
a1da0fb2 1387 (build-system cmake-build-system)
d829c348 1388 (outputs '("out" "debug"))
a1da0fb2 1389 (arguments
aaf4694b 1390 (list #:configure-flags #~(list "-DBUILD_TESTS=true")
fe111f40
LMP
1391 #:parallel-build? #f ; not supported
1392 #:modules '((guix build cmake-build-system)
1393 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
1394 (guix build utils))
1395 #:imported-modules `(,@%gnu-build-system-modules
1396 (guix build cmake-build-system)
1397 (guix build glib-or-gtk-build-system))
1398 #:phases
1399 #~(modify-phases %standard-phases
1400 ;; For A/V support.
1401 (add-after 'install 'wrap
1402 (lambda* (#:key outputs #:allow-other-keys)
1403 (let* ((out (assoc-ref outputs "out"))
1404 (dino (string-append out "/bin/dino"))
1405 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
1406 (wrap-program dino
1407 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))))
1408 (add-after 'install 'glib-or-gtk-wrap
aaf4694b
LMP
1409 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
1410 (replace 'check
1411 (lambda* (#:key tests? #:allow-other-keys)
1412 (when tests?
1413 (invoke "./libdino-test")
1414 (invoke "./signal-protocol-vala-test")
1415 (invoke "./xmpp-vala-test")))))))
d829c348 1416 (native-inputs
fe111f40
LMP
1417 (list gettext-minimal
1418 `(,glib "bin")
1419 gobject-introspection
1420 `(,gtk+ "bin")
1421 pkg-config
1422 vala))
a1da0fb2 1423 (inputs
fe111f40
LMP
1424 (list atk
1425 cairo
1426 librsvg
1427 glib
1428 glib-networking
1429 gpgme
1430 gsettings-desktop-schemas
1431 gspell ;for spell-check support
1432 gstreamer ;for A/V support
1433 gst-plugins-base
1434 gst-plugins-good
1435 gtk+
1436 icu4c ;for emoji support
1437 libcanberra ;for sound-notification support
1438 libgcrypt
1439 libgee
1440 libnice
1441 libsignal-protocol-c
1442 libsoup-minimal-2
1443 libsrtp ;for calls support
1444 pango
1445 qrencode
1446 sqlite
1447 webrtc-audio-processing)) ;for A/V support
5988d531
RG
1448 (synopsis "Graphical Jabber/XMPP Client using GTK+/Vala")
1449 (description "Dino is a chat client for the desktop. It focuses on providing
1450a minimal yet reliable Jabber/XMPP experience and having encryption enabled by
1451default.")
a1da0fb2 1452 (home-page "https://dino.im")
a1da0fb2 1453 (license license:gpl3+)))
50cb3c8d 1454
9b73b76c
RG
1455(define-public kaidan
1456 (package
1457 (name "kaidan")
1458 (version "0.8.0")
1459 (source (origin
1460 (method url-fetch)
1461 (uri (string-append "mirror://kde/unstable/kaidan/" version
1462 "/kaidan-" version ".tar.xz"))
1463 (modules '((guix build utils)))
1464 (snippet
1465 #~(begin
1466 (delete-file-recursively "3rdparty")))
1467 (sha256
1468 (base32 "195iddv35gc3k83r226y17avsab2b9bszgd7z7ynbddsgbf75rx7"))))
1469 (build-system qt-build-system)
1470 (arguments
1471 (list #:configure-flags #~(list "-DBUILD_TESTS=true")))
1472 (native-inputs (list extra-cmake-modules
1473 perl
1474 pkg-config
1475 python-wrapper))
1476 (inputs (list kirigami
1477 knotifications
1478 qtbase-5
735d340a 1479 qtdeclarative-5
9b73b76c
RG
1480 qtgraphicaleffects
1481 qtlocation
1482 qtquickcontrols2
1ef04fb2 1483 qtsvg-5
5f228543 1484 qtmultimedia-5
9b73b76c
RG
1485 qtxmlpatterns
1486 qqc2-desktop-style
1487 qxmpp
1488 zxing-cpp))
1489 (home-page "https://www.kaidan.im/")
1490 (synopsis "Qt-based XMPP/Jabber Client")
1491 (description "Kaidan is a chat client. It uses the open communication
1492protocol XMPP (Jabber). The user interface makes use of Kirigami and QtQuick,
1493while the back-end of Kaidan is entirely written in C++ using Qt and the
1494Qt-based XMPP library QXmpp.")
1495 (license (list
1496 ;; Graphics
1497 license:cc-by-sa4.0
1498 ;; Files:
1499 ;; src/{StatusBar.cpp|StatusBar.h|singleapp/*|hsluv-c/*}
1500 ;; utils/generate-license.py
1501 license:expat
1502 ;; QrCodeVideoFrame
1503 license:asl2.0
1504 ;; Others
1505 license:gpl3+))))
1506
1ae27aac
RW
1507(define-public prosody
1508 (package
1509 (name "prosody")
914bcc6f 1510 (version "0.11.10")
1ae27aac
RW
1511 (source (origin
1512 (method url-fetch)
1513 (uri (string-append "https://prosody.im/downloads/source/"
1514 "prosody-" version ".tar.gz"))
1515 (sha256
1516 (base32
914bcc6f 1517 "1q84s9cq7cgzd295qxa2iy0r3vd3v3chbck62bdx3pd6skk19my6"))))
1ae27aac
RW
1518 (build-system gnu-build-system)
1519 (arguments
627e6d8c 1520 `(#:tests? #f ;tests require "busted"
7f39e131 1521 #:configure-flags (list "--no-example-certs")
1ae27aac
RW
1522 #:modules ((ice-9 match)
1523 (srfi srfi-1)
1524 (guix build gnu-build-system)
1525 (guix build utils))
1526 #:phases
1527 (modify-phases %standard-phases
1528 (add-after 'unpack 'fix-configure-script
1529 (lambda _
1530 ;; The configure script aborts when it encounters unexpected
1531 ;; arguments. Make it more tolerant.
1532 (substitute* "configure"
914bcc6f 1533 (("exit 1") ""))))
84bf2a2e
CL
1534 (add-after 'unpack 'fix-makefile
1535 (lambda _
627e6d8c 1536 (substitute* "GNUmakefile"
84bf2a2e
CL
1537 ;; prosodyctl needs to read the configuration file.
1538 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
1539 ;; prosodyctl needs a place to put auto-generated certificates.
914bcc6f 1540 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))))
1ae27aac
RW
1541 (add-after 'install 'wrap-programs
1542 (lambda* (#:key inputs outputs #:allow-other-keys)
1543 ;; Make sure all executables in "bin" find the required Lua
1544 ;; modules at runtime.
1545 (let* ((out (assoc-ref outputs "out"))
1546 (bin (string-append out "/bin/"))
1547 (deps (delete #f (map (match-lambda
1548 ((label . directory)
1549 (if (string-prefix? "lua" label)
1550 directory #f)))
1551 inputs)))
5b494618
CL
1552 (lua-path (string-join
1553 (map (lambda (path)
1554 (string-append
627e6d8c
CL
1555 path "/share/lua/5.2/?.lua;"
1556 path "/share/lua/5.2/?/?.lua"))
5b494618
CL
1557 (cons out deps))
1558 ";"))
1559 (lua-cpath (string-join
1560 (map (lambda (path)
1561 (string-append
627e6d8c
CL
1562 path "/lib/lua/5.2/?.so;"
1563 path "/lib/lua/5.2/?/?.so"))
5b494618
CL
1564 (cons out deps))
1565 ";"))
1566 (openssl (assoc-ref inputs "openssl"))
1567 (coreutils (assoc-ref inputs "coreutils"))
1568 (path (map (lambda (dir)
1569 (string-append dir "/bin"))
1570 (list openssl coreutils))))
1ae27aac
RW
1571 (for-each (lambda (file)
1572 (wrap-program file
5b494618
CL
1573 `("LUA_PATH" ";" = (,lua-path))
1574 `("LUA_CPATH" ";" = (,lua-cpath))
1575 `("PATH" ":" prefix ,path)))
914bcc6f 1576 (find-files bin ".*"))))))))
1ae27aac 1577 (inputs
8394619b
LC
1578 (list libidn
1579 openssl
1580 lua-5.2
1581 lua5.2-bitop
1582 lua5.2-expat
1583 lua5.2-socket
1584 lua5.2-filesystem
1585 lua5.2-sec))
1ae27aac
RW
1586 (home-page "https://prosody.im/")
1587 (synopsis "Jabber (XMPP) server")
1588 (description "Prosody is a modern XMPP communication server. It aims to
1589be easy to set up and configure, and efficient with system resources.
1590Additionally, for developers it aims to be easy to extend and give a flexible
1591system on which to rapidly develop added functionality, or prototype new
1592protocols.")
29e83e1c 1593 (license license:x11)))
1ae27aac 1594
e0aa5b5b
CL
1595(define-public prosody-http-upload
1596 (let ((changeset "765735bb590b")
1597 (revision "1"))
1598 (package
1599 (name "prosody-http-upload")
1600 (version (string-append "0-" revision "." (string-take changeset 7)))
1601 (source (origin
1602 (method hg-fetch)
1603 (uri (hg-reference
1604 (url "https://hg.prosody.im/prosody-modules/")
1605 (changeset changeset)))
1606 (file-name (string-append name "-" version "-checkout"))
1607 (sha256
1608 (base32
1609 "142wrcism70nf8ffahhd961cqg2pi1h7ic8adfs3zwh0j3pnf41f"))))
1610 (build-system trivial-build-system)
1611 (arguments
1612 '(#:modules ((guix build utils))
1613 #:builder
1614 (begin
1615 (use-modules (guix build utils))
1616 (let ((out (assoc-ref %outputs "out"))
1617 (source (assoc-ref %build-inputs "source")))
1618 (with-directory-excursion (in-vicinity source "mod_http_upload")
1619 (install-file "mod_http_upload.lua" out))
1620 #t))))
1621 (home-page "https://modules.prosody.im/mod_http_upload.html")
1622 (synopsis "XEP-0363: Allow clients to upload files over HTTP")
1623 (description "This module implements XEP-0363: it allows clients to
1624upload files over HTTP.")
1625 (license (package-license prosody)))))
1626
be1ce9fd
CL
1627(define-public prosody-smacks
1628 (let ((changeset "67f1d1f22625")
1629 (revision "1"))
1630 (package
1631 (name "prosody-smacks")
1632 (version (string-append "0-" revision "." (string-take changeset 7)))
1633 (source (origin
1634 (method hg-fetch)
1635 (uri (hg-reference
1636 (url "https://hg.prosody.im/prosody-modules/")
1637 (changeset changeset)))
1638 (file-name (string-append name "-" version "-checkout"))
1639 (sha256
1640 (base32
1641 "020ngpax30fgarah98yvlj0ni8rcdwq60if03a9hqdw8mic0nxxs"))))
1642 (build-system trivial-build-system)
1643 (arguments
1644 '(#:modules ((guix build utils))
1645 #:builder
1646 (begin
1647 (use-modules (guix build utils))
1648 (let ((out (assoc-ref %outputs "out"))
1649 (source (assoc-ref %build-inputs "source")))
1650 (with-directory-excursion (in-vicinity source "mod_smacks")
1651 (install-file "mod_smacks.lua" out))
1652 #t))))
1653 (home-page "https://modules.prosody.im/mod_smacks.html")
1654 (synopsis "XEP-0198: Reliability and fast reconnects for XMPP")
1655 (description "This module implements XEP-0198: when supported by both
1656the client and server, it can allow clients to resume a disconnected session,
1657and prevent message loss.")
1658 (license (package-license prosody)))))
1659
901c1aae 1660(define-public libtoxcore
aaf0e47f
RW
1661 (let ((revision "2")
1662 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
901c1aae 1663 (package
1664 (name "libtoxcore")
1665 (version (string-append "0.0.0" "-"
1666 revision "."(string-take commit 7)))
1667 (source (origin
1668 (method git-fetch)
1669 (uri (git-reference
b0e7b699 1670 (url "https://github.com/irungentoo/toxcore")
901c1aae 1671 (commit commit)))
1672 (file-name (string-append name "-" version "-checkout"))
1673 (sha256
1674 (base32
aaf0e47f 1675 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
901c1aae 1676 (build-system gnu-build-system)
aaf0e47f 1677 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
901c1aae 1678 (native-inputs
8394619b 1679 (list autoconf automake libtool check pkg-config))
901c1aae 1680 (inputs
8394619b 1681 (list libsodium opus libvpx))
901c1aae 1682 (synopsis "Library for the Tox encrypted messenger protocol")
1683 (description
1684 "C library implementation of the Tox encrypted messenger protocol.")
29e83e1c 1685 (license license:gpl3+)
901c1aae 1686 (home-page "https://tox.chat"))))
1687
0ed5554a 1688;; Some tox clients move to c-toxcore, which seems to be where all the
1689;; recent development happens. It is run by the same developers as toxcore,
1690;; forked into a group namespace.
1691(define-public c-toxcore
1692 (package
1693 (name "c-toxcore")
1a2e3d94 1694 (version "0.2.12")
0ed5554a 1695 (source
1696 (origin
60186836
RW
1697 (method git-fetch)
1698 (uri (git-reference
b0e7b699 1699 (url "https://github.com/TokTok/c-toxcore")
60186836
RW
1700 (commit (string-append "v" version))))
1701 (file-name (git-file-name name version))
0ed5554a 1702 (sha256
1703 (base32
1a2e3d94 1704 "0a6sqpm00d2rn0nviqfz4gh9ck1wzci6rxgmqmcyryl5ca19ffvp"))))
230bd4bb
RH
1705 (arguments
1706 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
1707 ; for now.
9840b8fa 1708 (build-system cmake-build-system)
0ed5554a 1709 (native-inputs
8394619b 1710 (list pkg-config))
9840b8fa 1711 (propagated-inputs
8394619b 1712 (list libsodium opus libvpx))
9840b8fa 1713 (home-page "https://tox.chat")
0ed5554a 1714 (synopsis "Library for the Tox encrypted messenger protocol")
1715 (description
9840b8fa
RW
1716 "Official fork of the C library implementation of the Tox encrypted
1717messenger protocol.")
1718 (license license:gpl3+)))
0ed5554a 1719
3b38d78e
EE
1720(define-public utox
1721 (package
1722 (name "utox")
f936f078 1723 (version "0.18.1")
3b38d78e
EE
1724 (source
1725 (origin
c11df2e8
RH
1726 (method git-fetch)
1727 (uri (git-reference
b0e7b699 1728 (url "https://github.com/uTox/uTox")
48c97c27 1729 (commit (string-append "v" version))
c11df2e8
RH
1730 (recursive? #t))) ;; Needed for 'minini' git submodule.
1731 (file-name (string-append name "-" version "-checkout"))
3b38d78e
EE
1732 (sha256
1733 (base32
f936f078 1734 "01rvlf94d4rkrygnnjak3cg16hrrqyi1rn9nx65y17qk2nbyh68g"))))
c413c6ad 1735 (build-system cmake-build-system)
3b38d78e 1736 (arguments
c11df2e8
RH
1737 `(#:configure-flags '("-DENABLE_TESTS=on")
1738 #:phases
3b38d78e 1739 (modify-phases %standard-phases
907ab9e8
RH
1740 (add-before 'build 'patch-absolute-filename-libgtk-3
1741 (lambda* (#:key inputs outputs #:allow-other-keys)
c11df2e8 1742 (substitute* "../source/src/xlib/gtk.c"
907ab9e8 1743 (("libgtk-3.so")
377e9453 1744 (search-input-file inputs "/lib/libgtk-3.so")))))
907ab9e8
RH
1745 (add-after 'install 'wrap-program
1746 (lambda* (#:key inputs outputs #:allow-other-keys)
1747 (wrap-program (string-append (assoc-ref outputs "out")
1748 "/bin/utox")
1749 ;; For GtkFileChooserDialog.
f36a175a 1750 `("GSETTINGS_SCHEMA_DIR" =
1751 (,(string-append (assoc-ref inputs "gtk+")
1752 "/share/glib-2.0/schemas")))))))))
3b38d78e
EE
1753 (inputs
1754 `(("dbus" ,dbus)
1755 ("filteraudio" ,filteraudio)
1756 ("fontconfig" ,fontconfig)
1757 ("freetype" ,freetype)
c413c6ad 1758 ("c-toxcore" ,c-toxcore)
907ab9e8 1759 ("gtk+" ,gtk+)
3b38d78e
EE
1760 ("libvpx" ,libvpx)
1761 ("libx11" ,libx11)
1762 ("libxext" ,libxext)
1763 ("libxrender" ,libxrender)
1764 ("openal" ,openal)
1765 ("v4l-utils" ,v4l-utils)))
1e0ea1d8 1766 (native-inputs
8394619b 1767 (list check pkg-config))
3b38d78e 1768 (synopsis "Lightweight Tox client")
c27b31e8 1769 (description
4f7698ba 1770 "uTox is a lightweight Tox client. Tox is a distributed and secure
3b38d78e 1771instant messenger with audio and video chat capabilities.")
4f7698ba 1772 (home-page "https://github.com/uTox/uTox")
29e83e1c 1773 (license license:gpl3)))
c413c6ad 1774
bc1c995e
AP
1775(define-public qtox
1776 (package
1777 (name "qtox")
b8edfdb0 1778 (version "1.17.6")
2eb67681 1779 (source (origin
884714c0 1780 (method url-fetch)
e88745a6
EF
1781 (uri (string-append "https://github.com/qTox/qTox/releases"
1782 "/download/v" version
1783 "/v" version ".tar.gz"))
2eb67681
RW
1784 (sha256
1785 (base32
b8edfdb0 1786 "1ml8z1xpp3qhip4vkr375jf7y5kc18g0apm91n5am6ricx37c01r"))
2eb67681
RW
1787 (file-name (string-append name "-" version ".tar.gz"))))
1788 (build-system cmake-build-system)
1789 (arguments
09431303
TGR
1790 (list #:phases
1791 #~(modify-phases %standard-phases
1792 (add-after 'unpack 'fix-reproducibility-issues
1793 (lambda _
1794 (substitute* "src/main.cpp"
1795 (("__DATE__") "\"\"")
1796 (("__TIME__") "\"\"")
1797 (("TIMESTAMP") "\"\""))))
1798 (add-after 'unpack 'disable-network-tests
1799 (lambda _
1800 ;; These tests require network access.
1801 (substitute* "cmake/Testing.cmake"
1802 (("auto_test\\(core core\\)") "# auto_test(core core)")
1803 (("auto_test\\(net bsu\\)") "# auto_test(net bsu)"))))
1804 ;; Ensure that icons are found at runtime.
1805 (add-after 'install 'wrap-executable
1806 (lambda* (#:key inputs outputs #:allow-other-keys)
1807 (let ((out (assoc-ref outputs "out")))
1808 (wrap-program (string-append out "/bin/qtox")
1809 `("QT_PLUGIN_PATH" prefix
1810 ,(list (search-input-directory
1811 inputs "lib/qt5/plugins/"))))))))))
1812 (native-inputs
1813 (list pkg-config qttools))
bc1c995e 1814 (inputs
8394619b
LC
1815 (list ffmpeg
1816 filteraudio
1817 glib
1818 gtk+-2
1819 libsodium
1820 c-toxcore
1821 libvpx
1822 libxscrnsaver
1823 libx11
1824 libexif
1825 sqlite
1826 openal
1827 qrencode
1828 qtbase-5
1ef04fb2 1829 qtsvg-5
8394619b 1830 sqlcipher))
bc1c995e
AP
1831 (home-page "https://qtox.github.io/")
1832 (synopsis "Tox chat client using Qt")
1833 (description "qTox is a Tox client that follows the Tox design
1834guidelines. It provides an easy to use application that allows you to
1835connect with friends and family without anyone else listening in.")
1836 (license license:gpl3+)))
3b38d78e 1837
c788c5fe
JD
1838(define-public ytalk
1839 (package
1840 (name "ytalk")
1841 (version "3.3.0")
1842 (source
1843 (origin
1844 (method url-fetch)
1845 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1846 version ".tar.gz"))
1847 (sha256
1848 (base32
1849 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1850 (build-system gnu-build-system)
1851 (inputs
8394619b 1852 (list ncurses))
898dc494 1853 (home-page "https://ytalk.ourproject.org")
c788c5fe
JD
1854 (synopsis "Multi-user chat program")
1855 (description "Ytalk is a replacement for the BSD talk program. Its main
1856advantage is the ability to communicate with any arbitrary number of users at
1857once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1858with several different talk daemons at the same time.")
1859 (license license:gpl2+)))
1860
3973e137 1861(define-public gloox
1862 (package
1863 (name "gloox")
35199959 1864 (version "1.0.24")
3973e137 1865 (source
1866 (origin
1867 (method url-fetch)
1868 (uri (string-append "https://camaya.net/download/gloox-"
1869 version ".tar.bz2"))
1870 (sha256
35199959 1871 (base32 "1jgrd07qr9jvbb5hcmhrqz4w4lvwc51m30jls1fgxf1f5az6455f"))))
3973e137 1872 (build-system gnu-build-system)
1873 (inputs
8394619b 1874 (list libidn gnutls zlib))
3973e137 1875 (native-inputs
8394619b 1876 (list pkg-config))
3973e137 1877 (synopsis "Portable high-level Jabber/XMPP library for C++")
1878 (description
1879 "gloox is a full-featured Jabber/XMPP client library,
1880written in ANSI C++. It makes writing spec-compliant clients easy
1881and allows for hassle-free integration of Jabber/XMPP functionality
1882into existing applications.")
1883 (home-page "https://camaya.net/gloox")
1884 (license license:gpl3)))
c788c5fe 1885
ebfc2ecc 1886(define-public perl-net-psyc
1887 (package
1888 (name "perl-net-psyc")
3fa013af 1889 (version "1.3")
ebfc2ecc 1890 (source
1891 (origin
1892 (method url-fetch)
85b9ae93 1893 (uri (string-append "https://perl.psyc.eu/"
ebfc2ecc 1894 "perlpsyc-" version ".zip"))
1895 (file-name (string-append name "-" version ".zip"))
1896 (sha256
1897 (base32
3fa013af 1898 "0vsjclglkwgbyd9m5ad642fyysxw2x725nhq4r2m9pvqaq6s5yf2"))))
ebfc2ecc 1899 (build-system perl-build-system)
3fa013af 1900 (native-inputs
8394619b 1901 (list unzip))
ebfc2ecc 1902 (inputs
8394619b 1903 (list perl-curses perl-io-socket-ssl))
ebfc2ecc 1904 (arguments
1905 `(#:phases
1906 (modify-phases %standard-phases
1907 (delete 'configure) ; No configure script
1908 ;; There is a Makefile, but it does not install everything
1909 ;; (leaves out psycion) and says
1910 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1911 (replace 'build
3fa013af 1912 (lambda _ (invoke "make" "manuals")))
ebfc2ecc 1913 (replace 'install
1914 (lambda* (#:key outputs #:allow-other-keys)
1915 (let* ((out (assoc-ref outputs "out"))
1916 (doc (string-append out "/share/doc/perl-net-psyc"))
1917 (man1 (string-append out "/share/man/man1"))
1918 (man3 (string-append out "/share/man/man3"))
1919 (bin (string-append out "/bin"))
1920 (libpsyc (string-append out "/lib/psyc/ion"))
1921 (libperl (string-append out "/lib/perl5/site_perl/"
1922 ,(package-version perl))))
1923
1924 (copy-recursively "lib/perl5" libperl)
1925 (copy-recursively "lib/psycion" libpsyc)
1926 (copy-recursively "bin" bin)
1927 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1928 (copy-recursively "contrib" (string-append doc "/contrib"))
1929 (copy-recursively "hooks" (string-append doc "/hooks"))
1930 (copy-recursively "sdj" (string-append doc "/sdj"))
1931 (install-file "README.txt" doc)
1932 (install-file "TODO.txt" doc)
1933 (copy-recursively "share/man/man1" man1)
1934 (copy-recursively "share/man/man3" man3)
1935 #t)))
1936 (add-after 'install 'wrap-programs
1937 (lambda* (#:key outputs #:allow-other-keys)
1938 ;; Make sure all executables in "bin" find the Perl modules
1939 ;; provided by this package at runtime.
1940 (let* ((out (assoc-ref outputs "out"))
1941 (bin (string-append out "/bin/"))
1942 (path (getenv "PERL5LIB")))
1943 (for-each (lambda (file)
1944 (wrap-program file
1945 `("PERL5LIB" ":" prefix (,path))))
1946 (find-files bin "\\.*$"))
1947 #t))))))
1948 (description
1949 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1950Gtk2 event loops. This package includes 12 applications and additional scripts:
85b9ae93 1951psycion (a @uref{https://about.psyc.eu,PSYC} chat client), remotor (a control console
ebfc2ecc 1952for @uref{https://torproject.org,tor} router) and many more.")
1953 (synopsis "Perl implementation of PSYC protocol")
85b9ae93 1954 (home-page "https://perl.psyc.eu")
ebfc2ecc 1955 (license (list license:gpl2
2f3108ad 1956 license:perl-license
ebfc2ecc 1957 ;; contrib/irssi-psyc.pl:
1958 license:public-domain
1959 ;; bin/psycplay states AGPL with no version:
1960 license:agpl3+))))
1961
1962(define-public libpsyc
1963 (package
1964 (name "libpsyc")
1965 (version "20160913")
1966 (source (origin
1967 (method url-fetch)
1968 (uri (string-append "http://www.psyced.org/files/"
1969 name "-" version ".tar.xz"))
1970 (sha256
1971 (base32
1972 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1973 (build-system gnu-build-system)
1974 (native-inputs
8394619b 1975 (list perl netcat procps))
ebfc2ecc 1976 (arguments
1977 `(#:make-flags
1978 (list "CC=gcc"
1979 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1980 #:phases
1981 (modify-phases %standard-phases
1982 ;; The rust bindings are the only ones in use, the lpc bindings
1983 ;; are in psyclpc. The other bindings are not used by anything,
1984 ;; the chances are high that the bindings do not even work,
1985 ;; therefore we do not include them.
1986 ;; TODO: Get a cargo build system in Guix.
1987 (delete 'configure)))) ; no configure script
85b9ae93 1988 (home-page "https://about.psyc.eu/libpsyc")
ebfc2ecc 1989 (description
1990 "@code{libpsyc} is a PSYC library in C which implements
1991core aspects of PSYC, useful for all kinds of clients and servers
1992including psyced.")
1993 (synopsis "PSYC library in C")
1994 (license license:agpl3+)))
1995
fdfb4b96 1996(define-public loudmouth
1997 (package
1998 (name "loudmouth")
866e2b12 1999 (version "1.5.4")
fdfb4b96 2000 (source
2001 (origin
2002 (method url-fetch)
2003 (uri (string-append "https://mcabber.com/files/loudmouth/"
2004 name "-" version ".tar.bz2"))
2005 (sha256
2006 (base32
866e2b12 2007 "03adv5xc84l9brcx0dpyqyffmsclans8yfrpnd357k6x3wfckjri"))))
fdfb4b96 2008 (build-system gnu-build-system)
c00b5be7 2009 (outputs '("out" "doc"))
675086ad
RG
2010 (arguments
2011 `(#:configure-flags
2012 (list
c00b5be7
RG
2013 "--disable-static"
2014 "--enable-gtk-doc"
2015 (string-append "--with-html-dir="
2016 (assoc-ref %outputs "doc")
2017 "/share/gtk-doc/html"))
675086ad
RG
2018 #:make-flags
2019 (list
2020 "CFLAGS=-Wno-error=all")))
fdfb4b96 2021 (inputs
2022 `(("glib" ,glib)
2023 ("gnutls" ,gnutls)
fcd984d7 2024 ("krb5" ,mit-krb5)
fdfb4b96 2025 ("libidn" ,libidn)))
2026 (native-inputs
8394619b
LC
2027 (list pkg-config check
2028 `(,glib "bin") ; gtester
2029 gtk-doc))
fdfb4b96 2030 (home-page "https://mcabber.com/")
2031 (description
2032 "Loudmouth is a lightweight and easy-to-use C library for programming
2033with the XMPP (formerly known as Jabber) protocol. It is designed to be
2034easy to get started with and yet extensible to let you do anything the XMPP
2035protocol allows.")
2036 (synopsis "Asynchronous XMPP library")
2037 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
2038 (license license:lgpl2.0+)))
2039
cd4a232d 2040(define-public mcabber
2041 (package
2042 (name "mcabber")
5e69fcf4 2043 (version "1.1.2")
cd4a232d 2044 (source
2045 (origin
2046 (method url-fetch)
2047 (uri (string-append "https://mcabber.com/files/"
2048 name "-" version ".tar.bz2"))
2049 (sha256
5e69fcf4 2050 (base32 "0q1i5acyghsmzas88qswvki8kkk2nfpr8zapgnxbcd3lwcxl38f4"))))
cd4a232d 2051 (build-system gnu-build-system)
2052 (arguments
a3c675ee
RG
2053 `(#:configure-flags
2054 (list
2055 "--disable-static"
2056 "--enable-otr"
703005e8 2057 "--enable-enchant"
a3c675ee 2058 "--enable-aspell")))
cd4a232d 2059 (inputs
8394619b
LC
2060 (list gpgme
2061 libotr
2062 aspell
2063 enchant-1.6
2064 libidn
2065 glib
2066 ncurses
2067 loudmouth))
cd4a232d 2068 (native-inputs
7464c333
RG
2069 `(("perl" ,perl)
2070 ("pkg-config" ,pkg-config)
2071 ("python" ,python-wrapper)))
cd4a232d 2072 (home-page "https://mcabber.com")
2073 (description
2074 "Mcabber is a small XMPP (Jabber) console client, which includes features
2075such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
2076command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
2077support, and more.")
2078 (synopsis "Small XMPP console client")
2079 (license license:gpl2+)))
2080
c631233f
CL
2081(define-public freetalk
2082 (package
2083 (name "freetalk")
d62b180f 2084 (version "4.2")
c631233f
CL
2085 (source (origin
2086 (method url-fetch)
2087 (uri (string-append "mirror://gnu/freetalk/freetalk-"
2088 version ".tar.gz"))
2089 (sha256
2090 (base32
d62b180f 2091 "105mw7pg2mcp85r82cs4rv77nwvbw8025047364jzbq6lwllynxv"))))
c631233f
CL
2092 (build-system gnu-build-system)
2093 (arguments
f8b7320a
TGR
2094 (list #:phases
2095 #~(modify-phases %standard-phases
2096 (add-after 'install 'wrap-program
2097 (lambda* (#:key inputs outputs #:allow-other-keys)
2098 (let ((out (assoc-ref outputs "out")))
2099 (wrap-program (string-append out "/bin/freetalk")
2100 `("PATH" ":" suffix
2101 ,(map (lambda (command)
2102 (dirname
2103 (search-input-file
2104 inputs (string-append "bin/" command))))
2105 ;; This list is not exhaustive: we assume that,
2106 ;; e.g., cat is packaged with other coreutils.
2107 (list "bash" ; src/{commands,util}.c et al
2108 "cat" ; extensions/first-time-run.sh
2109 "less")))))))))) ; extensions/history.scm.
c631233f 2110 (native-inputs
8394619b 2111 (list autoconf automake pkg-config texinfo))
c631233f 2112 (inputs
8394619b
LC
2113 (list bash
2114 glib
d62b180f 2115 guile-3.0
8394619b
LC
2116 less
2117 loudmouth
2118 readline))
c631233f
CL
2119 (synopsis "Extensible console-based Jabber client")
2120 (description
2121 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
2122the Readline library to handle input, so it features convenient navigation of
2123text as well as tab-completion of buddy names, commands and English words. It
2124is also scriptable and extensible via Guile.")
6fd52309 2125 (home-page "https://www.gnu.org/software/freetalk/")
c631233f
CL
2126 (license license:gpl3+)))
2127
781d3b07
MM
2128(define-public libstrophe
2129 (package
2130 (name "libstrophe")
03524641 2131 (version "0.12.0")
3368917c
TGR
2132 (source
2133 (origin
2134 (method git-fetch)
2135 (uri (git-reference
b0e7b699 2136 (url "https://github.com/strophe/libstrophe")
3368917c
TGR
2137 (commit version)))
2138 (file-name (git-file-name name version))
2139 (sha256
03524641 2140 (base32 "1apply301lxyjax2677bd5mc0a3233nm5qb7fiqpawq2n7vh17v0"))))
781d3b07 2141 (build-system gnu-build-system)
1be08b1e 2142 (arguments
a5f20beb 2143 (list #:configure-flags '(list "--disable-static")
1be08b1e 2144 #:phases
a5f20beb 2145 #~(modify-phases %standard-phases
1be08b1e
RG
2146 (add-after 'unpack 'patch-make
2147 (lambda _
2148 (substitute* "Makefile.am"
2149 (("'\\^xmpp_'") "'.'"))
a5f20beb
JH
2150 #t))
2151 (add-after 'install-licence-files 'install-extra-licence-files
2152 (lambda _
2153 (let ((license-directory (string-append #$output
2154 "/share/doc/"
2155 #$name "-" #$version "/")))
2156 (install-file "MIT-LICENSE.txt" license-directory)))))))
781d3b07 2157 (inputs
8394619b 2158 (list expat openssl))
781d3b07 2159 (native-inputs
8394619b 2160 (list autoconf automake libtool pkg-config))
781d3b07
MM
2161 (synopsis "C library for writing XMPP clients")
2162 (description "Libstrophe is a minimal XMPP library written in C. It has
2163almost no external dependencies, only an XML parsing library (expat or libxml
2164are both supported).")
a5f20beb 2165 (home-page "https://strophe.im/libstrophe/")
75d9d8af 2166 ;; Dual-licensed.
781d3b07
MM
2167 (license (list license:gpl3+ license:x11))))
2168
a829c650 2169(define-public profanity
71adb422
TLC
2170 (package
2171 (name "profanity")
099f74be 2172 (version "0.12.1")
d257697d
RG
2173 (source
2174 (origin
2175 (method url-fetch)
2176 (uri
099f74be 2177 (string-append "https://profanity-im.github.io/tarballs/profanity-"
d257697d
RG
2178 version ".tar.gz"))
2179 (sha256
2180 (base32
099f74be 2181 "0vihmlzxr6n3y6v0vdzzxh5p1i09p0hx6sd1b2pnpcgkgcg4hi73"))))
a3f6f27b 2182 (build-system glib-or-gtk-build-system)
6bb93af8 2183 (arguments
d257697d
RG
2184 `(#:configure-flags
2185 (list
22ba2bb8 2186 "--disable-static"
d257697d 2187 "--enable-notifications"
d0e85b80 2188 "--enable-python-plugins"
d257697d 2189 "--enable-c-plugins"
d0e85b80 2190 "--enable-plugins"
d257697d
RG
2191 "--enable-otr"
2192 "--enable-pgp"
2193 "--enable-omemo"
d0e85b80 2194 "--enable-icons-and-clipboard")))
d257697d 2195 (native-inputs
8394619b
LC
2196 (list autoconf
2197 autoconf-archive
2198 automake
2199 cmocka
2200 libtool
2201 pkg-config))
71adb422 2202 (inputs
35f4d586
JH
2203 (list curl
2204 expat
2205 glib
2206 gpgme
2207 gtk+-2
2208 libgcrypt
2209 libnotify
2210 libotr
2211 libsignal-protocol-c
2212 libstrophe
2213 ncurses
2214 openssl
2215 python-wrapper
2216 readline
2217 sqlite))
71adb422
TLC
2218 (synopsis "Console-based XMPP client")
2219 (description "Profanity is a console based XMPP client written in C
a829c650 2220using ncurses and libmesode, inspired by Irssi.")
3dfd73f0 2221 (home-page "https://profanity-im.github.io")
13bc438a 2222 (properties `((release-monitoring-url . ,home-page)))
71adb422 2223 (license license:gpl3+)))
a829c650 2224
6fdbd86d
AI
2225(define-public libircclient
2226 (package
2227 (name "libircclient")
b619b7f6 2228 (version "1.10")
6fdbd86d
AI
2229 (source
2230 (origin
2231 (method url-fetch)
2232 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
2233 version "/libircclient-" version ".tar.gz"))
2234 (sha256
2235 (base32
b619b7f6 2236 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
6fdbd86d
AI
2237 (build-system gnu-build-system)
2238 (inputs
8394619b 2239 (list openssl))
6fdbd86d
AI
2240 (arguments
2241 `(#:configure-flags
2242 (list (string-append "--libdir="
2243 (assoc-ref %outputs "out") "/lib")
2244 "--enable-shared"
2245 "--enable-ipv6"
2246 "--enable-openssl")
b619b7f6 2247 #:tests? #f)) ; no test suite
6fdbd86d
AI
2248 (home-page "https://www.ulduzsoft.com/libircclient/")
2249 (synopsis "Library implementing the client IRC protocol")
2250 (description "Libircclient is a library which implements the client IRC
2251protocol. It is designed to be small, fast, portable and compatible with the
2252RFC standards as well as non-standard but popular features. It can be used for
2253building the IRC clients and bots.")
2254 (license license:lgpl3+)))
2255
61f81618
TF
2256(define-public toxic
2257 (package
2258 (name "toxic")
c2ea080e 2259 (version "0.8.4")
0c273c50
TGR
2260 (source
2261 (origin
2262 (method git-fetch)
2263 (uri (git-reference
b0e7b699 2264 (url "https://github.com/JFreegman/toxic")
0c273c50
TGR
2265 (commit (string-append "v" version))))
2266 (sha256
c2ea080e 2267 (base32 "0p1cmj1kyp506y5xm04mhlznhf5wcylvgsn6b307ms91vjqs3fg2"))
0c273c50 2268 (file-name (git-file-name name version))))
61f81618
TF
2269 (build-system gnu-build-system)
2270 (arguments
1987f95f 2271 `(#:tests? #f ; no tests
61f81618
TF
2272 #:make-flags
2273 (list
2274 "CC=gcc"
2275 (string-append "PREFIX="
2276 (assoc-ref %outputs "out")))
2277 #:phases
2278 (modify-phases %standard-phases
2279 (delete 'configure)
2280 (add-before 'build 'enable-python-scripting
2281 (lambda _
93600aae
MB
2282 ;; XXX: For compatibility with Python 3.8, adjust python3-config
2283 ;; invokation to include --embed; see
2284 ;; <https://github.com/JFreegman/toxic/issues/533>.
2285 (substitute* "cfg/checks/python.mk"
2286 (("python3-config --ldflags")
2287 "python3-config --ldflags --embed"))
61f81618
TF
2288 (setenv "ENABLE_PYTHON" "1")
2289 #t)))))
2290 (inputs
8394619b
LC
2291 (list c-toxcore
2292 curl
2293 freealut
2294 gdk-pixbuf ; for libnotify.pc
2295 libconfig
2296 libnotify
2297 libpng
2298 libvpx
2299 libx11
2300 ncurses
2301 openal
2302 python
2303 qrencode))
61f81618 2304 (native-inputs
8394619b 2305 (list pkg-config))
61f81618
TF
2306 (home-page "https://github.com/JFreegman/toxic")
2307 (synopsis "Tox chat client using ncurses")
2308 (description "Toxic is a console-based instant messaging client, using
2309c-toxcore and ncurses. It provides audio calls, sound and desktop
2310notifications, and Python scripting support.")
2311 (license license:gpl3+)))
2312
9a3da985
AI
2313(define-public libqmatrixclient
2314 (package
2315 (name "libqmatrixclient")
e9c6aed1 2316 (version "0.5.3.2")
9a3da985
AI
2317 (source
2318 (origin
c6b60d30
EF
2319 (method git-fetch)
2320 (uri (git-reference
e9c6aed1 2321 (url "https://github.com/quotient-im/libQuotient")
0395c533 2322 (commit version)))
c6b60d30 2323 (file-name (git-file-name name version))
9a3da985 2324 (sha256
e9c6aed1 2325 (base32 "0gkwr3yw6k2m0j8cc085b5p2q788rf5nhp1p5hc5d55pc7mci2qs"))))
9a3da985
AI
2326 (build-system cmake-build-system)
2327 (inputs
5f228543 2328 (list qtbase-5 qtmultimedia-5))
9a3da985
AI
2329 (arguments
2330 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
0395c533 2331 #:tests? #f)) ; no tests
9a3da985
AI
2332 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
2333 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
2334 (description "libqmatrixclient is a Qt5 library to write clients for the
2335Matrix instant messaging protocol. Quaternion is the reference client
2336implementation. Quaternion and libqmatrixclient together form the
2337QMatrixClient project.")
2338 (license license:lgpl2.1+)))
e81c952a 2339
57163f91 2340(define-public mtxclient
2341 (package
2342 (name "mtxclient")
2619a493 2343 (version "0.7.0")
57163f91 2344 (source
2345 (origin
2346 (method git-fetch)
2347 (uri (git-reference
b0e7b699 2348 (url "https://github.com/Nheko-Reborn/mtxclient")
57163f91 2349 (commit (string-append "v" version))))
2350 (file-name (git-file-name name version))
2351 (sha256
2619a493 2352 (base32 "0kgz9i3xgyk1a82sv48a1m8gdxg0cl5pgd5imgwy519vvjlkwv48"))))
57163f91 2353 (arguments
2354 `(#:configure-flags
2355 (list
2356 ;; Disable example binaries (not installed)
2357 "-DBUILD_LIB_EXAMPLES=OFF")
2358 #:phases
2359 (modify-phases %standard-phases
2360 (add-before 'configure 'disable-network-tests
2361 (lambda _
2362 (substitute* "CMakeLists.txt"
f36a175a 2363 (("add_test\\((BasicConnectivity|ClientAPI|Devices|MediaAPI|Encryption|Pushrules)")
f1aba776 2364 "# add_test")))))))
57163f91 2365 (build-system cmake-build-system)
2366 (inputs
8394619b 2367 (list boost
f36a175a 2368 coeurl
2369 curl
8394619b 2370 json-modern-cxx
f36a175a 2371 libevent
8394619b
LC
2372 libolm
2373 libsodium
2374 openssl
2375 spdlog
2376 zlib))
57163f91 2377 (native-inputs
8394619b 2378 (list googletest pkg-config))
57163f91 2379 (home-page "https://github.com/Nheko-Reborn/mtxclient")
2380 (synopsis "Client API library for the Matrix protocol")
2381 (description "@code{mtxclient} is a C++ library that implements client API
2382for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
2383 (license license:expat)))
2384
b40f4052 2385(define-public nheko
2386 (package
2387 (name "nheko")
b2496171 2388 (version "0.9.3")
b40f4052 2389 (source
2390 (origin
2391 (method git-fetch)
2392 (uri (git-reference
b0e7b699 2393 (url "https://github.com/Nheko-Reborn/nheko")
b40f4052 2394 (commit (string-append "v" version))))
2395 (file-name (git-file-name name version))
2396 (sha256
b2496171 2397 (base32 "1941jvk72qy9g41cs2p3d6fphkg8ccjlsiclwymvzdyi7s3ilml7"))
c017e0b6 2398 (modules '((guix build utils)))
2399 (snippet
2400 '(begin
2401 (delete-file-recursively "third_party")))))
b40f4052 2402 (arguments
f997af9c
NG
2403 (list
2404 #:tests? #f ;no test target
2405 #:configure-flags
2406 #~(list "-DCMAKE_BUILD_TYPE=Release"
2407 "-DBUILD_DOCS=ON"
2408 ;; Fix required because we are using a static SingleApplication
2409 "-DCMAKE_CXX_FLAGS= \"-DQAPPLICATION_CLASS=QApplication\" "
2410 ;; Compile Qml will make Nheko faster, but you will need to recompile
2411 ;; it, when you update Qt. That's fine for us.
2412 "-DCOMPILE_QML=ON")
2413 #:phases
2414 #~(modify-phases %standard-phases
2415 (add-after 'unpack 'unbundle-dependencies
2416 (lambda _
2417 (let ((single-app #$(this-package-input "single-application-qt5")))
2418 (substitute* "CMakeLists.txt"
2419 ;; Remove include and source dirs,replace with the correct one
2420 (("third_party/blurhash/blurhash.cpp") "")
2421 (("third_party/cpp-httplib-0.5.12")
2422 (string-append "\"" single-app "/include\""))
2423 (("add_subdirectory.*third_party/SingleApplication.*") "")
2424 ;; Link using the correct static/shared libs
2425 (("SingleApplication::SingleApplication")
2426 (string-append
2427 ;; Dynamic libraries
2428 "httplib" "\n" "blurhash" "\n"
2429 ;; Static library
2430 single-app "/lib/libSingleApplication.a"))))))
2431 (add-after 'unpack 'fix-determinism
2432 (lambda _
2433 ;; Make Qt deterministic.
2434 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")))
2435 (add-after 'install 'wrap-program
2436 (lambda _
2437 (let ((gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
2438 (wrap-program (string-append #$output "/bin/nheko")
2439 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))))))))
b40f4052 2440 (build-system qt-build-system)
2441 (inputs
98a322e0
NG
2442 (list boost
2443 blurhash
2444 cpp-httplib
2445 cmark
2446 coeurl
2447 curl
2448 gst-plugins-base
f997af9c
NG
2449 gst-plugins-bad ; sdp & webrtc for voip
2450 gst-plugins-good ; rtpmanager for voip
98a322e0
NG
2451 json-modern-cxx
2452 libevent
f997af9c 2453 libnice ; for voip
98a322e0
NG
2454 libolm
2455 lmdb
2456 lmdbxx
2457 mtxclient
2458 openssl
2459 qtbase-5
735d340a 2460 qtdeclarative-5
98a322e0
NG
2461 qtkeychain
2462 qtgraphicaleffects
5f228543 2463 qtmultimedia-5
98a322e0 2464 qtquickcontrols2
1ef04fb2 2465 qtsvg-5
98a322e0
NG
2466 spdlog
2467 single-application-qt5
2468 xcb-util-wm
2469 zlib))
b40f4052 2470 (native-inputs
13abedb2 2471 (list asciidoc doxygen graphviz pkg-config qttools))
b40f4052 2472 (home-page "https://github.com/Nheko-Reborn/nheko")
2473 (synopsis "Desktop client for Matrix using Qt and C++14")
2474 (description "@code{Nheko} want to provide a native desktop app for the
2475Matrix protocol that feels more like a mainstream chat app and less like an IRC
2476client.
2477
c017e0b6 2478Many matrix features are supported, including user registration, rooms, typing
2479notification, emojis, E2E encryption, and voip calls.")
b40f4052 2480 (license license:gpl3+)))
2481
e81c952a
AI
2482(define-public quaternion
2483 (package
2484 (name "quaternion")
16743da2 2485 (version "0.0.9.4f")
e86e0493 2486 (outputs '("out" "debug"))
e81c952a
AI
2487 (source
2488 (origin
6f066db1
EF
2489 (method git-fetch)
2490 (uri (git-reference
35d1ac7f 2491 (url "https://github.com/quotient-im/Quaternion")
1e9b956e 2492 (commit version)))
6f066db1 2493 (file-name (git-file-name name version))
e81c952a 2494 (sha256
16743da2 2495 (base32 "1q9ddz4rs02a0w3lwrsjnh59khv38cq9f0kv09vnwvazvayn87ck"))))
34e31612 2496 (build-system qt-build-system)
e81c952a 2497 (inputs
8394619b
LC
2498 (list libqmatrixclient
2499 qtbase-5
735d340a 2500 qtdeclarative-5
5f228543 2501 qtmultimedia-5
65e5e85d 2502 qtquickcontrols-5
8394619b 2503 qtquickcontrols2
1ef04fb2 2504 qtsvg-5
8394619b
LC
2505 qttools
2506 xdg-utils))
e81c952a 2507 (arguments
34e31612 2508 `(#:tests? #f)) ; no tests
e81c952a
AI
2509 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
2510 (synopsis "Graphical client for the Matrix instant messaging protocol")
2511 (description "Quaternion is a Qt5 desktop client for the Matrix instant
2512messaging protocol. It uses libqmatrixclient and is its reference client
8b660be1 2513implementation. Quaternion and libqmatrixclient together form the
e81c952a 2514QMatrixClient project.")
1e9b956e
TGR
2515 (license (list license:gpl3+ ; all source code
2516 license:lgpl3+)))) ; icons/breeze
e81c952a 2517
f65fdd95
TGR
2518(define-public hangups
2519 (package
2520 (name "hangups")
302a5e1e 2521 (version "0.4.18")
f65fdd95
TGR
2522 (source
2523 (origin
2524 (method url-fetch)
2525 (uri (pypi-uri "hangups" version))
2526 (sha256
302a5e1e 2527 (base32 "12mq22lygh6vz2h5dpvyjk18hx3jphb4kkavqsy298c7hw60hn7l"))))
f65fdd95
TGR
2528 (build-system python-build-system)
2529 (arguments
2530 `(#:phases
2531 (modify-phases %standard-phases
2532 (add-before 'build 'relax-dependencies
2533 ;; Relax overly strict package version specifications.
2534 (lambda _
2535 (substitute* "setup.py"
2323a38b 2536 (("==") ">=")
e05673bc 2537 ((",<.*'") "'"))))
29f205f7
EF
2538 (replace 'check
2539 (lambda* (#:key tests? #:allow-other-keys)
2540 (when tests?
e05673bc 2541 (invoke "pytest" "hangups")))))))
f65fdd95 2542 (propagated-inputs
8394619b
LC
2543 (list python-aiohttp
2544 python-appdirs
2545 python-async-timeout
2546 python-configargparse
2547 python-mechanicalsoup
0e3fd2b6 2548 python-protobuf
8394619b
LC
2549 python-readlike
2550 python-reparser
2551 python-requests
2552 python-urwid))
4b27b09a 2553 (native-inputs
8394619b 2554 (list python-httpretty python-pytest))
f65fdd95
TGR
2555 (home-page "https://hangups.readthedocs.io/")
2556 (synopsis "Instant messaging client for Google Hangouts")
2557 (description
2558 "Hangups is an instant messaging client for Google Hangouts. It includes
2559both a Python library and a reference client with a text-based user interface.
2560
2561Hangups is implements a reverse-engineered version of Hangouts' proprietary,
2562non-interoperable protocol, which allows it to support features like group
2563messaging that aren’t available to clients that connect over XMPP.")
2564 (license license:expat)))
2565
e9a04157
2566(define-public telegram-purple
2567 (package
2568 (name "telegram-purple")
c3ea5756 2569 (version "1.4.7")
e9a04157
2570 (home-page "https://github.com/majn/telegram-purple")
2571 (source (origin
2572 (method git-fetch)
2573 (uri (git-reference
2574 (url home-page)
2575 (commit (string-append "v" version))
2576 (recursive? #t)))
2577 (sha256
2578 (base32
c3ea5756 2579 "14h8lvj0kjvy1b5i84ha2w9rl3akxjwwvsp5j4dcxwfghrkzqgf2"))
e9a04157
2580 (modules '((guix build utils)))
2581 (snippet
2582 '(begin
2583 (substitute* "Makefile.in"
2584 ;; By default these two directories point to Pidgin's own
2585 ;; prefix.
2586 (("^PLUGIN_DIR_PURPLE=.*")
2587 (string-append
2588 "exec_prefix := @exec_prefix@\n"
2589 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
2590 (("^DATA_ROOT_DIR_PURPLE=.*")
2591 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
2592
2593 ;; Honor sysconfdir instead of trying to write to /etc.
2594 (("DESTDIR\\)/etc/telegram-purple")
2595 "DESTDIR)@sysconfdir@/telegram-purple"))
2596 #t))
2597 (patches (search-patches "telegram-purple-adjust-test.patch"))
2598 (file-name (git-file-name name version))))
2599 (build-system gnu-build-system)
2600 (native-inputs
2601 `(("pkg-config" ,pkg-config)
79edfcf2 2602 ("gettext" ,gettext-minimal)
e9a04157
2603 ("which" ,which)))
2604 (inputs
8394619b
LC
2605 (list pidgin
2606 libgcrypt
2607 libwebp
2608 glib
2609 gtk+-2
2610 zlib))
e9a04157
2611 (arguments
2612 `(#:phases
2613 (modify-phases %standard-phases
2614 ;; We're using release tag for repository checkout - let's prepare
2615 ;; header defining GIT_COMMIT manually instead of running git to
2616 ;; identify version which is being compiled. Git repository
2617 ;; is removed anyway and only source code is kept.
2618 (add-after 'unpack 'prepare-commit.h
2619 (lambda _
2620 (with-output-to-file "./commit.h"
2621 (lambda ()
2622 (display
2623 (string-append "//generated by guix, use version instead of "
2624 "commit\n"
2625 "#ifndef GIT_COMMIT\n"
2626 "# define GIT_COMMIT \"v"
2627 ,version "\"\n"
2628 "#endif\n"))))
2629 #t))
2630 (add-before 'configure 'set-SHELL-variables
2631 ;; Set these environment variables so that 'tgl/configure' uses the
2632 ;; right shell and not /bin/sh.
2633 (lambda _
2634 (let ((bash (which "bash")))
2635 (setenv "SHELL" bash)
2636 (setenv "CONFIG_SHELL" bash)
2637 #t))))))
2638 (synopsis "Telegram messaging support for Pidgin")
2639 (description
2640 "Telegram-purple is a plugin for Libpurple, the communication library
2641used by the Pidgin instant messaging client, that adds support for the
5cad926b
TGR
2642Telegram messenger.
2643
2644This package is on ``life support'' until @code{tdlib-purple} is a full
2645replacement.")
e9a04157
2646
2647 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
2648 ;; itself is GPLv2+.
2649 (license license:gpl2+)))
2650
403604c3 2651(define-public tdlib
65424e98
AV
2652 (package
2653 (name "tdlib")
2654 (version "1.8.0")
2655 (source
2656 (origin
2657 (method git-fetch)
2658 (uri (git-reference
2659 (url "https://github.com/tdlib/td")
2660 (commit (string-append "v" version))))
2661 (sha256
2662 (base32 "19psqpyh9a2kzfdhgqkirpif4x8pzy89phvi59dq155y30a3661q"))
2663 (file-name (git-file-name name version))))
2664 (build-system cmake-build-system)
2665 (arguments
8afa5ace 2666 `(#:configure-flags
65424e98
AV
2667 (list "-DCMAKE_BUILD_TYPE=Release"
2668 "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work.
2669 #:phases
2670 (modify-phases %standard-phases
2671 (add-after 'unpack 'remove-failing-tests
2672 (lambda _
2673 (substitute* "test/CMakeLists.txt"
2674 ;; The test cases are compiled into a distinct binary
2675 ;; which uses mtproto.cpp to attempt to connect to
2676 ;; a remote server. Removing this file from the sources
2677 ;; list disables those specific test cases.
2678 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") "")))))))
2679 (native-inputs
2680 (list gperf openssl zlib php doxygen))
2681 (synopsis "Cross-platform library for building Telegram clients")
2682 (description "Tdlib is a cross-platform library for creating custom
403604c3
BG
2683Telegram clients following the official Telegram API. It can be easily used
2684from almost any programming language with a C-FFI and features first-class
2685support for high performance Telegram Bot creation.")
65424e98
AV
2686 (home-page "https://core.telegram.org/tdlib")
2687 (license license:boost1.0)))
403604c3 2688
593ef98a
JB
2689(define-public purple-mm-sms
2690 (package
2691 (name "purple-mm-sms")
2692 (version "0.1.4")
2693 (source (origin
2694 (method git-fetch)
2695 (uri (git-reference
2696 (url "https://source.puri.sm/Librem5/purple-mm-sms.git")
2697 (commit (string-append "v" version))))
2698 (file-name (git-file-name name version))
2699 (sha256
2700 (base32
2701 "1daf7zl8bhhm1szkgxflpqql69f2w9i9nlgf1n4p1nynxifz1bim"))))
2702 (build-system gnu-build-system)
2703 (arguments
2704 `(#:make-flags
2705 (let ((out (assoc-ref %outputs "out")))
2706 ;; Fix hardcoded paths
2707 (list (string-append "PREFIX=" out)
2708 (string-append "PLUGIN_DIR_PURPLE=" out "/lib/purple-2")
2709 (string-append "DATA_ROOT_DIR_PURPLE=" out "/share")))
2710 #:tests? #f ; no tests
2711 #:phases
2712 (modify-phases %standard-phases
2713 (delete 'configure))))
2714 (native-inputs
2715 `(("glib:bin" ,glib "bin")
2716 ("pkg-config" ,pkg-config)))
2717 (inputs
8394619b 2718 (list modem-manager pidgin))
593ef98a
JB
2719 (synopsis "Libpurple plugin for SMS via ModemManager")
2720 (description "Plugin for libpurple to allow sending SMS using ModemManager.")
2721 (home-page "https://source.puri.sm/Librem5/purple-mm-sms")
2722 (license license:gpl2+)))
d2618623 2723
704bd694
JT
2724(define-public purple-lurch
2725 (package
2726 (name "purple-lurch")
2727 (version "0.7.0")
2728 (source
2729 (origin
2730 (method git-fetch)
2731 (uri (git-reference (url "https://github.com/gkdr/lurch")
2732 (commit (string-append "v" version))))
2733 (modules '((guix build utils)))
2734 (snippet
2735 `(begin
2736 ;; Submodules
2737 (delete-file-recursively "lib")))
2738 (file-name
2739 (git-file-name name version))
2740 (sha256
2741 (base32 "1ipd9gwh04wbqv6c10yxi02lc2yjsr02hwjycgxhl4r9x8b33psd"))))
2742 (build-system cmake-build-system)
2743 (arguments
2744 `(#:phases (modify-phases %standard-phases
2745 (replace 'configure
2746 (lambda* (#:key outputs #:allow-other-keys)
2747 (let ((out (assoc-ref outputs "out")))
2748 (substitute* "Makefile"
2749 (("^PURPLE_PLUGIN_DIR = .*")
2750 (string-append "PURPLE_PLUGIN_DIR = " out
2751 "/lib/purple-2\n")))
2752 (setenv "CC" "gcc")))))
2753 #:parallel-tests? #f))
8394619b
LC
2754 (native-inputs (list cmocka pkg-config))
2755 (inputs (list axc
2756 glib
2757 libgcrypt
2758 libomemo
2759 libsignal-protocol-c
2760 libxml2
2761 minixml
2762 pidgin
2763 sqlite))
704bd694
JT
2764 (synopsis "OMEMO Encryption for libpurple")
2765 (description "Purple-lurch plugin adds end-to-end encryption support
2766through the Double Ratchet (Axolotl) algorithm, to @code{libpurple}
2767applications using @acronym{XMPP, Extensible Messaging and Presence Protocol},
2768through its standard XEP-0384: @acronym{OMEMO, OMEMO Multi-End Message and
2769Object Encryption} Encryption. It provides confidentiality, (weak) forward
2770secrecy, break-in recovery, authentication, integrity, deniability, and
2771asynchronicity.")
2772 (home-page "https://github.com/gkdr/lurch")
2773 (license license:gpl3+)))
2774
20d525a8
RD
2775(define-public libphonenumber
2776 (package
2777 (name "libphonenumber")
2778 (version "8.11.3")
2779 (source (origin
2780 (method git-fetch)
2781 (uri (git-reference
2782 (url "https://github.com/google/libphonenumber")
2783 (commit (string-append "v" version))))
2784 (file-name (git-file-name name version))
ecb91c99
AM
2785 (patches (search-patches
2786 "libphonenumber-reproducible-build.patch"))
20d525a8
RD
2787 (sha256
2788 (base32
2789 "06y3mh1d1mks6d0ynxp3980g712nkf8l5nyljpybsk326b246hg9"))))
2790 (arguments
2791 `(#:test-target "tests"
2792 #:phases
2793 (modify-phases %standard-phases
2794 (add-after 'unpack 'change-directory
2795 (lambda _ (chdir "cpp"))))))
2796 (build-system cmake-build-system)
2797 (native-inputs
8394619b 2798 (list googletest pkg-config))
20d525a8 2799 (inputs
8394619b 2800 (list boost protobuf icu4c))
20d525a8
RD
2801 (synopsis "Library for parsing and using phone numbers")
2802 (description
2803 "This package provides a C++ library for parsing, formatting, and
2804validating international phone numbers.")
2805 (home-page "https://github.com/google/libphonenumber")
2806 (license license:asl2.0)))
2807
d2618623
JB
2808(define-public chatty
2809 (package
2810 (name "chatty")
db74cfcf 2811 (version "0.4.0")
d2618623
JB
2812 (source (origin
2813 (method git-fetch)
2814 (uri (git-reference
2815 (url "https://source.puri.sm/Librem5/chatty.git")
2816 (commit (string-append "v" version))))
2817 (file-name (git-file-name name version))
2818 (sha256
2819 (base32
db74cfcf 2820 "12k1a5xrwd6zk4x0m53hbzggk695z3bpbzy1wcikzy0jvch7h13d"))))
d2618623
JB
2821 (build-system meson-build-system)
2822 (arguments
2823 '(#:phases
2824 (modify-phases %standard-phases
2825 (add-after 'unpack 'skip-updating-desktop-database
2826 (lambda _
2827 (substitute* "meson.build"
db74cfcf 2828 (("meson.add_install_script.*") "")))))))
d2618623 2829 (native-inputs
db74cfcf 2830 (list gettext-minimal `(,glib "bin") pkg-config protobuf))
d2618623 2831 (inputs
8394619b
LC
2832 (list feedbackd
2833 folks
2834 gsettings-desktop-schemas
db74cfcf
LMP
2835 gspell
2836 json-glib
8394619b
LC
2837 libgcrypt
2838 libgee
db74cfcf
LMP
2839 libhandy
2840 libolm
2841 libphonenumber
2842 modem-manager
8394619b
LC
2843 pidgin
2844 purple-mm-sms
2845 sqlite))
d2618623 2846 (propagated-inputs
8394619b 2847 (list adwaita-icon-theme evolution-data-server))
d2618623
JB
2848 (synopsis "Mobile client for XMPP and SMS messaging")
2849 (description "Chatty is a chat program for XMPP and SMS. It works on mobile
2850as well as on desktop platforms. It's based on libpurple and ModemManager.")
2851 (home-page "https://source.puri.sm/Librem5/chatty")
2852 (license license:gpl3+)))
2853
c3bbaea7
DM
2854(define-public mosquitto
2855 (package
2856 (name "mosquitto")
2857 (version "1.6.12")
2858 (source
2859 (origin
2860 (method url-fetch)
2861 (uri (string-append "https://mosquitto.org/files/source/mosquitto-"
2862 version ".tar.gz"))
2863 (sha256
2864 (base32
2865 "1yq7y329baa1ly488rw125c3mvsnsa7kjkik602xv1xpkz8p73al"))))
2866 (build-system cmake-build-system)
2867 (inputs
8394619b 2868 (list openssl))
c3bbaea7
DM
2869 (synopsis "Message broker")
2870 (description "This package provides Eclipse Mosquitto, a message broker
2871that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto
2872is lightweight and is suitable for use on all devices from low power single
2873board computers to full servers.
2874
2875The MQTT protocol provides a lightweight method of carrying out messaging
2876using a publish/subscribe model. This makes it suitable for Internet of
2877Things messaging such as with low power sensors or mobile devices such
2878as phones, embedded computers or microcontrollers.")
2879 (home-page "https://mosquitto.org/")
2880 ;; Dual licensed.
2881 (license (list license:epl1.0 license:edl1.0))))
2882
06bdb640
RG
2883(define-public movim-desktop
2884 (let ((commit "83d583b83629dbd2ec448da9a1ffd81f6c1fb295")
2885 (revision "3"))
2886 (package
2887 (name "movim-desktop")
2888 (version
2889 (git-version "0.14.0" revision commit))
2890 (source
2891 (origin
2892 (method git-fetch)
2893 (uri
2894 (git-reference
2895 (url "https://github.com/movim/movim_desktop")
2896 (commit commit)))
2897 (file-name (git-file-name name version))
2898 (sha256
2899 (base32 "1lsa3k3wx1d2lk0qs0k5jc5bmapnmpzwynprjf2wihh8c8y3iwlz"))))
2900 (build-system qt-build-system)
2901 (arguments
2902 `(#:tests? #f ; No target
2903 #:phases
2904 (modify-phases %standard-phases
2905 (add-after 'unpack 'patch
2906 (lambda* (#:key outputs #:allow-other-keys)
2907 (substitute* `("CMakeLists.txt" "movim.desktop")
2908 (("/usr")
2909 (assoc-ref outputs "out"))
2910 (("\"build")
2911 "\"../build"))
2912 #t)))))
2913 (inputs
735d340a 2914 (list qtbase-5 qtdeclarative-5 qtwebchannel))
06bdb640 2915 (propagated-inputs
8394619b 2916 (list qtwebengine))
06bdb640
RG
2917 (home-page "https://movim.eu/")
2918 (synopsis "Desktop Application for Movim")
2919 (description
2920 "Movim-Desktop is a desktop application, relying on Qt, for the Movim
2921social and chat platform.")
2922 (license license:gpl3+))))
2923
b09967bc
RG
2924(define-public psi-plus
2925 (package
2926 (name "psi-plus")
927b8f24 2927 (version "1.5.1484")
b09967bc
RG
2928 (source
2929 (origin
2930 (method git-fetch)
2931 (uri
2932 (git-reference
2933 (url "https://github.com/psi-plus/psi-plus-snapshots")
2934 (commit version)))
2935 (file-name (git-file-name name version))
2936 (modules '((guix build utils)))
2937 (snippet
2938 `(begin
2939 (delete-file-recursively "3rdparty")))
2940 (sha256
927b8f24 2941 (base32 "1jsm39nzzbqkp3zc0xqx7jid6p4q1ra28xad38wjr2l1jb8qjn24"))))
b09967bc
RG
2942 (build-system qt-build-system)
2943 (arguments
2944 `(#:tests? #f ; No target
2945 #:imported-modules
2946 (,@%qt-build-system-modules
2947 (guix build glib-or-gtk-build-system))
2948 #:modules
2949 ((guix build qt-build-system)
2950 ((guix build glib-or-gtk-build-system)
2951 #:prefix glib-or-gtk:)
2952 (guix build utils))
2953 #:configure-flags
2954 (list
2955 "-DBUILD_PSIMEDIA=ON" ; For A/V support
2956 "-DENABLE_PLUGINS=ON"
2957 "-DUSE_HUNSPELL=OFF" ; Use Enchant instead
2958 "-DUSE_ENCHANT=ON"
2959 "-DUSE_CCACHE=OFF") ; Not required
2960 #:phases
2961 (modify-phases %standard-phases
2962 (add-after 'unpack 'patch-source
2963 (lambda _
2964 (substitute* "CMakeLists.txt"
2965 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/http-parser/http_parser.h")
2966 "")
2967 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/qhttp.pro")
2968 "")
2969 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/qite.pro")
2970 "")
2971 (("add_subdirectory\\( 3rdparty \\)")
2972 ""))
2973 (substitute* "src/CMakeLists.txt"
2974 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/libqite")
2975 "")
2976 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/http-parser")
2977 "")
2978 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/src/private")
2979 "")
2980 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/src")
2981 "")
2982 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty")
2983 "")
2984 (("add_dependencies\\(\\$\\{PROJECT_NAME\\} qhttp\\)")
2985 "target_link_libraries(${PROJECT_NAME} qhttp)"))
2986 (substitute* "src/src.cmake"
2987 (("include\\(\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/libqite/libqite.cmake\\)")
2988 "list(APPEND EXTRA_LIBS qite)"))
2989 (substitute* '("src/filesharingmanager.h" "src/widgets/psirichtext.cpp"
2990 "src/filesharingmanager.cpp" "src/widgets/psitextview.cpp"
2991 "src/chatview_te.cpp" "src/msgmle.cpp")
2992 (("qite.h")
2993 "qite/qite.h")
2994 (("qiteaudio.h")
2995 "qite/qiteaudio.h")
2996 (("qiteaudiorecorder.h")
2997 "qite/qiteaudiorecorder.h"))
2998 #t))
2999 (add-after 'install 'wrap-env
3000 (lambda* (#:key outputs #:allow-other-keys)
3001 (let ((out (assoc-ref outputs "out")))
3002 (for-each
3003 (lambda (name)
3004 (let ((file (string-append out "/bin/" name))
3005 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
3006 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
3007 (wrap-program file
3008 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
3009 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
3010 '("psi-plus")))
3011 #t))
3012 (add-after 'wrap-env 'glib-or-gtk-compile-schemas
3013 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
3014 (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
3015 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
3016 (native-inputs
3017 `(("glib:bin" ,glib "bin")
3018 ("gobject-introspection" ,gobject-introspection)
3019 ("perl" ,perl)
3020 ("pkg-config" ,pkg-config)
3021 ("python" ,python-wrapper)
3022 ("ruby" ,ruby)))
3023 (inputs
3024 `(("blake2" ,libb2)
3025 ("dbus" ,dbus)
3026 ("enchant" ,enchant)
3027 ("glib" ,glib)
3028 ("gstreamer" ,gstreamer)
3029 ("gst-plugins-base" ,gst-plugins-base)
3030 ("http-parser" ,http-parser)
3031 ("libgcrypt" ,libgcrypt)
3032 ("libgpg-error" ,libgpg-error)
3033 ("libidn" ,libidn)
3034 ("libotr" ,libotr)
3035 ("libsignal-protocol-c" ,libsignal-protocol-c)
3036 ("libtidy" ,tidy-html)
3037 ("openssl" ,openssl)
3038 ("qca" ,qca)
3039 ("qhttp" ,qhttp)
3040 ("qite" ,qite)
ea0a5107 3041 ("qtbase" ,qtbase-5)
b09967bc 3042 ("qtkeychain" ,qtkeychain)
5f228543 3043 ("qtmultimedia-5" ,qtmultimedia-5)
1ef04fb2 3044 ("qtsvg-5" ,qtsvg-5)
b09967bc
RG
3045 ("qtx11extras" ,qtx11extras)
3046 ("usrsctp" ,usrsctp)
3047 ("x11" ,libx11)
3048 ("xext" ,libxext)
3049 ("xcb" ,libxcb)
3050 ("xss" ,libxscrnsaver)
3051 ("zlib" ,zlib)))
3052 (home-page "https://psi-plus.com/")
3053 (synopsis "Qt-based XMPP Client")
3054 (description
3055 "Psi+ is a spin-off of Psi XMPP client. It is a powerful XMPP client
3056designed for experienced users.")
3057 (license license:gpl2+)))
3058
685fa3f5
GL
3059(define-public python-zulip
3060 (package
3061 (name "python-zulip")
3062 (version "0.7.1")
3063 (source
3064 (origin
3065 ;; There is no source on Pypi.
3066 (method git-fetch)
3067 (uri (git-reference
3068 (url "https://github.com/zulip/python-zulip-api")
3069 (commit version)))
3070 (file-name (git-file-name name version))
3071 (sha256
3072 (base32
3073 "0da1ki1v252avy27j6d7snnc0gyq0xa9fypm3qdmxhw2w79d6q36"))))
3074 (build-system python-build-system)
3075 (arguments
3076 `(#:phases
3077 (modify-phases %standard-phases
3078 (add-after 'unpack 'cd-to-zulip-dir
cea3c866 3079 (lambda _ (chdir "zulip")))
685fa3f5
GL
3080 (replace 'check
3081 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
3082 (let ((test-zulip "../tools/test-zulip"))
3083 (when tests?
3084 (add-installed-pythonpath inputs outputs)
685fa3f5 3085 (patch-shebang test-zulip)
cea3c866 3086 (invoke test-zulip))))))))
685fa3f5 3087 (propagated-inputs
8394619b
LC
3088 (list python-matrix-client python-pyopenssl python-requests
3089 python-six))
685fa3f5 3090 (native-inputs
8394619b 3091 (list python-cython python-distro python-pytest))
685fa3f5
GL
3092 (home-page "https://github.com/zulip/python-zulip-api")
3093 (synopsis "Zulip's API Python bindings")
3094 (description
3095 "This package provides Python bindings to Zulip's API.")
3096 (license license:asl2.0)))
3097
673031c7
GL
3098(define-public zulip-term
3099 (package
3100 (name "zulip-term")
3101 (version "0.5.2")
3102 (source
3103 (origin
3104 ;; Pypi package doesn't ship tests.
3105 (method git-fetch)
3106 (uri (git-reference
3107 (url "https://github.com/zulip/zulip-terminal")
3108 (commit version)))
3109 (file-name (git-file-name name version))
3110 (sha256
3111 (base32
3112 "1xhhy3v4wck74a83avil0rnmsi2grrh03cww19n5mv80p2q1cjmf"))
3113 (modules '((guix build utils)))
3114 (snippet
3115 '(begin
3116 (substitute* "setup.py"
3117 (("\\=\\=1\\.7") ">=1.7") ; pytest-mock
3118 (("\\=\\=2\\.5") ">=2.5") ; pytest-cov
3119 (("4\\.5\\.2") "4.4.2")) ; lxml
3120 #t))))
3121 (build-system python-build-system)
3122 (arguments
3123 '(#:phases
3124 (modify-phases %standard-phases
3125 (replace 'check
3126 (lambda* (#:key tests? #:allow-other-keys)
3127 (when tests?
3128 ;; Delete failing tests.
3129 (delete-file "tests/cli/test_run.py")
3130 (invoke "pytest"))
3131 #t)))))
3132 (inputs
8394619b
LC
3133 (list python-beautifulsoup4
3134 python-lxml
3135 python-mypy-extensions
3136 python-urwid
3137 python-urwid-readline
3138 python-zulip))
673031c7 3139 (native-inputs
8394619b
LC
3140 (list python-distro python-pytest python-pytest-cov
3141 python-pytest-mock))
673031c7
GL
3142 (home-page "https://github.com/zulip/zulip-terminal")
3143 (synopsis "Zulip's official terminal client")
3144 (description "This package contains Zulip's official terminal client.")
3145 (license license:asl2.0)))
3146
3c401ca6
DGC
3147(define-public matterbridge
3148 (package
3149 (name "matterbridge")
d7a30c6e
DGC
3150 (version "1.24.0")
3151 (source (origin
3152 (method git-fetch)
3153 (uri (git-reference
3154 (url "https://github.com/42wim/matterbridge")
3155 (commit (string-append "v" version))))
3156 (file-name (git-file-name name version))
3157 (sha256
3158 (base32
3159 "0cd70x9685162c0imdici1ipl9lziq700wzyb5bsg610wfak3ms7"))))
3160 ;; Using the go-build-system results in the same error message
3161 ;; than in the bug 1551[1]. So we fix it by running go build
3162 ;; manually in the git repository as-is as this is the solution
3163 ;; given to that bug by the matterbridge developers.
3164 ;; [1]https://github.com/42wim/matterbridge/issues/1551
3165 (build-system gnu-build-system)
3c401ca6 3166 (arguments
d7a30c6e
DGC
3167 `(#:phases (modify-phases %standard-phases
3168 (delete 'configure)
3169 (replace 'build
3170 (lambda* (#:key outputs #:allow-other-keys)
3171 (setenv "GOCACHE"
3172 (string-append (getcwd) "/go-build"))
3173 (setenv "GOBIN"
3174 (string-append (assoc-ref outputs "out") "/bin"))
3175 (invoke "go" "build" "-v" "-x")))
3176 (replace 'check
3177 (lambda* (#:key outputs tests? #:allow-other-keys)
3178 (when tests?
3179 (setenv "GOCACHE"
3180 (string-append (getcwd) "/go-build"))
3181 (setenv "GOBIN"
3182 (string-append (assoc-ref outputs "out")
3183 "/bin"))
3184 (invoke "go" "test" "-v" "-x"))))
3185 (replace 'install
3186 (lambda* (#:key outputs #:allow-other-keys)
3187 (setenv "GOCACHE"
3188 (string-append (getcwd) "/go-build"))
3189 (setenv "GOBIN"
3190 (string-append (assoc-ref outputs "out") "/bin"))
3191 (invoke "go" "install" "-v" "-x"))))))
3192 (native-inputs (list go))
3c401ca6 3193 (synopsis "Bridge together various messaging networks and protocols")
d7a30c6e
DGC
3194 (description
3195 "Relays messages between different channels from various
3c401ca6
DGC
3196messaging networks and protocols. So far it supports mattermost, IRC, gitter,
3197xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp,
3198keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST
3199API. Mattermost is not required.")
3200 (home-page "https://github.com/42wim/matterbridge")
3201 (license license:asl2.0)))
3202
17c3bc19 3203(define-public jj
3204 (package
3205 (name "jj")
3206 (version "2")
3207 (source (origin
3208 (method url-fetch)
3209 (uri (string-append "https://23.fi/jj/jj-" version ".tar.gz"))
3210 (sha256
3211 (base32
3212 "02xz2ci93bccvil5iff804mh3zr5iqkf6zx5mxgraz17xg0azlgh"))))
3213 (build-system gnu-build-system)
3214 (arguments
3215 (list #:tests? #f ;There are no tests.
3216 #:make-flags
3217 #~(list (string-append "CC=" #$(cc-for-target))
3218 (string-append "PREFIX=" #$output))
3219 #:phases
3220 #~(modify-phases %standard-phases
3221 (delete 'configure)
3222 (replace 'install
3223 (lambda* (#:key inputs outputs #:allow-other-keys)
3224 (let* ((out (assoc-ref outputs "out"))
3225 (bin (string-append out "/bin")))
3226 (install-file "jj" bin)))))))
3227 (native-inputs (list pkg-config))
3228 (inputs (list glib loudmouth))
3229 (home-page "https://23.fi/jj/")
3230 (synopsis "FIFO based Jabber client")
3231 (description
3232 "jj is a simple file-system-based Jabber client, inspired by ii IRC
3233client. Interaction with jj is done by writing and reading files from the
3234server directory which jj creates. It is perfect for bots and
3235notifications.")
3236 (license license:expat)))
3237
026ac3c0 3238(define-public pounce
3239 (package
3240 (name "pounce")
3241 (version "3.0")
3242 (source
3243 (origin
3244 (method url-fetch)
3245 (uri (string-append "https://git.causal.agency/pounce/snapshot/pounce-"
3246 version ".tar.gz"))
3247 (sha256
3248 (base32 "1w4x34bspkqvk9p7bfj0zmvmbzvxb7lxrrr3g6lrfdj9f3qzfxpp"))))
3249 (build-system gnu-build-system)
3250 (arguments
3251 `(#:tests? #f ;there are no tests
3252 #:make-flags
3253 (list
3254 (string-append "CC=" ,(cc-for-target))
3255 (string-append "PREFIX=" %output))))
3256 (native-inputs
8394619b 3257 (list pkg-config universal-ctags))
026ac3c0 3258 (inputs
8394619b 3259 (list libressl))
026ac3c0 3260 (home-page "https://code.causal.agency/june/pounce")
3261 (synopsis "Simple multi-client TLS-only IRC bouncer")
3262 (description
3263 "@command{pounce} is a multi-client, TLS-only IRC bouncer. It maintains
3264a persistent connection to an IRC server, acting as a proxy and buffer for
3265a number of clients.")
3266 (license license:gpl3+)))
3267
7ebed0cd
AI
3268(define-public weechat-matrix
3269 (package
3270 (name "weechat-matrix")
3271 (version "0.3.0")
3272 (source
3273 (origin
3274 (method git-fetch)
3275 (uri (git-reference
3276 (url "https://github.com/poljar/weechat-matrix")
3277 (commit version)))
3278 (file-name (git-file-name name version))
3279 (sha256
3280 (base32
3281 "1iv55n4k05139f7jzkhczgw4qp6qwilrvfsy3c6v2m1kxffj12d3"))))
3282 (build-system python-build-system)
3283 (arguments
3284 `(#:phases
3285 (modify-phases %standard-phases
3286 (delete 'build)
3287 (replace 'install
3288 (lambda* (#:key inputs outputs #:allow-other-keys)
3289 (let* ((weechat-python (string-append (assoc-ref outputs "out")
3290 "/share/weechat/python")))
3291 ;; Avoid circular import by renaming the matrix module to
3292 ;; weechat_matrix.
3293 (substitute* (cons "main.py"
3294 (append (find-files "matrix")
3295 (find-files "tests")))
3296 (("from matrix") "from weechat_matrix")
3297 (("import matrix") "import weechat_matrix"))
3298 ;; Install python modules.
3299 (invoke "make" "install-lib"
3300 (string-append "INSTALLDIR="
3301 (site-packages inputs outputs)
3302 "/weechat_matrix"))
3303 ;; Extend PYTHONPATH to find installed python modules.
3304 (add-installed-pythonpath inputs outputs)
3305 ;; Augment sys.path so that dependencies are found.
3306 (substitute* "main.py"
3307 (("import os\n" all)
3308 (apply string-append
3309 all
3310 "import sys\n"
3311 (map (lambda (path)
3312 (string-append "sys.path.append('" path "')\n"))
968fff57 3313 (string-split (getenv "GUIX_PYTHONPATH") #\:)))))
7ebed0cd
AI
3314 ;; Install script.
3315 (mkdir-p weechat-python)
3316 (copy-file "main.py"
3317 (string-append weechat-python "/matrix.py")))))
3318 (replace 'check
3319 (lambda* (#:key tests? #:allow-other-keys)
3320 (when tests?
3321 (invoke "pytest")))))))
3322 (inputs
8394619b
LC
3323 (list python-matrix-nio python-pygments python-pyopenssl
3324 python-webcolors))
7ebed0cd 3325 (native-inputs
8394619b 3326 (list python-pytest))
7ebed0cd
AI
3327 (home-page "https://github.com/poljar/weechat-matrix")
3328 (synopsis "Weechat Matrix protocol script")
3329 (description "@code{weechat-matrix} is a Python plugin for Weechat that lets
3330Weechat communicate over the Matrix protocol.")
3331 (license license:isc)))
3332
2ebadb39
AI
3333(define-public weechat-wee-slack
3334 (package
3335 (name "weechat-wee-slack")
3336 (version "2.8.0")
3337 (source
3338 (origin
3339 (method git-fetch)
3340 (uri (git-reference
3341 (url "https://github.com/wee-slack/wee-slack")
3342 (commit (string-append "v" version))))
3343 (file-name (git-file-name name version))
3344 (sha256
3345 (base32
3346 "0xfklr0gsc9jgxfyrrb2j756lclz9g8imcb0pk0xgyj8mhsw23zk"))))
3347 (build-system python-build-system)
3348 (arguments
3349 `(#:phases
3350 (modify-phases %standard-phases
3351 (delete 'build)
3352 (replace 'install
3353 (lambda* (#:key inputs outputs #:allow-other-keys)
3354 ;; Augment sys.path so that dependencies are found.
3355 (substitute* "wee_slack.py"
3356 (("import sys\n" all)
3357 (apply string-append
3358 all
3359 (map (lambda (path)
3360 (string-append "sys.path.append('" path "')\n"))
7d5c5b34 3361 (string-split (getenv "GUIX_PYTHONPATH") #\:)))))
2ebadb39
AI
3362 ;; Install script.
3363 (install-file "wee_slack.py"
3364 (string-append (assoc-ref outputs "out")
3365 "/share/weechat/python"))))
3366 (replace 'check
3367 (lambda* (#:key tests? #:allow-other-keys)
3368 (when tests?
3369 (invoke "pytest")))))))
3370 (inputs
8394619b 3371 (list python-websocket-client))
2ebadb39 3372 (native-inputs
8394619b 3373 (list python-pytest))
2ebadb39
AI
3374 (home-page "https://github.com/wee-slack/wee-slack")
3375 (synopsis "Weechat Slack script")
3376 (description "@code{weechat-wee-slack} is a WeeChat native client for
3377Slack. It provides supplemental features only available in the web/mobile
3378clients such as synchronizing read markers, typing notification, threads (and
3379more)! It connects via the Slack API, and maintains a persistent websocket
3380for notification of events.")
3381 (license license:expat)))
3382
a7517955
DM
3383(define-public python-librecaptcha
3384 (package
3385 (name "python-librecaptcha")
3386 (version "0.7.3")
3387 (source (origin
3388 (method git-fetch)
3389 (uri (git-reference
3390 (url "https://github.com/taylordotfish/librecaptcha")
3391 (commit version)))
3392 (file-name (string-append name "-" version "-checkout"))
3393 (sha256
3394 (base32
3395 "0r35ws6vdf31j01kpacvpjplddm254r0cgy0npmhgnfxd5kpjf3s"))))
3396 (build-system python-build-system)
3397 (propagated-inputs
3398 (list python-pillow python-requests python-esprima python-pygobject gobject-introspection gtk+))
3399 (synopsis "Show CAPTCHA without running proprietary code.")
3400 (description "This package shows CAPTCHA without running proprietary code.")
3401 (home-page "https://github.com/taylordotfish/librecaptcha")
3402 (license license:gpl3+)))
3403
ec0404fc
DM
3404(define-public python-harmony
3405 (package
3406 (name "python-harmony")
3407 (version "0.7.1")
3408 (source (origin
3409 (method git-fetch)
3410 (uri (git-reference
3411 (url "https://github.com/taylordotfish/harmony.git")
3412 (commit version)))
3413 (file-name (string-append name "-" version "-checkout"))
3414 (sha256
3415 (base32
3416 "1bm9xcnzpnpj6rlhbrnl2abwclzl7ivgh1vb5644y9mnhcs489js"))))
3417 (build-system python-build-system)
3418 (native-inputs
3419 (list python-tox))
3420 (inputs
3421 (list python-librecaptcha python-keyring python-requests))
3422 (synopsis "Discord account management")
3423 (description "This package provides account management tools for
3424Discord.")
3425 (home-page "https://github.com/taylordotfish/harmony")
3426 (license license:gpl3+)))
3427
7c706558 3428;;; messaging.scm ends here