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