gnu: emacs-consult: Fix grammar.
[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")
8615e21a 791 (version "2.14.3")
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
8615e21a 799 (base32 "0vdfnm96m1kh4gm6xn6i7s9c5zjh1p18jg4595k4p5bplvd6fmm8"))
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"
1b80f670
RG
866 ;; "--enable-gevolution"
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")
8615e21a
TGR
878 "/lib"))
879 #:phases
880 (modify-phases %standard-phases
881 (add-before 'check 'eat-leftovers
882 ;; XXX Remove when updating beyond 2.14.3. Equivalent to
883 ;; <https://keep.imfreedom.org/pidgin/pidgin/rev/d4d72fde60c2>.
884 (lambda _
885 ;; Remove a lingering [broken] oscar reference.
886 (substitute* "libpurple/tests/check_libpurple.c"
887 ((".*oscar_util_suite.*") "")))))))
b1a2bc89 888 (native-search-paths
60e1fa20
RG
889 (list
890 (search-path-specification
891 (variable "PURPLE_PLUGIN_PATH")
892 (files
893 (list
894 (string-append "lib/purple-"
895 (version-major version))
896 "lib/pidgin")))))
dbe2dfa5 897 (home-page "https://www.pidgin.im/")
b1a2bc89 898 (synopsis "Graphical multi-protocol instant messaging client")
60e1fa20
RG
899 (description "Pidgin is a modular instant messaging client that supports
900many popular chat protocols.")
b1a2bc89
MW
901 (license
902 (list
60e1fa20
RG
903 license:gpl2+ ; Most of the code
904 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
29e83e1c 905 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
b1a2bc89 906 ;; The following licenses cover the zephyr protocol plugin:
29e83e1c 907 (license:non-copyleft
b1a2bc89
MW
908 "file://libpurple/protocols/zephyr/mit-copyright.h"
909 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
29e83e1c 910 (license:non-copyleft
b1a2bc89
MW
911 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
912 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
913
0a143f67
MW
914(define-public pidgin-otr
915 (package
916 (name "pidgin-otr")
f9733422 917 (version "4.0.2")
4f1f5189
RG
918 (source
919 (origin
920 (method url-fetch)
921 (uri
922 (string-append "https://otr.cypherpunks.ca/"
923 name "-" version ".tar.gz"))
924 (sha256
925 (base32 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
0a143f67
MW
926 (build-system gnu-build-system)
927 (native-inputs
f2f7395e
RG
928 `(("gettext" ,gettext-minimal)
929 ("intltool" ,intltool)
4f1f5189 930 ("pkg-config" ,pkg-config)))
0a143f67 931 (inputs
4f1f5189
RG
932 `(("glib" ,glib)
933 ("gtk+" ,gtk+-2)
0a143f67 934 ("libgcrypt" ,libgcrypt)
4f1f5189
RG
935 ("libgpg-error" ,libgpg-error)
936 ("libotr" ,libotr)
f2f7395e 937 ("perl" ,perl)
4f1f5189 938 ("pidgin" ,pidgin)))
0a143f67
MW
939 (home-page "https://otr.cypherpunks.ca/")
940 (synopsis "Off-the-Record Messaging plugin for Pidgin")
4f1f5189
RG
941 (description "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin
942instant messaging client. OTR (Off-the-Record) Messaging allows you to have
943private conversations over instant messaging by providing: (1) Encryption: No
944one else can read your instant messages. (2) Authentication: You are assured
945the correspondent is who you think it is. (3) Deniability: The messages you
946send do not have digital signatures that are checkable by a third party. Anyone
0a143f67 947can forge messages after a conversation to make them look like they came from
4f1f5189
RG
948you. However, during a conversation, your correspondent is assured the messages
949he sees are authentic and unmodified. (4) Perfect forward secrecy: If you lose
950control of your private keys, no previous conversation is compromised.")
3fd6fd72 951 (license license:gpl2+)))
0a143f67 952
a10052ac
DT
953(define-public znc
954 (package
955 (name "znc")
042d7eb1 956 (version "1.8.2")
a10052ac
DT
957 (source (origin
958 (method url-fetch)
df3a4611 959 (uri (string-append "https://znc.in/releases/archive/znc-"
a10052ac
DT
960 version ".tar.gz"))
961 (sha256
962 (base32
042d7eb1 963 "03fyi0j44zcanj1rsdx93hkdskwfvhbywjiwd17f9q1a7yp8l8zz"))))
2b0f3293 964 (build-system cmake-build-system)
a10052ac 965 (arguments
2b0f3293
TGR
966 `(#:configure-flags
967 (list "-DWANT_CYRUS=ON"
44ddf0f1 968 "-DWANT_I18N=ON"
2b0f3293
TGR
969 "-DWANT_PERL=ON"
970 "-DWANT_PYTHON=ON")
971 #:phases
500fc65b
TGR
972 (modify-phases %standard-phases
973 (add-after 'unpack 'unpack-googletest
2b0f3293 974 ;; Copy the googletest sources to where the CMake build expects them.
500fc65b 975 (lambda* (#:key inputs #:allow-other-keys)
2b0f3293
TGR
976 (let ((source (assoc-ref inputs "googletest-source"))
977 (target "third_party/googletest"))
978 (mkdir-p target)
979 (copy-recursively source target)
980 #t))))))
a10052ac 981 (native-inputs
44ddf0f1
TGR
982 `(("boost" ,boost)
983 ("gettext" ,gettext-minimal)
984 ("googletest-source" ,(package-source googletest))
d7463e01 985 ("pkg-config" ,pkg-config)))
a10052ac 986 (inputs
d7463e01 987 `(("cyrus-sasl" ,cyrus-sasl)
a10052ac 988 ("icu4c" ,icu4c)
d7463e01
TGR
989 ("openssl" ,openssl)
990 ("perl" ,perl)
991 ("python" ,python)
992 ("zlib" ,zlib)))
204623bc 993 (home-page "https://wiki.znc.in/ZNC")
a10052ac 994 (synopsis "IRC network bouncer")
1a544482
TGR
995 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
996detach the client from the actual IRC server, and also from selected channels.
997Multiple clients from different locations can connect to a single ZNC account
a10052ac 998simultaneously and therefore appear under the same nickname on IRC.")
29e83e1c 999 (license license:asl2.0)))
a10052ac 1000
246bc76a
RW
1001(define-public python-nbxmpp
1002 (package
1003 (name "python-nbxmpp")
f4fd7bda 1004 (version "2.0.2")
246bc76a
RW
1005 (source
1006 (origin
1007 (method url-fetch)
0bb718c1
RG
1008 (uri
1009 (pypi-uri "nbxmpp" version))
246bc76a 1010 (sha256
f4fd7bda 1011 (base32 "1482fva70i01w60fk70c0fhqmqgzi1fb4xflllz2v6c8mdqkd1m3"))))
246bc76a 1012 (build-system python-build-system)
7c2f4604
RG
1013 (native-inputs
1014 `(("glib:bin" ,glib "bin")))
1015 (inputs
1016 `(("glib" ,glib)
1017 ("glib-networking" ,glib-networking)
1018 ("libsoup" ,libsoup)
0da9dd4c 1019 ("python-gssapi" ,python-gssapi)
7c2f4604
RG
1020 ("python-idna" ,python-idna)
1021 ("python-precis-i18n" ,python-precis-i18n)
1022 ("python-pygobject" ,python-pygobject)))
6010fde5
RG
1023 (synopsis "Non-blocking XMPP Module")
1024 (description "Python-nbxmpp is a Python library that provides a way for
1025Python applications to use the XMPP network. This library was initially a fork
1026of xmpppy.")
46cb089f 1027 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
29e83e1c 1028 (license license:gpl3+)))
246bc76a 1029
1f321f87
RW
1030(define-public gajim
1031 (package
1032 (name "gajim")
fb4ccb86 1033 (version "1.3.1")
51e7e72b
RG
1034 (source
1035 (origin
1036 (method url-fetch)
1037 (uri
1038 (string-append "https://gajim.org/downloads/"
1039 (version-major+minor version)
a4f763cd 1040 "/gajim-" version ".tar.gz"))
51e7e72b 1041 (sha256
fb4ccb86 1042 (base32 "070h1n3miq99z6ln77plk3jlisgfqfs2yyn4rhchpf25zd8is1ba"))
c18803f2 1043 (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
e2d8b4a8 1044 (build-system python-build-system)
1f321f87 1045 (arguments
a4f763cd
RG
1046 `(#:imported-modules
1047 (,@%python-build-system-modules
1048 (guix build glib-or-gtk-build-system))
1049 #:modules
1050 ((guix build python-build-system)
1051 ((guix build glib-or-gtk-build-system)
1052 #:prefix glib-or-gtk:)
1053 (guix build utils))
1054 #:phases
1f321f87 1055 (modify-phases %standard-phases
be450b19
RG
1056 (add-after 'unpack 'disable-failing-tests
1057 (lambda _
fb4ccb86
RG
1058 ;; ModuleNotFoundError: No module named 'gajim.gui.emoji_data'
1059 ;; https://dev.gajim.org/gajim/gajim/-/issues/10478
1060 (delete-file "test/lib/gajim_mocks.py")
be450b19
RG
1061 (delete-file "test/unit/test_gui_interface.py")
1062 #t))
5cfec72f
CL
1063 (replace 'check
1064 (lambda _
a4f763cd
RG
1065 ;; Tests require a running X server.
1066 (system "Xvfb :1 +extension GLX &")
1067 (setenv "DISPLAY" ":1")
1068 ;; For missing '/etc/machine-id'.
1069 (setenv "DBUS_FATAL_WARNINGS" "0")
1070 (invoke "dbus-launch" "python" "./setup.py" "test")
1071 #t))
1072 (add-after 'install 'glib-or-gtk-compile-schemas
1073 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
1074 (add-after 'install 'glib-or-gtk-wrap
1075 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
1076 (add-after 'install 'wrap-env
0f6b6cb9 1077 (lambda* (#:key outputs #:allow-other-keys)
e2d8b4a8
CL
1078 (let ((out (assoc-ref outputs "out")))
1079 (for-each
1080 (lambda (name)
1081 (let ((file (string-append out "/bin/" name))
a4f763cd 1082 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
e2d8b4a8
CL
1083 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
1084 (wrap-program file
a4f763cd
RG
1085 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
1086 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
e2d8b4a8 1087 '("gajim" "gajim-remote" "gajim-history-manager")))
60c5b444 1088 #t)))))
9e3644a8 1089 (native-search-paths
51e7e72b
RG
1090 (list
1091 (search-path-specification
1092 (variable "GAJIM_PLUGIN_PATH")
1093 (separator #f) ;single entry
1094 (files
1095 (list
1096 "share/gajim/plugins")))
1097 ;; Gajim needs to use the propagated inputs of its plugins.
1098 (search-path-specification
1099 (variable "PYTHONPATH")
1100 (files
1101 (list
1102 (string-append
1103 "lib/python"
1104 ;; FIXME: Cannot use this expression as it would
1105 ;; introduce a circular dependency at the top level.
1106 ;; (version-major+minor (package-version python))
1107 "3.8"
1108 "/site-packages"))))))
1f321f87 1109 (native-inputs
a4f763cd
RG
1110 `(("gettext" ,gettext-minimal)
1111 ("glib:bin" ,glib "bin")
1112 ("gobject-introspection" ,gobject-introspection)
1113 ("gtk+:bin" ,gtk+ "bin")
1114 ("python-distutils-extra" ,python-distutils-extra)
1115 ("python-setuptools" ,python-setuptools)
ff337525 1116 ("xorg-server" ,xorg-server-for-tests)))
51a0887d 1117 (inputs
a4f763cd
RG
1118 `(("avahi" ,avahi)
1119 ("dbus" ,dbus)
1120 ("farstream" ,farstream)
1121 ("geoclue" ,geoclue)
1122 ("glib" ,glib)
1123 ("glib-networking" ,glib-networking)
a4f763cd
RG
1124 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
1125 ("gsound",gsound)
1126 ("gspell" ,gspell)
1127 ("gstreamer" ,gstreamer)
1128 ("gst-plugins-base" ,gst-plugins-base)
e2d8b4a8 1129 ("gtk+" ,gtk+)
a4f763cd 1130 ("gupnp-igd" ,gupnp-igd)
e5d726fe 1131 ("libsecret" ,libsecret)
a4f763cd
RG
1132 ("libsoup" ,libsoup)
1133 ("libxss" ,libxscrnsaver)
1134 ("network-manager" ,network-manager)
1135 ("python-css-parser" ,python-css-parser)
992a4965 1136 ("python-keyring" ,python-keyring)
e2d8b4a8 1137 ("python-nbxmpp" ,python-nbxmpp)
a4f763cd 1138 ("python-packaging" ,python-packaging)
e2d8b4a8 1139 ("python-pillow" ,python-pillow)
992a4965 1140 ("python-precis-i18n" ,python-precis-i18n)
e2d8b4a8
CL
1141 ("python-pycairo" ,python-pycairo)
1142 ("python-pygobject" ,python-pygobject)
a4f763cd
RG
1143 ("python-pyopenssl" ,python-pyopenssl)))
1144 (propagated-inputs
1145 `(("dconf" ,dconf)))
7d8f997b
RG
1146 (synopsis "Fully-featured XMPP client")
1147 (description "Gajim aims to be an easy to use and fully-featured XMPP chat
1148client. It is extensible via plugins, supports end-to-end encryption (OMEMO
1149and OpenPGP) and available in 29 languages.")
1f321f87 1150 (home-page "https://gajim.org/")
d6465efa 1151 (license license:gpl3)))
1f321f87 1152
435d8a83
CL
1153(define-public gajim-omemo
1154 (package
1155 (name "gajim-omemo")
fb2107cd 1156 (version "2.7.13")
7c63d0e2
RG
1157 (source
1158 (origin
1159 (method url-fetch/zipbomb)
1160 (uri
1161 (string-append
1162 "https://ftp.gajim.org/plugins_releases/omemo_"
1163 version ".zip"))
1164 (sha256
fb2107cd 1165 (base32 "1msr71rvik05wjpa2inpkadddad2rxaqbqcww5qrdrcz75pm8brn"))))
435d8a83
CL
1166 (build-system trivial-build-system)
1167 (arguments
1168 `(#:modules ((guix build utils))
1169 #:builder
1170 (begin
1171 (use-modules (guix build utils))
1172 (let* ((out (assoc-ref %outputs "out"))
1173 (share (in-vicinity out "share/gajim/plugins"))
1174 (source (assoc-ref %build-inputs "source")))
1175 (mkdir-p share)
1176 (copy-recursively source share)
1177 #t))))
1178 (propagated-inputs
ab6d077a
RG
1179 `(("python-axolotl" ,python-axolotl)
1180 ("python-axolotl-curve25519" ,python-axolotl-curve25519)
1181 ("python-cryptography" ,python-cryptography)
1182 ("python-qrcode" ,python-qrcode)))
7c63d0e2 1183 (synopsis "Gajim OMEMO plugin")
a9c72b9a
RG
1184 (description "Gajim-OMEMO is a plugin that adds support for the OMEMO
1185Encryption to Gajim. OMEMO is an XMPP Extension Protocol (XEP) for secure
1186multi-client end-to-end encryption.")
435d8a83 1187 (home-page
657b6072 1188 "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OmemoGajimPlugin")
435d8a83
CL
1189 (license license:gpl3+)))
1190
2cbda6de
RG
1191(define-public gajim-openpgp
1192 (package
1193 (name "gajim-openpgp")
1755498c 1194 (version "1.3.9")
2cbda6de
RG
1195 (source
1196 (origin
1197 (method url-fetch/zipbomb)
1198 (uri
1199 (string-append
1200 "https://ftp.gajim.org/plugins_releases/openpgp_"
1201 version ".zip"))
1202 (sha256
1755498c 1203 (base32 "0fzvvrap1hmj4rbrcjs6cs5c9l9c0795bgw9vxxxk915n6j91m23"))))
2cbda6de
RG
1204 (build-system trivial-build-system)
1205 (arguments
1206 `(#:modules ((guix build utils))
1207 #:builder
1208 (begin
1209 (use-modules (guix build utils))
1210 (let* ((out (assoc-ref %outputs "out"))
1211 (share (in-vicinity out "share/gajim/plugins"))
1212 (source (assoc-ref %build-inputs "source")))
1213 (mkdir-p share)
1214 (copy-recursively source share)
1215 #t))))
1216 (propagated-inputs
1217 `(("python-cryptography" ,python-cryptography)
1755498c
RG
1218 ("python-gnupg" ,python-gnupg)
1219 ("python-gpg" ,python-gpg)))
2cbda6de
RG
1220 (synopsis "Gajim OpenPGP plugin")
1221 (description "Gajim-OpenPGP is a plugin that adds support for the OpenPGP
1222Encryption to Gajim.")
1223 (home-page "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OpenPGPplugin")
435d8a83
CL
1224 (license license:gpl3+)))
1225
50cb3c8d 1226(define-public dino
a1da0fb2
AI
1227 (package
1228 (name "dino")
3a158476 1229 (version "0.2.0")
a1da0fb2
AI
1230 (source
1231 (origin
1232 (method url-fetch)
d829c348
RG
1233 (uri
1234 (string-append "https://github.com/dino/dino/releases/download/v"
1235 version "/dino-" version ".tar.gz"))
a1da0fb2 1236 (sha256
d829c348 1237 (base32 "0iigh7bkil6prf02dqcl6lmd89jxz685h8lqr3ni4x39zkcransn"))))
a1da0fb2 1238 (build-system cmake-build-system)
d829c348 1239 (outputs '("out" "debug"))
a1da0fb2
AI
1240 (arguments
1241 `(#:tests? #f
d829c348 1242 #:parallel-build? #f ; not supported
a1da0fb2
AI
1243 #:modules ((guix build cmake-build-system)
1244 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
1245 (guix build utils))
1246 #:imported-modules (,@%gnu-build-system-modules
1247 (guix build cmake-build-system)
1248 (guix build glib-or-gtk-build-system))
1249 #:phases
1250 (modify-phases %standard-phases
1251 (add-after 'install 'glib-or-gtk-wrap
1252 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
d829c348 1253 (native-inputs
6d55b154 1254 `(("gettext" ,gettext-minimal)
eeee6507
RG
1255 ("glib:bin" ,glib "bin")
1256 ("gtk+:bin" ,gtk+ "bin")
6d55b154
RG
1257 ("pkg-config" ,pkg-config)
1258 ("vala" ,vala)))
a1da0fb2 1259 (inputs
eeee6507
RG
1260 `(("glib" ,glib)
1261 ("glib-networking" ,glib-networking)
6d55b154
RG
1262 ("gpgme" ,gpgme)
1263 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
1264 ("gtk+" ,gtk+)
a1da0fb2 1265 ("libgcrypt" ,libgcrypt)
6d55b154
RG
1266 ("libgee" ,libgee)
1267 ("libsignal-protocol-c" ,libsignal-protocol-c)
a1da0fb2
AI
1268 ("libsoup" ,libsoup)
1269 ("qrencode" ,qrencode)
fc58cb5b 1270 ("sqlite" ,sqlite)
a1da0fb2
AI
1271 ("gpgme" ,gpgme)
1272 ("gtk+" ,gtk+)
1273 ("glib-networking" ,glib-networking)
1274 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
5988d531
RG
1275 (synopsis "Graphical Jabber/XMPP Client using GTK+/Vala")
1276 (description "Dino is a chat client for the desktop. It focuses on providing
1277a minimal yet reliable Jabber/XMPP experience and having encryption enabled by
1278default.")
a1da0fb2 1279 (home-page "https://dino.im")
a1da0fb2 1280 (license license:gpl3+)))
50cb3c8d 1281
1ae27aac
RW
1282(define-public prosody
1283 (package
1284 (name "prosody")
c688e314 1285 (version "0.11.3")
1ae27aac
RW
1286 (source (origin
1287 (method url-fetch)
1288 (uri (string-append "https://prosody.im/downloads/source/"
1289 "prosody-" version ".tar.gz"))
1290 (sha256
1291 (base32
c688e314 1292 "11xz4milv2962qf75vrdwsvd8sy2332nf69202rmvz5989pvvnng"))))
1ae27aac
RW
1293 (build-system gnu-build-system)
1294 (arguments
627e6d8c 1295 `(#:tests? #f ;tests require "busted"
7f39e131 1296 #:configure-flags (list "--no-example-certs")
1ae27aac
RW
1297 #:modules ((ice-9 match)
1298 (srfi srfi-1)
1299 (guix build gnu-build-system)
1300 (guix build utils))
1301 #:phases
1302 (modify-phases %standard-phases
1303 (add-after 'unpack 'fix-configure-script
1304 (lambda _
1305 ;; The configure script aborts when it encounters unexpected
1306 ;; arguments. Make it more tolerant.
1307 (substitute* "configure"
1308 (("exit 1") ""))
1309 #t))
84bf2a2e
CL
1310 (add-after 'unpack 'fix-makefile
1311 (lambda _
627e6d8c 1312 (substitute* "GNUmakefile"
84bf2a2e
CL
1313 ;; prosodyctl needs to read the configuration file.
1314 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
1315 ;; prosodyctl needs a place to put auto-generated certificates.
1316 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
1317 #t))
1ae27aac
RW
1318 (add-after 'install 'wrap-programs
1319 (lambda* (#:key inputs outputs #:allow-other-keys)
1320 ;; Make sure all executables in "bin" find the required Lua
1321 ;; modules at runtime.
1322 (let* ((out (assoc-ref outputs "out"))
1323 (bin (string-append out "/bin/"))
1324 (deps (delete #f (map (match-lambda
1325 ((label . directory)
1326 (if (string-prefix? "lua" label)
1327 directory #f)))
1328 inputs)))
5b494618
CL
1329 (lua-path (string-join
1330 (map (lambda (path)
1331 (string-append
627e6d8c
CL
1332 path "/share/lua/5.2/?.lua;"
1333 path "/share/lua/5.2/?/?.lua"))
5b494618
CL
1334 (cons out deps))
1335 ";"))
1336 (lua-cpath (string-join
1337 (map (lambda (path)
1338 (string-append
627e6d8c
CL
1339 path "/lib/lua/5.2/?.so;"
1340 path "/lib/lua/5.2/?/?.so"))
5b494618
CL
1341 (cons out deps))
1342 ";"))
1343 (openssl (assoc-ref inputs "openssl"))
1344 (coreutils (assoc-ref inputs "coreutils"))
1345 (path (map (lambda (dir)
1346 (string-append dir "/bin"))
1347 (list openssl coreutils))))
1ae27aac
RW
1348 (for-each (lambda (file)
1349 (wrap-program file
5b494618
CL
1350 `("LUA_PATH" ";" = (,lua-path))
1351 `("LUA_CPATH" ";" = (,lua-cpath))
1352 `("PATH" ":" prefix ,path)))
1ae27aac
RW
1353 (find-files bin ".*"))
1354 #t))))))
1355 (inputs
1356 `(("libidn" ,libidn)
1357 ("openssl" ,openssl)
627e6d8c
CL
1358 ("lua" ,lua-5.2)
1359 ("lua5.2-bitop" ,lua5.2-bitop)
1360 ("lua5.2-expat" ,lua5.2-expat)
1361 ("lua5.2-socket" ,lua5.2-socket)
1362 ("lua5.2-filesystem" ,lua5.2-filesystem)
1363 ("lua5.2-sec" ,lua5.2-sec)))
1ae27aac
RW
1364 (home-page "https://prosody.im/")
1365 (synopsis "Jabber (XMPP) server")
1366 (description "Prosody is a modern XMPP communication server. It aims to
1367be easy to set up and configure, and efficient with system resources.
1368Additionally, for developers it aims to be easy to extend and give a flexible
1369system on which to rapidly develop added functionality, or prototype new
1370protocols.")
29e83e1c 1371 (license license:x11)))
1ae27aac 1372
e0aa5b5b
CL
1373(define-public prosody-http-upload
1374 (let ((changeset "765735bb590b")
1375 (revision "1"))
1376 (package
1377 (name "prosody-http-upload")
1378 (version (string-append "0-" revision "." (string-take changeset 7)))
1379 (source (origin
1380 (method hg-fetch)
1381 (uri (hg-reference
1382 (url "https://hg.prosody.im/prosody-modules/")
1383 (changeset changeset)))
1384 (file-name (string-append name "-" version "-checkout"))
1385 (sha256
1386 (base32
1387 "142wrcism70nf8ffahhd961cqg2pi1h7ic8adfs3zwh0j3pnf41f"))))
1388 (build-system trivial-build-system)
1389 (arguments
1390 '(#:modules ((guix build utils))
1391 #:builder
1392 (begin
1393 (use-modules (guix build utils))
1394 (let ((out (assoc-ref %outputs "out"))
1395 (source (assoc-ref %build-inputs "source")))
1396 (with-directory-excursion (in-vicinity source "mod_http_upload")
1397 (install-file "mod_http_upload.lua" out))
1398 #t))))
1399 (home-page "https://modules.prosody.im/mod_http_upload.html")
1400 (synopsis "XEP-0363: Allow clients to upload files over HTTP")
1401 (description "This module implements XEP-0363: it allows clients to
1402upload files over HTTP.")
1403 (license (package-license prosody)))))
1404
be1ce9fd
CL
1405(define-public prosody-smacks
1406 (let ((changeset "67f1d1f22625")
1407 (revision "1"))
1408 (package
1409 (name "prosody-smacks")
1410 (version (string-append "0-" revision "." (string-take changeset 7)))
1411 (source (origin
1412 (method hg-fetch)
1413 (uri (hg-reference
1414 (url "https://hg.prosody.im/prosody-modules/")
1415 (changeset changeset)))
1416 (file-name (string-append name "-" version "-checkout"))
1417 (sha256
1418 (base32
1419 "020ngpax30fgarah98yvlj0ni8rcdwq60if03a9hqdw8mic0nxxs"))))
1420 (build-system trivial-build-system)
1421 (arguments
1422 '(#:modules ((guix build utils))
1423 #:builder
1424 (begin
1425 (use-modules (guix build utils))
1426 (let ((out (assoc-ref %outputs "out"))
1427 (source (assoc-ref %build-inputs "source")))
1428 (with-directory-excursion (in-vicinity source "mod_smacks")
1429 (install-file "mod_smacks.lua" out))
1430 #t))))
1431 (home-page "https://modules.prosody.im/mod_smacks.html")
1432 (synopsis "XEP-0198: Reliability and fast reconnects for XMPP")
1433 (description "This module implements XEP-0198: when supported by both
1434the client and server, it can allow clients to resume a disconnected session,
1435and prevent message loss.")
1436 (license (package-license prosody)))))
1437
901c1aae 1438(define-public libtoxcore
aaf0e47f
RW
1439 (let ((revision "2")
1440 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
901c1aae 1441 (package
1442 (name "libtoxcore")
1443 (version (string-append "0.0.0" "-"
1444 revision "."(string-take commit 7)))
1445 (source (origin
1446 (method git-fetch)
1447 (uri (git-reference
b0e7b699 1448 (url "https://github.com/irungentoo/toxcore")
901c1aae 1449 (commit commit)))
1450 (file-name (string-append name "-" version "-checkout"))
1451 (sha256
1452 (base32
aaf0e47f 1453 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
901c1aae 1454 (build-system gnu-build-system)
aaf0e47f 1455 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
901c1aae 1456 (native-inputs
1457 `(("autoconf" ,autoconf)
1458 ("automake" ,automake)
1459 ("libtool" ,libtool)
aaf0e47f 1460 ("check" ,check)
901c1aae 1461 ("pkg-config" ,pkg-config)))
1462 (inputs
1463 `(("libsodium" ,libsodium)
1464 ("opus" ,opus)
1465 ("libvpx" ,libvpx)))
901c1aae 1466 (synopsis "Library for the Tox encrypted messenger protocol")
1467 (description
1468 "C library implementation of the Tox encrypted messenger protocol.")
29e83e1c 1469 (license license:gpl3+)
901c1aae 1470 (home-page "https://tox.chat"))))
1471
0ed5554a 1472;; Some tox clients move to c-toxcore, which seems to be where all the
1473;; recent development happens. It is run by the same developers as toxcore,
1474;; forked into a group namespace.
1475(define-public c-toxcore
1476 (package
1477 (name "c-toxcore")
1a2e3d94 1478 (version "0.2.12")
0ed5554a 1479 (source
1480 (origin
60186836
RW
1481 (method git-fetch)
1482 (uri (git-reference
b0e7b699 1483 (url "https://github.com/TokTok/c-toxcore")
60186836
RW
1484 (commit (string-append "v" version))))
1485 (file-name (git-file-name name version))
0ed5554a 1486 (sha256
1487 (base32
1a2e3d94 1488 "0a6sqpm00d2rn0nviqfz4gh9ck1wzci6rxgmqmcyryl5ca19ffvp"))))
230bd4bb
RH
1489 (arguments
1490 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
1491 ; for now.
9840b8fa 1492 (build-system cmake-build-system)
0ed5554a 1493 (native-inputs
9840b8fa
RW
1494 `(("pkg-config" ,pkg-config)))
1495 (propagated-inputs
0ed5554a 1496 `(("libsodium" ,libsodium)
1497 ("opus" ,opus)
1498 ("libvpx" ,libvpx)))
9840b8fa 1499 (home-page "https://tox.chat")
0ed5554a 1500 (synopsis "Library for the Tox encrypted messenger protocol")
1501 (description
9840b8fa
RW
1502 "Official fork of the C library implementation of the Tox encrypted
1503messenger protocol.")
1504 (license license:gpl3+)))
0ed5554a 1505
3b38d78e
EE
1506(define-public utox
1507 (package
1508 (name "utox")
f936f078 1509 (version "0.18.1")
3b38d78e
EE
1510 (source
1511 (origin
c11df2e8
RH
1512 (method git-fetch)
1513 (uri (git-reference
b0e7b699 1514 (url "https://github.com/uTox/uTox")
48c97c27 1515 (commit (string-append "v" version))
c11df2e8
RH
1516 (recursive? #t))) ;; Needed for 'minini' git submodule.
1517 (file-name (string-append name "-" version "-checkout"))
3b38d78e
EE
1518 (sha256
1519 (base32
f936f078 1520 "01rvlf94d4rkrygnnjak3cg16hrrqyi1rn9nx65y17qk2nbyh68g"))))
c413c6ad 1521 (build-system cmake-build-system)
3b38d78e 1522 (arguments
c11df2e8
RH
1523 `(#:configure-flags '("-DENABLE_TESTS=on")
1524 #:phases
3b38d78e 1525 (modify-phases %standard-phases
907ab9e8
RH
1526 (add-before 'build 'patch-absolute-filename-libgtk-3
1527 (lambda* (#:key inputs outputs #:allow-other-keys)
c11df2e8 1528 (substitute* "../source/src/xlib/gtk.c"
907ab9e8
RH
1529 (("libgtk-3.so")
1530 (string-append (assoc-ref inputs "gtk+")
1531 "/lib/libgtk-3.so")))))
1532 (add-after 'install 'wrap-program
1533 (lambda* (#:key inputs outputs #:allow-other-keys)
1534 (wrap-program (string-append (assoc-ref outputs "out")
1535 "/bin/utox")
1536 ;; For GtkFileChooserDialog.
1537 `("GSETTINGS_SCHEMA_DIR" =
1538 (,(string-append (assoc-ref inputs "gtk+")
1539 "/share/glib-2.0/schemas")))))))))
3b38d78e
EE
1540 (inputs
1541 `(("dbus" ,dbus)
1542 ("filteraudio" ,filteraudio)
1543 ("fontconfig" ,fontconfig)
1544 ("freetype" ,freetype)
c413c6ad 1545 ("c-toxcore" ,c-toxcore)
907ab9e8 1546 ("gtk+" ,gtk+)
3b38d78e
EE
1547 ("libvpx" ,libvpx)
1548 ("libx11" ,libx11)
1549 ("libxext" ,libxext)
1550 ("libxrender" ,libxrender)
1551 ("openal" ,openal)
1552 ("v4l-utils" ,v4l-utils)))
1e0ea1d8
LF
1553 (native-inputs
1554 `(("check" ,check)
1555 ("pkg-config" ,pkg-config)))
3b38d78e 1556 (synopsis "Lightweight Tox client")
c27b31e8 1557 (description
4f7698ba 1558 "uTox is a lightweight Tox client. Tox is a distributed and secure
3b38d78e 1559instant messenger with audio and video chat capabilities.")
4f7698ba 1560 (home-page "https://github.com/uTox/uTox")
29e83e1c 1561 (license license:gpl3)))
c413c6ad 1562
bc1c995e
AP
1563(define-public qtox
1564 (package
1565 (name "qtox")
884714c0 1566 (version "1.17.3")
2eb67681 1567 (source (origin
884714c0 1568 (method url-fetch)
e88745a6
EF
1569 (uri (string-append "https://github.com/qTox/qTox/releases"
1570 "/download/v" version
1571 "/v" version ".tar.gz"))
2eb67681
RW
1572 (sha256
1573 (base32
884714c0 1574 "11n7si9wdpf80iwkvbspp14dh5jrwm7hxkj8vqhn5pkc48c5bh9j"))
2eb67681
RW
1575 (file-name (string-append name "-" version ".tar.gz"))))
1576 (build-system cmake-build-system)
1577 (arguments
1578 '(#:phases
1579 (modify-phases %standard-phases
1580 (add-after 'unpack 'fix-reproducibility-issues
1581 (lambda _
1582 (substitute* "src/main.cpp"
1583 (("__DATE__") "\"\"")
1584 (("__TIME__") "\"\"")
1585 (("TIMESTAMP") "\"\""))
dab03baa 1586 #t))
bd89d898
RAM
1587 (add-after 'unpack 'disable-network-tests
1588 (lambda _
1589 ;; These tests require network access.
1590 (substitute* "cmake/Testing.cmake"
1591 (("auto_test\\(core core\\)") "# auto_test(core core)")
1592 (("auto_test\\(net bsu\\)") "# auto_test(net bsu)"))
1593 #t))
dab03baa
DNB
1594 ;; Ensure that icons are found at runtime.
1595 (add-after 'install 'wrap-executable
1596 (lambda* (#:key inputs outputs #:allow-other-keys)
1597 (let ((out (assoc-ref outputs "out")))
1598 (wrap-program (string-append out "/bin/qtox")
1599 `("QT_PLUGIN_PATH" prefix
1600 ,(list (string-append (assoc-ref inputs "qtsvg")
1601 "/lib/qt5/plugins/"))))))))))
bc1c995e 1602 (inputs
7a426eef 1603 `(("ffmpeg" ,ffmpeg)
dab03baa 1604 ("filteraudio" ,filteraudio)
bc1c995e
AP
1605 ("glib" ,glib)
1606 ("gtk+" ,gtk+-2)
1607 ("libsodium" ,libsodium)
2eb67681 1608 ("c-toxcore" ,c-toxcore)
bc1c995e
AP
1609 ("libvpx" ,libvpx)
1610 ("libxscrnsaver" ,libxscrnsaver)
1611 ("libx11" ,libx11)
3d7a1596
RH
1612 ("libexif" ,libexif)
1613 ("sqlite" ,sqlite)
bc1c995e
AP
1614 ("openal" ,openal)
1615 ("qrencode" ,qrencode)
2eb67681
RW
1616 ("qtbase" ,qtbase)
1617 ("qtsvg" ,qtsvg)
bc1c995e
AP
1618 ("sqlcipher" ,sqlcipher)))
1619 (native-inputs
1620 `(("pkg-config" ,pkg-config)
2eb67681 1621 ("qmake" ,qttools)))
bc1c995e
AP
1622 (home-page "https://qtox.github.io/")
1623 (synopsis "Tox chat client using Qt")
1624 (description "qTox is a Tox client that follows the Tox design
1625guidelines. It provides an easy to use application that allows you to
1626connect with friends and family without anyone else listening in.")
1627 (license license:gpl3+)))
3b38d78e 1628
c788c5fe
JD
1629(define-public ytalk
1630 (package
1631 (name "ytalk")
1632 (version "3.3.0")
1633 (source
1634 (origin
1635 (method url-fetch)
1636 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1637 version ".tar.gz"))
1638 (sha256
1639 (base32
1640 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1641 (build-system gnu-build-system)
1642 (inputs
1643 `(("ncurses" ,ncurses)))
898dc494 1644 (home-page "https://ytalk.ourproject.org")
c788c5fe
JD
1645 (synopsis "Multi-user chat program")
1646 (description "Ytalk is a replacement for the BSD talk program. Its main
1647advantage is the ability to communicate with any arbitrary number of users at
1648once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1649with several different talk daemons at the same time.")
1650 (license license:gpl2+)))
1651
3973e137 1652(define-public gloox
1653 (package
1654 (name "gloox")
35199959 1655 (version "1.0.24")
3973e137 1656 (source
1657 (origin
1658 (method url-fetch)
1659 (uri (string-append "https://camaya.net/download/gloox-"
1660 version ".tar.bz2"))
1661 (sha256
35199959 1662 (base32 "1jgrd07qr9jvbb5hcmhrqz4w4lvwc51m30jls1fgxf1f5az6455f"))))
3973e137 1663 (build-system gnu-build-system)
1664 (inputs
1665 `(("libidn" ,libidn)
1666 ("gnutls" ,gnutls)
1667 ("zlib" ,zlib)))
1668 (native-inputs
1669 `(("pkg-config" ,pkg-config)))
1670 (synopsis "Portable high-level Jabber/XMPP library for C++")
1671 (description
1672 "gloox is a full-featured Jabber/XMPP client library,
1673written in ANSI C++. It makes writing spec-compliant clients easy
1674and allows for hassle-free integration of Jabber/XMPP functionality
1675into existing applications.")
1676 (home-page "https://camaya.net/gloox")
1677 (license license:gpl3)))
c788c5fe 1678
ebfc2ecc 1679(define-public perl-net-psyc
1680 (package
1681 (name "perl-net-psyc")
3fa013af 1682 (version "1.3")
ebfc2ecc 1683 (source
1684 (origin
1685 (method url-fetch)
85b9ae93 1686 (uri (string-append "https://perl.psyc.eu/"
ebfc2ecc 1687 "perlpsyc-" version ".zip"))
1688 (file-name (string-append name "-" version ".zip"))
1689 (sha256
1690 (base32
3fa013af 1691 "0vsjclglkwgbyd9m5ad642fyysxw2x725nhq4r2m9pvqaq6s5yf2"))))
ebfc2ecc 1692 (build-system perl-build-system)
3fa013af
RW
1693 (native-inputs
1694 `(("unzip" ,unzip)))
ebfc2ecc 1695 (inputs
1696 `(("perl-curses" ,perl-curses)
1697 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1698 (arguments
1699 `(#:phases
1700 (modify-phases %standard-phases
1701 (delete 'configure) ; No configure script
1702 ;; There is a Makefile, but it does not install everything
1703 ;; (leaves out psycion) and says
1704 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1705 (replace 'build
3fa013af 1706 (lambda _ (invoke "make" "manuals")))
ebfc2ecc 1707 (replace 'install
1708 (lambda* (#:key outputs #:allow-other-keys)
1709 (let* ((out (assoc-ref outputs "out"))
1710 (doc (string-append out "/share/doc/perl-net-psyc"))
1711 (man1 (string-append out "/share/man/man1"))
1712 (man3 (string-append out "/share/man/man3"))
1713 (bin (string-append out "/bin"))
1714 (libpsyc (string-append out "/lib/psyc/ion"))
1715 (libperl (string-append out "/lib/perl5/site_perl/"
1716 ,(package-version perl))))
1717
1718 (copy-recursively "lib/perl5" libperl)
1719 (copy-recursively "lib/psycion" libpsyc)
1720 (copy-recursively "bin" bin)
1721 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1722 (copy-recursively "contrib" (string-append doc "/contrib"))
1723 (copy-recursively "hooks" (string-append doc "/hooks"))
1724 (copy-recursively "sdj" (string-append doc "/sdj"))
1725 (install-file "README.txt" doc)
1726 (install-file "TODO.txt" doc)
1727 (copy-recursively "share/man/man1" man1)
1728 (copy-recursively "share/man/man3" man3)
1729 #t)))
1730 (add-after 'install 'wrap-programs
1731 (lambda* (#:key outputs #:allow-other-keys)
1732 ;; Make sure all executables in "bin" find the Perl modules
1733 ;; provided by this package at runtime.
1734 (let* ((out (assoc-ref outputs "out"))
1735 (bin (string-append out "/bin/"))
1736 (path (getenv "PERL5LIB")))
1737 (for-each (lambda (file)
1738 (wrap-program file
1739 `("PERL5LIB" ":" prefix (,path))))
1740 (find-files bin "\\.*$"))
1741 #t))))))
1742 (description
1743 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1744Gtk2 event loops. This package includes 12 applications and additional scripts:
85b9ae93 1745psycion (a @uref{https://about.psyc.eu,PSYC} chat client), remotor (a control console
ebfc2ecc 1746for @uref{https://torproject.org,tor} router) and many more.")
1747 (synopsis "Perl implementation of PSYC protocol")
85b9ae93 1748 (home-page "https://perl.psyc.eu")
ebfc2ecc 1749 (license (list license:gpl2
2f3108ad 1750 license:perl-license
ebfc2ecc 1751 ;; contrib/irssi-psyc.pl:
1752 license:public-domain
1753 ;; bin/psycplay states AGPL with no version:
1754 license:agpl3+))))
1755
1756(define-public libpsyc
1757 (package
1758 (name "libpsyc")
1759 (version "20160913")
1760 (source (origin
1761 (method url-fetch)
1762 (uri (string-append "http://www.psyced.org/files/"
1763 name "-" version ".tar.xz"))
1764 (sha256
1765 (base32
1766 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1767 (build-system gnu-build-system)
1768 (native-inputs
1769 `(("perl" ,perl)
1770 ("netcat" ,netcat)
1771 ("procps" ,procps)))
1772 (arguments
1773 `(#:make-flags
1774 (list "CC=gcc"
1775 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1776 #:phases
1777 (modify-phases %standard-phases
1778 ;; The rust bindings are the only ones in use, the lpc bindings
1779 ;; are in psyclpc. The other bindings are not used by anything,
1780 ;; the chances are high that the bindings do not even work,
1781 ;; therefore we do not include them.
1782 ;; TODO: Get a cargo build system in Guix.
1783 (delete 'configure)))) ; no configure script
85b9ae93 1784 (home-page "https://about.psyc.eu/libpsyc")
ebfc2ecc 1785 (description
1786 "@code{libpsyc} is a PSYC library in C which implements
1787core aspects of PSYC, useful for all kinds of clients and servers
1788including psyced.")
1789 (synopsis "PSYC library in C")
1790 (license license:agpl3+)))
1791
cf3678df 1792;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
ebfc2ecc 1793(define-public psyclpc
1794 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1795 (revision "2"))
1796 (package
1797 (name "psyclpc")
1798 (version (string-append "20160821-" revision "." (string-take commit 7)))
1799 (source (origin
1800 (method git-fetch)
1801 (uri (git-reference
1802 (url "git://git.psyced.org/git/psyclpc")
1803 (commit commit)))
1804 (file-name (string-append name "-" version "-checkout"))
1805 (sha256
1806 (base32
1807 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1808 (build-system gnu-build-system)
1809 (arguments
1810 `(#:tests? #f ; There are no tests/checks.
1811 #:configure-flags
1812 ;; If you have questions about this part, look at
1813 ;; "src/settings/psyced" and the ebuild.
1814 (list
1815 "--enable-use-tls=yes"
1816 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1817 (string-append "--prefix="
1818 (assoc-ref %outputs "out"))
1819 ;; src/Makefile: Set MUD_LIB to the directory which contains
1820 ;; the mud data. defaults to MUD_LIB = @libdir@
1821 (string-append "--libdir="
1822 (assoc-ref %outputs "out")
1823 "/opt/psyced/world")
1824 (string-append "--bindir="
1825 (assoc-ref %outputs "out")
1826 "/opt/psyced/bin")
1827 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1828 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1829 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1830 (string-append "--libexecdir="
1831 (assoc-ref %outputs "out")
1832 "/opt/psyced/run"))
1833 #:phases
1834 (modify-phases %standard-phases
1835 (add-before 'configure 'chdir-to-src
1836 ;; We need to pass this as env variables
1837 ;; and manually change the directory.
1838 (lambda _
1839 (chdir "src")
1840 (setenv "CONFIG_SHELL" (which "sh"))
1841 (setenv "SHELL" (which "sh"))
1842 #t)))
1843 #:make-flags (list "install-all")))
1844 (inputs
1845 `(("zlib" ,zlib)
e7e315c0 1846 ("openssl" ,openssl-1.0)
ebfc2ecc 1847 ("pcre" ,pcre)))
1848 (native-inputs
1849 `(("pkg-config" ,pkg-config)
1850 ("bison" ,bison)
1851 ("gettext" ,gettext-minimal)
1852 ("help2man" ,help2man)
1853 ("autoconf" ,autoconf)
1854 ("automake" ,automake)))
1855 (home-page "http://lpc.psyc.eu/")
1856 (synopsis "psycLPC is a multi-user network server programming language")
1857 (description
1858 "LPC is a bytecode language, invented to specifically implement
1859multi user virtual environments on the internet. This technology is used for
1860MUDs and also the psyced implementation of the Protocol for SYnchronous
1861Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1862many bug fixes.")
1863 (license license:gpl2))))
1864
fdfb4b96 1865(define-public loudmouth
1866 (package
1867 (name "loudmouth")
866e2b12 1868 (version "1.5.4")
fdfb4b96 1869 (source
1870 (origin
1871 (method url-fetch)
1872 (uri (string-append "https://mcabber.com/files/loudmouth/"
1873 name "-" version ".tar.bz2"))
1874 (sha256
1875 (base32
866e2b12 1876 "03adv5xc84l9brcx0dpyqyffmsclans8yfrpnd357k6x3wfckjri"))))
fdfb4b96 1877 (build-system gnu-build-system)
c00b5be7 1878 (outputs '("out" "doc"))
675086ad
RG
1879 (arguments
1880 `(#:configure-flags
1881 (list
c00b5be7
RG
1882 "--disable-static"
1883 "--enable-gtk-doc"
1884 (string-append "--with-html-dir="
1885 (assoc-ref %outputs "doc")
1886 "/share/gtk-doc/html"))
675086ad
RG
1887 #:make-flags
1888 (list
1889 "CFLAGS=-Wno-error=all")))
fdfb4b96 1890 (inputs
1891 `(("glib" ,glib)
1892 ("gnutls" ,gnutls)
fcd984d7 1893 ("krb5" ,mit-krb5)
fdfb4b96 1894 ("libidn" ,libidn)))
1895 (native-inputs
1896 `(("pkg-config" ,pkg-config)
1897 ("check" ,check)
675086ad 1898 ("glib" ,glib "bin") ; gtester
fdfb4b96 1899 ("gtk-doc" ,gtk-doc)))
1900 (home-page "https://mcabber.com/")
1901 (description
1902 "Loudmouth is a lightweight and easy-to-use C library for programming
1903with the XMPP (formerly known as Jabber) protocol. It is designed to be
1904easy to get started with and yet extensible to let you do anything the XMPP
1905protocol allows.")
1906 (synopsis "Asynchronous XMPP library")
1907 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1908 (license license:lgpl2.0+)))
1909
cd4a232d 1910(define-public mcabber
1911 (package
1912 (name "mcabber")
5e69fcf4 1913 (version "1.1.2")
cd4a232d 1914 (source
1915 (origin
1916 (method url-fetch)
1917 (uri (string-append "https://mcabber.com/files/"
1918 name "-" version ".tar.bz2"))
1919 (sha256
5e69fcf4 1920 (base32 "0q1i5acyghsmzas88qswvki8kkk2nfpr8zapgnxbcd3lwcxl38f4"))))
cd4a232d 1921 (build-system gnu-build-system)
1922 (arguments
a3c675ee
RG
1923 `(#:configure-flags
1924 (list
1925 "--disable-static"
1926 "--enable-otr"
703005e8 1927 "--enable-enchant"
a3c675ee 1928 "--enable-aspell")))
cd4a232d 1929 (inputs
1930 `(("gpgme" ,gpgme)
1931 ("libotr" ,libotr)
1932 ("aspell" ,aspell)
703005e8 1933 ("enchant" ,enchant-1.6)
cd4a232d 1934 ("libidn" ,libidn)
1935 ("glib" ,glib)
1936 ("ncurses" ,ncurses)
1937 ("loudmouth" ,loudmouth)))
1938 (native-inputs
7464c333
RG
1939 `(("perl" ,perl)
1940 ("pkg-config" ,pkg-config)
1941 ("python" ,python-wrapper)))
cd4a232d 1942 (home-page "https://mcabber.com")
1943 (description
1944 "Mcabber is a small XMPP (Jabber) console client, which includes features
1945such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1946command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1947support, and more.")
1948 (synopsis "Small XMPP console client")
1949 (license license:gpl2+)))
1950
c631233f
CL
1951(define-public freetalk
1952 (package
1953 (name "freetalk")
1954 (version "4.1")
1955 (source (origin
1956 (method url-fetch)
1957 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1958 version ".tar.gz"))
1959 (sha256
1960 (base32
1961 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1962 (build-system gnu-build-system)
1963 (arguments
1964 `(#:phases
1965 (modify-phases %standard-phases
c631233f
CL
1966 ;; For 'system' commands in Scheme code.
1967 (add-after 'install 'wrap-program
1968 (lambda* (#:key inputs outputs #:allow-other-keys)
1969 (let* ((out (assoc-ref outputs "out"))
1970 (bash (assoc-ref inputs "bash"))
1971 (coreutils (assoc-ref inputs "coreutils"))
1972 (less (assoc-ref inputs "less")))
1973 (wrap-program (string-append out "/bin/freetalk")
1974 `("PATH" ":" prefix
1975 ,(map (lambda (dir)
1976 (string-append dir "/bin"))
1977 (list bash coreutils less))))
1978 #t))))))
1979 (native-inputs
1980 `(("autoconf" ,autoconf)
1981 ("automake" ,automake)
1982 ("pkg-config" ,pkg-config)
1983 ("texinfo" ,texinfo)))
1984 (inputs
1985 `(("bash" ,bash)
1986 ("glib" ,glib)
1987 ("guile" ,guile-2.0)
1988 ("less" ,less)
1989 ("loudmouth" ,loudmouth)
1990 ("readline" ,readline)))
1991 (synopsis "Extensible console-based Jabber client")
1992 (description
1993 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
1994the Readline library to handle input, so it features convenient navigation of
1995text as well as tab-completion of buddy names, commands and English words. It
1996is also scriptable and extensible via Guile.")
6fd52309 1997 (home-page "https://www.gnu.org/software/freetalk/")
c631233f
CL
1998 (license license:gpl3+)))
1999
13292ee5
MM
2000(define-public libmesode
2001 (package
2002 (name "libmesode")
8ce42fec 2003 (version "0.10.1")
13292ee5 2004 (source (origin
c60d5a25
TGR
2005 (method git-fetch)
2006 (uri (git-reference
266a3728 2007 (url "https://github.com/profanity-im/libmesode")
c60d5a25
TGR
2008 (commit version)))
2009 (file-name (git-file-name name version))
13292ee5
MM
2010 (sha256
2011 (base32
8ce42fec 2012 "1bxnkhrypgv41qyy1n545kcggmlw1hvxnhwihijhhcf2pxd2s654"))))
13292ee5 2013 (build-system gnu-build-system)
93dc9dc3
RG
2014 (arguments
2015 `(#:configure-flags (list "--disable-static")
2016 #:phases
2017 (modify-phases %standard-phases
2018 (add-after 'unpack 'patch-make
2019 (lambda _
2020 (substitute* "Makefile.am"
2021 (("'\\^xmpp_'") "'.'"))
2022 #t)))))
13292ee5
MM
2023 (inputs
2024 `(("expat" ,expat)
2025 ("openssl" ,openssl)))
2026 (native-inputs
2027 `(("autoconf" ,autoconf)
2028 ("automake" ,automake)
2029 ("libtool" ,libtool)
2030 ("pkg-config" ,pkg-config)))
2031 (synopsis "C library for writing XMPP clients")
2032 (description "Libmesode is a fork of libstrophe for use with Profanity
2033XMPP Client. In particular, libmesode provides extra TLS functionality such as
2034manual SSL certificate verification.")
266a3728 2035 (home-page "https://github.com/profanity/libmesode")
6bf449e8 2036 ;; Dual-licensed.
13292ee5
MM
2037 (license (list license:gpl3+ license:x11))))
2038
781d3b07
MM
2039(define-public libstrophe
2040 (package
2041 (name "libstrophe")
22f303d7 2042 (version "0.10.1")
3368917c
TGR
2043 (source
2044 (origin
2045 (method git-fetch)
2046 (uri (git-reference
b0e7b699 2047 (url "https://github.com/strophe/libstrophe")
3368917c
TGR
2048 (commit version)))
2049 (file-name (git-file-name name version))
2050 (sha256
22f303d7 2051 (base32 "11d341avsfr0z4lq15cy5dkmff6qpy91wkgzdpfdy31l27pa1g79"))))
781d3b07 2052 (build-system gnu-build-system)
1be08b1e
RG
2053 (arguments
2054 `(#:configure-flags (list "--disable-static")
2055 #:phases
2056 (modify-phases %standard-phases
2057 (add-after 'unpack 'patch-make
2058 (lambda _
2059 (substitute* "Makefile.am"
2060 (("'\\^xmpp_'") "'.'"))
2061 #t)))))
781d3b07
MM
2062 (inputs
2063 `(("expat" ,expat)
2064 ("openssl" ,openssl)))
2065 (native-inputs
2066 `(("autoconf" ,autoconf)
2067 ("automake" ,automake)
2068 ("libtool" ,libtool)
2069 ("pkg-config" ,pkg-config)))
2070 (synopsis "C library for writing XMPP clients")
2071 (description "Libstrophe is a minimal XMPP library written in C. It has
2072almost no external dependencies, only an XML parsing library (expat or libxml
2073are both supported).")
2074 (home-page "http://strophe.im/libstrophe")
75d9d8af 2075 ;; Dual-licensed.
781d3b07
MM
2076 (license (list license:gpl3+ license:x11))))
2077
a829c650 2078(define-public profanity
71adb422
TLC
2079 (package
2080 (name "profanity")
94fe0156 2081 (version "0.10.0")
d257697d
RG
2082 (source
2083 (origin
2084 (method url-fetch)
2085 (uri
2086 (string-append "https://profanity-im.github.io/profanity-"
2087 version ".tar.gz"))
2088 (sha256
2089 (base32
94fe0156 2090 "137z77514fgj2dk13d12g4jrn6gs5k85nwrk1r1kiv7rj0jy61aa"))))
a3f6f27b 2091 (build-system glib-or-gtk-build-system)
6bb93af8 2092 (arguments
d257697d
RG
2093 `(#:configure-flags
2094 (list
22ba2bb8 2095 "--disable-static"
d257697d 2096 "--enable-notifications"
d0e85b80 2097 "--enable-python-plugins"
d257697d 2098 "--enable-c-plugins"
d0e85b80 2099 "--enable-plugins"
d257697d
RG
2100 "--enable-otr"
2101 "--enable-pgp"
2102 "--enable-omemo"
d0e85b80 2103 "--enable-icons-and-clipboard")))
d257697d
RG
2104 (native-inputs
2105 `(("autoconf" ,autoconf)
2106 ("autoconf-archive" ,autoconf-archive)
2107 ("automake" ,automake)
2108 ("cmocka" ,cmocka)
d257697d 2109 ("libtool" ,libtool)
d257697d 2110 ("pkg-config" ,pkg-config)))
71adb422
TLC
2111 (inputs
2112 `(("curl" ,curl)
2113 ("expat" ,expat)
2114 ("glib" ,glib)
2115 ("gpgme" ,gpgme)
ca7535dd 2116 ("gtk+" ,gtk+-2)
dcfd7c7b 2117 ("libgcrypt" ,libgcrypt)
71adb422 2118 ("libmesode" ,libmesode)
ca7535dd 2119 ("libnotify" ,libnotify)
71adb422 2120 ("libotr" ,libotr)
ca7535dd 2121 ("libsignal-protocol-c" ,libsignal-protocol-c)
dcfd7c7b 2122 ;; ("libxss" ,libxss)
71adb422
TLC
2123 ("ncurses" ,ncurses)
2124 ("openssl" ,openssl)
d0e85b80 2125 ("python" ,python-wrapper)
d9dbab0b
TLC
2126 ("readline" ,readline)
2127 ("sqlite" ,sqlite)))
71adb422
TLC
2128 (synopsis "Console-based XMPP client")
2129 (description "Profanity is a console based XMPP client written in C
a829c650 2130using ncurses and libmesode, inspired by Irssi.")
3dfd73f0 2131 (home-page "https://profanity-im.github.io")
71adb422 2132 (license license:gpl3+)))
a829c650 2133
6fdbd86d
AI
2134(define-public libircclient
2135 (package
2136 (name "libircclient")
b619b7f6 2137 (version "1.10")
6fdbd86d
AI
2138 (source
2139 (origin
2140 (method url-fetch)
2141 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
2142 version "/libircclient-" version ".tar.gz"))
2143 (sha256
2144 (base32
b619b7f6 2145 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
6fdbd86d
AI
2146 (build-system gnu-build-system)
2147 (inputs
2148 `(("openssl" ,openssl)))
2149 (arguments
2150 `(#:configure-flags
2151 (list (string-append "--libdir="
2152 (assoc-ref %outputs "out") "/lib")
2153 "--enable-shared"
2154 "--enable-ipv6"
2155 "--enable-openssl")
b619b7f6 2156 #:tests? #f)) ; no test suite
6fdbd86d
AI
2157 (home-page "https://www.ulduzsoft.com/libircclient/")
2158 (synopsis "Library implementing the client IRC protocol")
2159 (description "Libircclient is a library which implements the client IRC
2160protocol. It is designed to be small, fast, portable and compatible with the
2161RFC standards as well as non-standard but popular features. It can be used for
2162building the IRC clients and bots.")
2163 (license license:lgpl3+)))
2164
61f81618
TF
2165(define-public toxic
2166 (package
2167 (name "toxic")
c2ea080e 2168 (version "0.8.4")
0c273c50
TGR
2169 (source
2170 (origin
2171 (method git-fetch)
2172 (uri (git-reference
b0e7b699 2173 (url "https://github.com/JFreegman/toxic")
0c273c50
TGR
2174 (commit (string-append "v" version))))
2175 (sha256
c2ea080e 2176 (base32 "0p1cmj1kyp506y5xm04mhlznhf5wcylvgsn6b307ms91vjqs3fg2"))
0c273c50 2177 (file-name (git-file-name name version))))
61f81618
TF
2178 (build-system gnu-build-system)
2179 (arguments
1987f95f 2180 `(#:tests? #f ; no tests
61f81618
TF
2181 #:make-flags
2182 (list
2183 "CC=gcc"
2184 (string-append "PREFIX="
2185 (assoc-ref %outputs "out")))
2186 #:phases
2187 (modify-phases %standard-phases
2188 (delete 'configure)
2189 (add-before 'build 'enable-python-scripting
2190 (lambda _
93600aae
MB
2191 ;; XXX: For compatibility with Python 3.8, adjust python3-config
2192 ;; invokation to include --embed; see
2193 ;; <https://github.com/JFreegman/toxic/issues/533>.
2194 (substitute* "cfg/checks/python.mk"
2195 (("python3-config --ldflags")
2196 "python3-config --ldflags --embed"))
61f81618
TF
2197 (setenv "ENABLE_PYTHON" "1")
2198 #t)))))
2199 (inputs
2200 `(("c-toxcore" ,c-toxcore)
2201 ("curl" ,curl)
2202 ("freealut" ,freealut)
1987f95f 2203 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
61f81618
TF
2204 ("libconfig" ,libconfig)
2205 ("libnotify" ,libnotify)
2206 ("libpng" ,libpng)
2207 ("libvpx" ,libvpx)
2208 ("libx11" ,libx11)
2209 ("ncurses" ,ncurses)
2210 ("openal" ,openal)
2211 ("python" ,python)
2212 ("qrencode" ,qrencode)))
2213 (native-inputs
2214 `(("pkg-config" ,pkg-config)))
2215 (home-page "https://github.com/JFreegman/toxic")
2216 (synopsis "Tox chat client using ncurses")
2217 (description "Toxic is a console-based instant messaging client, using
2218c-toxcore and ncurses. It provides audio calls, sound and desktop
2219notifications, and Python scripting support.")
2220 (license license:gpl3+)))
2221
9a3da985
AI
2222(define-public libqmatrixclient
2223 (package
2224 (name "libqmatrixclient")
e9c6aed1 2225 (version "0.5.3.2")
9a3da985
AI
2226 (source
2227 (origin
c6b60d30
EF
2228 (method git-fetch)
2229 (uri (git-reference
e9c6aed1 2230 (url "https://github.com/quotient-im/libQuotient")
0395c533 2231 (commit version)))
c6b60d30 2232 (file-name (git-file-name name version))
9a3da985 2233 (sha256
e9c6aed1 2234 (base32 "0gkwr3yw6k2m0j8cc085b5p2q788rf5nhp1p5hc5d55pc7mci2qs"))))
9a3da985
AI
2235 (build-system cmake-build-system)
2236 (inputs
0395c533
TGR
2237 `(("qtbase" ,qtbase)
2238 ("qtmultimedia" ,qtmultimedia)))
9a3da985
AI
2239 (arguments
2240 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
0395c533 2241 #:tests? #f)) ; no tests
9a3da985
AI
2242 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
2243 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
2244 (description "libqmatrixclient is a Qt5 library to write clients for the
2245Matrix instant messaging protocol. Quaternion is the reference client
2246implementation. Quaternion and libqmatrixclient together form the
2247QMatrixClient project.")
2248 (license license:lgpl2.1+)))
e81c952a 2249
57163f91 2250(define-public mtxclient
2251 (package
2252 (name "mtxclient")
c28c408e 2253 (version "0.3.1")
57163f91 2254 (source
2255 (origin
2256 (method git-fetch)
2257 (uri (git-reference
b0e7b699 2258 (url "https://github.com/Nheko-Reborn/mtxclient")
57163f91 2259 (commit (string-append "v" version))))
2260 (file-name (git-file-name name version))
2261 (sha256
c28c408e 2262 (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x"))))
57163f91 2263 (arguments
2264 `(#:configure-flags
2265 (list
2266 ;; Disable example binaries (not installed)
2267 "-DBUILD_LIB_EXAMPLES=OFF")
2268 #:phases
2269 (modify-phases %standard-phases
2270 (add-before 'configure 'disable-network-tests
2271 (lambda _
2272 (substitute* "CMakeLists.txt"
1f49f5c1 2273 (("add_test\\((BasicConnectivity|ClientAPI|MediaAPI|Encryption|Pushrules)")
57163f91 2274 "# add_test"))
2275 #t))
2276 (add-before 'configure 'set-home
2277 (lambda _
2278 ;; Tries to create package registry file
2279 ;; So, set HOME.
2280 (setenv "HOME" "/tmp")
2281 #t)))))
2282 (build-system cmake-build-system)
2283 (inputs
2284 `(("boost" ,boost)
2285 ("json-modern-cxx" ,json-modern-cxx)
2286 ("libolm" ,libolm)
2287 ("libsodium" ,libsodium)
2288 ("openssl" ,openssl)
2289 ("spdlog" ,spdlog)
2290 ("zlib" ,zlib)))
2291 (native-inputs
2292 `(("googletest" ,googletest)
2293 ("pkg-config" ,pkg-config)))
2294 (home-page "https://github.com/Nheko-Reborn/mtxclient")
2295 (synopsis "Client API library for the Matrix protocol")
2296 (description "@code{mtxclient} is a C++ library that implements client API
2297for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
2298 (license license:expat)))
2299
b40f4052 2300(define-public nheko
2301 (package
2302 (name "nheko")
77b5498f 2303 (version "0.7.2")
b40f4052 2304 (source
2305 (origin
2306 (method git-fetch)
2307 (uri (git-reference
b0e7b699 2308 (url "https://github.com/Nheko-Reborn/nheko")
b40f4052 2309 (commit (string-append "v" version))))
2310 (file-name (git-file-name name version))
2311 (sha256
77b5498f 2312 (base32 "1cbhgaf9klgxdirrxj571fqwspm0byl75c1xc40l727a6qswvp7s"))))
b40f4052 2313 (arguments
2314 `(#:tests? #f ;no test target
2315 #:configure-flags
2316 (list
2317 "-DCMAKE_BUILD_TYPE=Release"
2318 "-DCMAKE_CXX_FLAGS=-fpermissive")
2319 #:phases
2320 (modify-phases %standard-phases
2321 (add-after 'unpack 'remove-Werror
2322 (lambda _
2323 (substitute* "CMakeLists.txt"
2324 (("-Werror") ""))
2325 #t))
2326 (add-after 'unpack 'fix-determinism
2327 (lambda _
2328 ;; Make Qt deterministic.
2329 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
2330 #t)))))
2331 (build-system qt-build-system)
2332 (inputs
2333 `(("boost" ,boost)
2334 ("cmark" ,cmark)
2335 ("json-modern-cxx" ,json-modern-cxx)
2336 ("libolm" ,libolm)
2337 ("lmdb" ,lmdb)
2338 ("lmdbxx" ,lmdbxx)
2339 ("mtxclient" ,mtxclient)
2340 ("openssl" ,openssl)
2341 ("qtbase" ,qtbase)
76623b67
JB
2342 ("qtdeclarative" ,qtdeclarative)
2343 ("qtgraphicaleffects" ,qtgraphicaleffects)
b40f4052 2344 ("qtmultimedia" ,qtmultimedia)
76623b67
JB
2345 ("qtquickcontrols2" ,qtquickcontrols2)
2346 ("qtsvg" ,qtsvg)
b40f4052 2347 ("spdlog" ,spdlog)
2348 ("tweeny" ,tweeny)
2349 ("zlib" ,zlib)))
2350 (native-inputs
2351 `(("pkg-config" ,pkg-config)
2352 ("qtlinguist" ,qttools)))
2353 (home-page "https://github.com/Nheko-Reborn/nheko")
2354 (synopsis "Desktop client for Matrix using Qt and C++14")
2355 (description "@code{Nheko} want to provide a native desktop app for the
2356Matrix protocol that feels more like a mainstream chat app and less like an IRC
2357client.
2358
2359There is support for:
2360@itemize
2361@item E2E encryption (text messages only: attachments are currently sent unencrypted).
2362@item User registration.
2363@item Creating, joining & leaving rooms.
2364@item Sending & receiving invites.
2365@item Sending & receiving files and emoji.
2366@item Typing notifications.
2367@item Username auto-completion.
2368@item Message & mention notifications.
2369@item Redacting messages.
2370@item Read receipts.
2371@item Basic communities support.
2372@item Room switcher (@key{ctrl-K}).
2373@item Light, Dark & System themes.
2374@end itemize")
2375 (license license:gpl3+)))
2376
e81c952a
AI
2377(define-public quaternion
2378 (package
2379 (name "quaternion")
16743da2 2380 (version "0.0.9.4f")
e86e0493 2381 (outputs '("out" "debug"))
e81c952a
AI
2382 (source
2383 (origin
6f066db1
EF
2384 (method git-fetch)
2385 (uri (git-reference
35d1ac7f 2386 (url "https://github.com/quotient-im/Quaternion")
1e9b956e 2387 (commit version)))
6f066db1 2388 (file-name (git-file-name name version))
e81c952a 2389 (sha256
16743da2 2390 (base32 "1q9ddz4rs02a0w3lwrsjnh59khv38cq9f0kv09vnwvazvayn87ck"))))
34e31612 2391 (build-system qt-build-system)
e81c952a
AI
2392 (inputs
2393 `(("libqmatrixclient" ,libqmatrixclient)
29739890 2394 ("qtbase" ,qtbase)
c7ac8e36 2395 ("qtdeclarative" ,qtdeclarative)
1e9b956e 2396 ("qtmultimedia" ,qtmultimedia)
c7ac8e36 2397 ("qtquickcontrols" ,qtquickcontrols)
f920a64a 2398 ("qtquickcontrols2" ,qtquickcontrols2)
c7ac8e36 2399 ("qtsvg" ,qtsvg)
60a10a11 2400 ("qttools" ,qttools)
16743da2 2401 ("xdg-utils" ,xdg-utils)))
e81c952a 2402 (arguments
34e31612 2403 `(#:tests? #f)) ; no tests
e81c952a
AI
2404 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
2405 (synopsis "Graphical client for the Matrix instant messaging protocol")
2406 (description "Quaternion is a Qt5 desktop client for the Matrix instant
2407messaging protocol. It uses libqmatrixclient and is its reference client
8b660be1 2408implementation. Quaternion and libqmatrixclient together form the
e81c952a 2409QMatrixClient project.")
1e9b956e
TGR
2410 (license (list license:gpl3+ ; all source code
2411 license:lgpl3+)))) ; icons/breeze
e81c952a 2412
f65fdd95
TGR
2413(define-public hangups
2414 (package
2415 (name "hangups")
d3e2ad74 2416 (version "0.4.13")
f65fdd95
TGR
2417 (source
2418 (origin
2419 (method url-fetch)
2420 (uri (pypi-uri "hangups" version))
2421 (sha256
d3e2ad74 2422 (base32 "015g635vnrxk5lf9n80rdcmh6chv8kmla1k2j7m1iijijs519ngn"))))
f65fdd95
TGR
2423 (build-system python-build-system)
2424 (arguments
2425 `(#:phases
2426 (modify-phases %standard-phases
2427 (add-before 'build 'relax-dependencies
2428 ;; Relax overly strict package version specifications.
2429 (lambda _
2430 (substitute* "setup.py"
2323a38b
EF
2431 (("==") ">=")
2432 ((",<.*'") "'"))
29f205f7
EF
2433 #t))
2434 (replace 'check
2435 (lambda* (#:key tests? #:allow-other-keys)
2436 (when tests?
2437 (invoke "pytest" "hangups"))
f65fdd95
TGR
2438 #t)))))
2439 (propagated-inputs
2440 `(("python-aiohttp" ,python-aiohttp)
2441 ("python-appdirs" ,python-appdirs)
2442 ("python-async-timeout" ,python-async-timeout)
2443 ("python-configargparse" ,python-configargparse)
2444 ("python-mechanicalsoup" ,python-mechanicalsoup)
837547cb 2445 ("python-protobuf" ,python-protobuf-3.6)
f65fdd95
TGR
2446 ("python-readlike" ,python-readlike)
2447 ("python-reparser" ,python-reparser)
2448 ("python-requests" ,python-requests)
2449 ("python-urwid" ,python-urwid)))
4b27b09a
TGR
2450 (native-inputs
2451 `(("python-httpretty" ,python-httpretty)
2452 ("python-pytest" ,python-pytest)))
f65fdd95
TGR
2453 (home-page "https://hangups.readthedocs.io/")
2454 (synopsis "Instant messaging client for Google Hangouts")
2455 (description
2456 "Hangups is an instant messaging client for Google Hangouts. It includes
2457both a Python library and a reference client with a text-based user interface.
2458
2459Hangups is implements a reverse-engineered version of Hangouts' proprietary,
2460non-interoperable protocol, which allows it to support features like group
2461messaging that aren’t available to clients that connect over XMPP.")
2462 (license license:expat)))
2463
e9a04157
2464(define-public telegram-purple
2465 (package
2466 (name "telegram-purple")
c0fb663e 2467 (version "1.4.2")
e9a04157
2468 (home-page "https://github.com/majn/telegram-purple")
2469 (source (origin
2470 (method git-fetch)
2471 (uri (git-reference
2472 (url home-page)
2473 (commit (string-append "v" version))
2474 (recursive? #t)))
2475 (sha256
2476 (base32
c0fb663e 2477 "0imbzhhq9qbj6gvkckrnjhls2vvmmy8db7l6gsd7lng2pbfcn522"))
e9a04157
2478 (modules '((guix build utils)))
2479 (snippet
2480 '(begin
2481 (substitute* "Makefile.in"
2482 ;; By default these two directories point to Pidgin's own
2483 ;; prefix.
2484 (("^PLUGIN_DIR_PURPLE=.*")
2485 (string-append
2486 "exec_prefix := @exec_prefix@\n"
2487 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
2488 (("^DATA_ROOT_DIR_PURPLE=.*")
2489 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
2490
2491 ;; Honor sysconfdir instead of trying to write to /etc.
2492 (("DESTDIR\\)/etc/telegram-purple")
2493 "DESTDIR)@sysconfdir@/telegram-purple"))
2494 #t))
2495 (patches (search-patches "telegram-purple-adjust-test.patch"))
2496 (file-name (git-file-name name version))))
2497 (build-system gnu-build-system)
2498 (native-inputs
2499 `(("pkg-config" ,pkg-config)
79edfcf2 2500 ("gettext" ,gettext-minimal)
e9a04157
2501 ("which" ,which)))
2502 (inputs
2503 `(("pidgin" ,pidgin)
2504 ("libgcrypt" ,libgcrypt)
2505 ("libwebp" ,libwebp)
2506 ("glib" ,glib)
e9a04157
2507 ("gtk+" ,gtk+-2)
2508 ("zlib" ,zlib)))
2509 (arguments
2510 `(#:phases
2511 (modify-phases %standard-phases
2512 ;; We're using release tag for repository checkout - let's prepare
2513 ;; header defining GIT_COMMIT manually instead of running git to
2514 ;; identify version which is being compiled. Git repository
2515 ;; is removed anyway and only source code is kept.
2516 (add-after 'unpack 'prepare-commit.h
2517 (lambda _
2518 (with-output-to-file "./commit.h"
2519 (lambda ()
2520 (display
2521 (string-append "//generated by guix, use version instead of "
2522 "commit\n"
2523 "#ifndef GIT_COMMIT\n"
2524 "# define GIT_COMMIT \"v"
2525 ,version "\"\n"
2526 "#endif\n"))))
2527 #t))
2528 (add-before 'configure 'set-SHELL-variables
2529 ;; Set these environment variables so that 'tgl/configure' uses the
2530 ;; right shell and not /bin/sh.
2531 (lambda _
2532 (let ((bash (which "bash")))
2533 (setenv "SHELL" bash)
2534 (setenv "CONFIG_SHELL" bash)
2535 #t))))))
2536 (synopsis "Telegram messaging support for Pidgin")
2537 (description
2538 "Telegram-purple is a plugin for Libpurple, the communication library
2539used by the Pidgin instant messaging client, that adds support for the
2540Telegram messenger.")
2541
2542 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
2543 ;; itself is GPLv2+.
2544 (license license:gpl2+)))
2545
403604c3 2546(define-public tdlib
71cb686a
BG
2547 (package
2548 (name "tdlib")
2549 (version "1.7.0")
2550 (source (origin
2551 (method git-fetch)
2552 (uri (git-reference
2553 (url "https://github.com/tdlib/td")
2554 (commit (string-append "v" version))))
2555 (sha256
2556 (base32
2557 "0dfir57ljcn98mkg061c5642qb93wh2lm1n4nngpl3na9vvfk75i"))
2558 (file-name (git-file-name name version))))
2559 (build-system cmake-build-system)
2560 (arguments
2561 `(#:tests? #t
2562 #:configure-flags
2563 (list "-DCMAKE_BUILD_TYPE=Release"
2564 "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work.
2565 #:phases
2566 (modify-phases %standard-phases
2567 (add-after 'unpack 'remove-failing-tests
2568 (lambda _
2569 (substitute* "test/CMakeLists.txt"
2570 ;; The test cases are compiled into a distinct binary
2571 ;; which uses mtproto.cpp to attempt to connect to
2572 ;; a remote server. Removing this file from the sources
2573 ;; list disables those specific test cases.
2574 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") ""))
2575 #t)))))
2576 (native-inputs
2577 `(("gperf" ,gperf)
2578 ("openssl" ,openssl)
2579 ("zlib" ,zlib)
2580 ("php" ,php)
2581 ("doxygen" ,doxygen)))
2582 (synopsis "Cross-platform library for building Telegram clients")
2583 (description "Tdlib is a cross-platform library for creating custom
403604c3
BG
2584Telegram clients following the official Telegram API. It can be easily used
2585from almost any programming language with a C-FFI and features first-class
2586support for high performance Telegram Bot creation.")
71cb686a
BG
2587 (home-page "https://core.telegram.org/tdlib")
2588 (license license:boost1.0)))
403604c3 2589
593ef98a
JB
2590(define-public purple-mm-sms
2591 (package
2592 (name "purple-mm-sms")
2593 (version "0.1.4")
2594 (source (origin
2595 (method git-fetch)
2596 (uri (git-reference
2597 (url "https://source.puri.sm/Librem5/purple-mm-sms.git")
2598 (commit (string-append "v" version))))
2599 (file-name (git-file-name name version))
2600 (sha256
2601 (base32
2602 "1daf7zl8bhhm1szkgxflpqql69f2w9i9nlgf1n4p1nynxifz1bim"))))
2603 (build-system gnu-build-system)
2604 (arguments
2605 `(#:make-flags
2606 (let ((out (assoc-ref %outputs "out")))
2607 ;; Fix hardcoded paths
2608 (list (string-append "PREFIX=" out)
2609 (string-append "PLUGIN_DIR_PURPLE=" out "/lib/purple-2")
2610 (string-append "DATA_ROOT_DIR_PURPLE=" out "/share")))
2611 #:tests? #f ; no tests
2612 #:phases
2613 (modify-phases %standard-phases
2614 (delete 'configure))))
2615 (native-inputs
2616 `(("glib:bin" ,glib "bin")
2617 ("pkg-config" ,pkg-config)))
2618 (inputs
2619 `(("modem-manager" ,modem-manager)
2620 ("pidgin" ,pidgin)))
2621 (synopsis "Libpurple plugin for SMS via ModemManager")
2622 (description "Plugin for libpurple to allow sending SMS using ModemManager.")
2623 (home-page "https://source.puri.sm/Librem5/purple-mm-sms")
2624 (license license:gpl2+)))
d2618623
JB
2625
2626(define-public chatty
2627 (package
2628 (name "chatty")
b91236d9 2629 (version "0.1.17")
d2618623
JB
2630 (source (origin
2631 (method git-fetch)
2632 (uri (git-reference
2633 (url "https://source.puri.sm/Librem5/chatty.git")
2634 (commit (string-append "v" version))))
2635 (file-name (git-file-name name version))
2636 (sha256
2637 (base32
b91236d9 2638 "0ba1rw8a3vif9k3570hxjfm25vqys3vk3f6g8z5irklwq4bi6lmn"))))
d2618623
JB
2639 (build-system meson-build-system)
2640 (arguments
2641 '(#:phases
2642 (modify-phases %standard-phases
2643 (add-after 'unpack 'skip-updating-desktop-database
2644 (lambda _
2645 (substitute* "meson.build"
2646 (("meson.add_install_script.*") ""))
2647 #t)))))
2648 (native-inputs
2649 `(("gettext" ,gettext-minimal)
2650 ("glib:bin" ,glib "bin")
2651 ("pkg-config" ,pkg-config)))
2652 (inputs
2653 `(("feedbackd" ,feedbackd)
2654 ("folks" ,folks)
32530a66 2655 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
d2618623
JB
2656 ("libgcrypt" ,libgcrypt)
2657 ("libgee" ,libgee)
a790dfe8 2658 ("libhandy" ,libhandy-0.0)
d2618623
JB
2659 ("pidgin" ,pidgin)
2660 ("purple-mm-sms" ,purple-mm-sms)
2661 ("sqlite" ,sqlite)))
2662 (propagated-inputs
2663 `(("adwaita-icon-theme" ,adwaita-icon-theme)
2664 ("evolution-data-server" ,evolution-data-server)))
2665 (synopsis "Mobile client for XMPP and SMS messaging")
2666 (description "Chatty is a chat program for XMPP and SMS. It works on mobile
2667as well as on desktop platforms. It's based on libpurple and ModemManager.")
2668 (home-page "https://source.puri.sm/Librem5/chatty")
2669 (license license:gpl3+)))
2670
c3bbaea7
DM
2671(define-public mosquitto
2672 (package
2673 (name "mosquitto")
2674 (version "1.6.12")
2675 (source
2676 (origin
2677 (method url-fetch)
2678 (uri (string-append "https://mosquitto.org/files/source/mosquitto-"
2679 version ".tar.gz"))
2680 (sha256
2681 (base32
2682 "1yq7y329baa1ly488rw125c3mvsnsa7kjkik602xv1xpkz8p73al"))))
2683 (build-system cmake-build-system)
2684 (inputs
2685 `(("openssl" ,openssl)))
2686 (synopsis "Message broker")
2687 (description "This package provides Eclipse Mosquitto, a message broker
2688that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto
2689is lightweight and is suitable for use on all devices from low power single
2690board computers to full servers.
2691
2692The MQTT protocol provides a lightweight method of carrying out messaging
2693using a publish/subscribe model. This makes it suitable for Internet of
2694Things messaging such as with low power sensors or mobile devices such
2695as phones, embedded computers or microcontrollers.")
2696 (home-page "https://mosquitto.org/")
2697 ;; Dual licensed.
2698 (license (list license:epl1.0 license:edl1.0))))
2699
06bdb640
RG
2700(define-public movim-desktop
2701 (let ((commit "83d583b83629dbd2ec448da9a1ffd81f6c1fb295")
2702 (revision "3"))
2703 (package
2704 (name "movim-desktop")
2705 (version
2706 (git-version "0.14.0" revision commit))
2707 (source
2708 (origin
2709 (method git-fetch)
2710 (uri
2711 (git-reference
2712 (url "https://github.com/movim/movim_desktop")
2713 (commit commit)))
2714 (file-name (git-file-name name version))
2715 (sha256
2716 (base32 "1lsa3k3wx1d2lk0qs0k5jc5bmapnmpzwynprjf2wihh8c8y3iwlz"))))
2717 (build-system qt-build-system)
2718 (arguments
2719 `(#:tests? #f ; No target
2720 #:phases
2721 (modify-phases %standard-phases
2722 (add-after 'unpack 'patch
2723 (lambda* (#:key outputs #:allow-other-keys)
2724 (substitute* `("CMakeLists.txt" "movim.desktop")
2725 (("/usr")
2726 (assoc-ref outputs "out"))
2727 (("\"build")
2728 "\"../build"))
2729 #t)))))
2730 (inputs
2731 `(("qtbase" ,qtbase)
2732 ("qtdeclarative" ,qtdeclarative)
2733 ("qtwebchannel" ,qtwebchannel)))
2734 (propagated-inputs
2735 `(("qtwebengine" ,qtwebengine)))
2736 (home-page "https://movim.eu/")
2737 (synopsis "Desktop Application for Movim")
2738 (description
2739 "Movim-Desktop is a desktop application, relying on Qt, for the Movim
2740social and chat platform.")
2741 (license license:gpl3+))))
2742
b09967bc
RG
2743(define-public psi-plus
2744 (package
2745 (name "psi-plus")
927b8f24 2746 (version "1.5.1484")
b09967bc
RG
2747 (source
2748 (origin
2749 (method git-fetch)
2750 (uri
2751 (git-reference
2752 (url "https://github.com/psi-plus/psi-plus-snapshots")
2753 (commit version)))
2754 (file-name (git-file-name name version))
2755 (modules '((guix build utils)))
2756 (snippet
2757 `(begin
2758 (delete-file-recursively "3rdparty")))
2759 (sha256
927b8f24 2760 (base32 "1jsm39nzzbqkp3zc0xqx7jid6p4q1ra28xad38wjr2l1jb8qjn24"))))
b09967bc
RG
2761 (build-system qt-build-system)
2762 (arguments
2763 `(#:tests? #f ; No target
2764 #:imported-modules
2765 (,@%qt-build-system-modules
2766 (guix build glib-or-gtk-build-system))
2767 #:modules
2768 ((guix build qt-build-system)
2769 ((guix build glib-or-gtk-build-system)
2770 #:prefix glib-or-gtk:)
2771 (guix build utils))
2772 #:configure-flags
2773 (list
2774 "-DBUILD_PSIMEDIA=ON" ; For A/V support
2775 "-DENABLE_PLUGINS=ON"
2776 "-DUSE_HUNSPELL=OFF" ; Use Enchant instead
2777 "-DUSE_ENCHANT=ON"
2778 "-DUSE_CCACHE=OFF") ; Not required
2779 #:phases
2780 (modify-phases %standard-phases
2781 (add-after 'unpack 'patch-source
2782 (lambda _
2783 (substitute* "CMakeLists.txt"
2784 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/http-parser/http_parser.h")
2785 "")
2786 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/qhttp.pro")
2787 "")
2788 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/qite.pro")
2789 "")
2790 (("add_subdirectory\\( 3rdparty \\)")
2791 ""))
2792 (substitute* "src/CMakeLists.txt"
2793 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/libqite")
2794 "")
2795 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/http-parser")
2796 "")
2797 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/src/private")
2798 "")
2799 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qhttp/src")
2800 "")
2801 (("\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty")
2802 "")
2803 (("add_dependencies\\(\\$\\{PROJECT_NAME\\} qhttp\\)")
2804 "target_link_libraries(${PROJECT_NAME} qhttp)"))
2805 (substitute* "src/src.cmake"
2806 (("include\\(\\$\\{PROJECT_SOURCE_DIR\\}/3rdparty/qite/libqite/libqite.cmake\\)")
2807 "list(APPEND EXTRA_LIBS qite)"))
2808 (substitute* '("src/filesharingmanager.h" "src/widgets/psirichtext.cpp"
2809 "src/filesharingmanager.cpp" "src/widgets/psitextview.cpp"
2810 "src/chatview_te.cpp" "src/msgmle.cpp")
2811 (("qite.h")
2812 "qite/qite.h")
2813 (("qiteaudio.h")
2814 "qite/qiteaudio.h")
2815 (("qiteaudiorecorder.h")
2816 "qite/qiteaudiorecorder.h"))
2817 #t))
2818 (add-after 'install 'wrap-env
2819 (lambda* (#:key outputs #:allow-other-keys)
2820 (let ((out (assoc-ref outputs "out")))
2821 (for-each
2822 (lambda (name)
2823 (let ((file (string-append out "/bin/" name))
2824 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
2825 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
2826 (wrap-program file
2827 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
2828 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
2829 '("psi-plus")))
2830 #t))
2831 (add-after 'wrap-env 'glib-or-gtk-compile-schemas
2832 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
2833 (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
2834 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
2835 (native-inputs
2836 `(("glib:bin" ,glib "bin")
2837 ("gobject-introspection" ,gobject-introspection)
2838 ("perl" ,perl)
2839 ("pkg-config" ,pkg-config)
2840 ("python" ,python-wrapper)
2841 ("ruby" ,ruby)))
2842 (inputs
2843 `(("blake2" ,libb2)
2844 ("dbus" ,dbus)
2845 ("enchant" ,enchant)
2846 ("glib" ,glib)
2847 ("gstreamer" ,gstreamer)
2848 ("gst-plugins-base" ,gst-plugins-base)
2849 ("http-parser" ,http-parser)
2850 ("libgcrypt" ,libgcrypt)
2851 ("libgpg-error" ,libgpg-error)
2852 ("libidn" ,libidn)
2853 ("libotr" ,libotr)
2854 ("libsignal-protocol-c" ,libsignal-protocol-c)
2855 ("libtidy" ,tidy-html)
2856 ("openssl" ,openssl)
2857 ("qca" ,qca)
2858 ("qhttp" ,qhttp)
2859 ("qite" ,qite)
2860 ("qtbase" ,qtbase)
2861 ("qtkeychain" ,qtkeychain)
2862 ("qtmultimedia" ,qtmultimedia)
2863 ("qtsvg" ,qtsvg)
2864 ("qtx11extras" ,qtx11extras)
2865 ("usrsctp" ,usrsctp)
2866 ("x11" ,libx11)
2867 ("xext" ,libxext)
2868 ("xcb" ,libxcb)
2869 ("xss" ,libxscrnsaver)
2870 ("zlib" ,zlib)))
2871 (home-page "https://psi-plus.com/")
2872 (synopsis "Qt-based XMPP Client")
2873 (description
2874 "Psi+ is a spin-off of Psi XMPP client. It is a powerful XMPP client
2875designed for experienced users.")
2876 (license license:gpl2+)))
2877
685fa3f5
GL
2878(define-public python-zulip
2879 (package
2880 (name "python-zulip")
2881 (version "0.7.1")
2882 (source
2883 (origin
2884 ;; There is no source on Pypi.
2885 (method git-fetch)
2886 (uri (git-reference
2887 (url "https://github.com/zulip/python-zulip-api")
2888 (commit version)))
2889 (file-name (git-file-name name version))
2890 (sha256
2891 (base32
2892 "0da1ki1v252avy27j6d7snnc0gyq0xa9fypm3qdmxhw2w79d6q36"))))
2893 (build-system python-build-system)
2894 (arguments
2895 `(#:phases
2896 (modify-phases %standard-phases
2897 (add-after 'unpack 'cd-to-zulip-dir
2898 (lambda _
2899 (chdir "zulip")
2900 #t))
2901 (replace 'check
2902 (lambda* (#:key inputs outputs tests? #:allow-other-keys)
2903 (let ((test-zulip "../tools/test-zulip"))
2904 (when tests?
2905 (add-installed-pythonpath inputs outputs)
2906 (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
2907 (patch-shebang test-zulip)
2908 (invoke test-zulip))
2909 #t))))))
2910 (propagated-inputs
2911 `(("python-matrix-client" ,python-matrix-client)
2912 ("python-pyopenssl" ,python-pyopenssl)
2913 ("python-requests" ,python-requests)
2914 ("python-six" ,python-six)))
2915 (native-inputs
2916 `(("python-cython" ,python-cython)
2917 ("python-distro" ,python-distro)
2918 ("python-pytest" ,python-pytest)))
2919 (home-page "https://github.com/zulip/python-zulip-api")
2920 (synopsis "Zulip's API Python bindings")
2921 (description
2922 "This package provides Python bindings to Zulip's API.")
2923 (license license:asl2.0)))
2924
673031c7
GL
2925(define-public zulip-term
2926 (package
2927 (name "zulip-term")
2928 (version "0.5.2")
2929 (source
2930 (origin
2931 ;; Pypi package doesn't ship tests.
2932 (method git-fetch)
2933 (uri (git-reference
2934 (url "https://github.com/zulip/zulip-terminal")
2935 (commit version)))
2936 (file-name (git-file-name name version))
2937 (sha256
2938 (base32
2939 "1xhhy3v4wck74a83avil0rnmsi2grrh03cww19n5mv80p2q1cjmf"))
2940 (modules '((guix build utils)))
2941 (snippet
2942 '(begin
2943 (substitute* "setup.py"
2944 (("\\=\\=1\\.7") ">=1.7") ; pytest-mock
2945 (("\\=\\=2\\.5") ">=2.5") ; pytest-cov
2946 (("4\\.5\\.2") "4.4.2")) ; lxml
2947 #t))))
2948 (build-system python-build-system)
2949 (arguments
2950 '(#:phases
2951 (modify-phases %standard-phases
2952 (replace 'check
2953 (lambda* (#:key tests? #:allow-other-keys)
2954 (when tests?
2955 ;; Delete failing tests.
2956 (delete-file "tests/cli/test_run.py")
2957 (invoke "pytest"))
2958 #t)))))
2959 (inputs
2960 `(("python-beautifulsoup4" ,python-beautifulsoup4)
2961 ("python-lxml" ,python-lxml)
2962 ("python-mypy-extensions" ,python-mypy-extensions)
2963 ("python-urwid" ,python-urwid)
2964 ("python-urwid-readline" ,python-urwid-readline)
2965 ("python-zulip" ,python-zulip)))
2966 (native-inputs
2967 `(("python-distro" ,python-distro)
2968 ("python-pytest" ,python-pytest)
2969 ("python-pytest-cov" ,python-pytest-cov)
2970 ("python-pytest-mock" ,python-pytest-mock)))
2971 (home-page "https://github.com/zulip/zulip-terminal")
2972 (synopsis "Zulip's official terminal client")
2973 (description "This package contains Zulip's official terminal client.")
2974 (license license:asl2.0)))
2975
7c706558 2976;;; messaging.scm ends here