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