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