gnu: Add cxxopts.
[jackhill/guix/guix.git] / gnu / packages / messaging.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
3 ;;; Copyright © 2014, 2017 Julien Lepiller <julien@lepiller.eu>
4 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
5 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
6 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2015, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
8 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
9 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
10 ;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
11 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
12 ;;; Copyright © 2017, 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
13 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
14 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
15 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
16 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
17 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
18 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
19 ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
20 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
21 ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
22 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
23 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
24 ;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
25 ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
26 ;;; Copyright © 2020 Mason Hock <chaosmonk@riseup.net>
27 ;;;
28 ;;; This file is part of GNU Guix.
29 ;;;
30 ;;; GNU Guix is free software; you can redistribute it and/or modify it
31 ;;; under the terms of the GNU General Public License as published by
32 ;;; the Free Software Foundation; either version 3 of the License, or (at
33 ;;; your option) any later version.
34 ;;;
35 ;;; GNU Guix is distributed in the hope that it will be useful, but
36 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
37 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38 ;;; GNU General Public License for more details.
39 ;;;
40 ;;; You should have received a copy of the GNU General Public License
41 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
42
43 (define-module (gnu packages messaging)
44 #:use-module (gnu packages)
45 #:use-module (gnu packages admin)
46 #:use-module (gnu packages aidc)
47 #:use-module (gnu packages aspell)
48 #:use-module (gnu packages audio)
49 #:use-module (gnu packages autotools)
50 #:use-module (gnu packages avahi)
51 #:use-module (gnu packages base)
52 #:use-module (gnu packages bash)
53 #:use-module (gnu packages bison)
54 #:use-module (gnu packages boost)
55 #:use-module (gnu packages check)
56 #:use-module (gnu packages compression)
57 #:use-module (gnu packages cpp)
58 #:use-module (gnu packages crypto)
59 #:use-module (gnu packages curl)
60 #:use-module (gnu packages cyrus-sasl)
61 #:use-module (gnu packages databases)
62 #:use-module (gnu packages documentation)
63 #:use-module (gnu packages enchant)
64 #:use-module (gnu packages fontutils)
65 #:use-module (gnu packages freedesktop)
66 #:use-module (gnu packages gettext)
67 #:use-module (gnu packages glib)
68 #:use-module (gnu packages gnome)
69 #:use-module (gnu packages gnupg)
70 #:use-module (gnu packages gperf)
71 #:use-module (gnu packages gtk)
72 #:use-module (gnu packages guile)
73 #:use-module (gnu packages icu4c)
74 #:use-module (gnu packages image)
75 #:use-module (gnu packages less)
76 #:use-module (gnu packages libcanberra)
77 #:use-module (gnu packages libidn)
78 #:use-module (gnu packages linux)
79 #:use-module (gnu packages logging)
80 #:use-module (gnu packages lua)
81 #:use-module (gnu packages man)
82 #:use-module (gnu packages markup)
83 #:use-module (gnu packages mpd)
84 #:use-module (gnu packages ncurses)
85 #:use-module (gnu packages networking)
86 #:use-module (gnu packages pcre)
87 #:use-module (gnu packages perl)
88 #:use-module (gnu packages photo)
89 #:use-module (gnu packages php)
90 #:use-module (gnu packages pkg-config)
91 #:use-module (gnu packages protobuf)
92 #:use-module (gnu packages python)
93 #:use-module (gnu packages python-crypto)
94 #:use-module (gnu packages python-web)
95 #:use-module (gnu packages python-xyz)
96 #:use-module (gnu packages qt)
97 #:use-module (gnu packages readline)
98 #:use-module (gnu packages sphinx)
99 #:use-module (gnu packages sqlite)
100 #:use-module (gnu packages tcl)
101 #:use-module (gnu packages texinfo)
102 #:use-module (gnu packages textutils)
103 #:use-module (gnu packages tls)
104 #:use-module (gnu packages video)
105 #:use-module (gnu packages web)
106 #:use-module (gnu packages xdisorg)
107 #:use-module (gnu packages xiph)
108 #:use-module (gnu packages xml)
109 #:use-module (gnu packages xorg)
110 #:use-module (guix build-system cmake)
111 #:use-module (guix build-system glib-or-gtk)
112 #:use-module (guix build-system gnu)
113 #:use-module (guix build-system meson)
114 #:use-module (guix build-system perl)
115 #:use-module (guix build-system python)
116 #:use-module (guix build-system qt)
117 #:use-module (guix build-system trivial)
118 #:use-module (guix download)
119 #:use-module (guix git-download)
120 #:use-module (guix hg-download)
121 #:use-module ((guix licenses) #:prefix license:)
122 #:use-module (guix packages)
123 #:use-module (guix utils))
124
125 (define-public poezio
126 (package
127 (name "poezio")
128 (version "0.13.1")
129 (source
130 (origin
131 (method git-fetch)
132 (uri
133 (git-reference
134 (url "https://lab.louiz.org/poezio/poezio.git")
135 (commit
136 (string-append "v" version))))
137 (file-name
138 (git-file-name name version))
139 (sha256
140 (base32 "041y61pcbdb86s04qwp8s1g6bp84yskc7vdizwpi2hz18y01x5fy"))))
141 (build-system python-build-system)
142 (arguments
143 `(#:phases
144 (modify-phases %standard-phases
145 (add-after 'unpack 'patch
146 (lambda _
147 (substitute* "setup.py"
148 (("'CC', 'cc'")
149 "'CC', 'gcc'"))
150 #t)))))
151 (native-inputs
152 `(("pkg-config" ,pkg-config)
153 ("python-setuptools" ,python-setuptools)
154 ("python-sphinx" ,python-sphinx)))
155 (inputs
156 `(("python-mpd2" ,python-mpd2)
157 ("python-potr" ,python-potr)
158 ("python-pyasn1" ,python-pyasn1)
159 ("python-pyasn1-modules" ,python-pyasn1-modules)
160 ("python-pygments" ,python-pygments)
161 ("python-pyinotify" ,python-pyinotify)
162 ;("python" ,python)
163 ("python-qrcode" ,python-qrcode)
164 ("python-slixmpp" ,python-slixmpp)))
165 (synopsis "Console Jabber/XMPP Client")
166 (description "Poezio is a free console XMPP client (the protocol on which
167 the Jabber IM network is built).
168 Its goal is to let you connect very easily (no account creation needed) to the
169 network and join various chatrooms, immediately. It tries to look like the
170 most famous IRC clients (weechat, irssi, etc). Many commands are identical and
171 you won't be lost if you already know these clients. Configuration can be
172 made in a configuration file or directly from the client.
173 You'll find the light, fast, geeky and anonymous spirit of IRC while using a
174 powerful, standard and open protocol.")
175 (home-page "https://poez.io/en/")
176 (license license:zlib)))
177
178 (define-public libotr
179 (package
180 (name "libotr")
181 (version "4.1.1")
182 (source (origin
183 (method url-fetch)
184 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
185 version ".tar.gz"))
186 (sha256
187 (base32
188 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
189 (patches (search-patches "libotr-test-auth-fix.patch"))))
190 (build-system gnu-build-system)
191 (propagated-inputs
192 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
193 (inputs `(("libgpg-error" ,libgpg-error)))
194 (native-inputs `(("perl" ,perl))) ; for the test suite
195 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
196 (description
197 "OTR allows you to have private conversations over instant messaging by
198 providing: (1) Encryption: No one else can read your instant messages. (2)
199 Authentication: You are assured the correspondent is who you think it is. (3)
200 Deniability: The messages you send do not have digital signatures that are
201 checkable by a third party. Anyone can forge messages after a conversation to
202 make them look like they came from you. However, during a conversation, your
203 correspondent is assured the messages he sees are authentic and
204 unmodified. (4) Perfect forward secrecy: If you lose control of your private
205 keys, no previous conversation is compromised.")
206 (home-page "https://otr.cypherpunks.ca/")
207 (license (list license:lgpl2.1 license:gpl2))))
208
209 (define-public libsignal-protocol-c
210 (package
211 (name "libsignal-protocol-c")
212 (version "2.3.2")
213 (source (origin
214 (method git-fetch)
215 (uri (git-reference
216 (url "https://github.com/WhisperSystems/libsignal-protocol-c")
217 (commit (string-append "v" version))))
218 (file-name (git-file-name name version))
219 (sha256
220 (base32
221 "1qj2w4csy6j9jg1jy66n1qwysx7hgjywk4n35hlqcnh1kpa14k3p"))))
222 (arguments
223 `(;; Required for proper linking and for tests to run.
224 #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
225 (build-system cmake-build-system)
226 (inputs `( ;; Required for tests:
227 ("check" ,check)
228 ("openssl" ,openssl)))
229 (native-inputs `(("pkg-config" ,pkg-config)))
230 (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
231 (synopsis "Implementation of a ratcheting forward secrecy protocol")
232 (description "libsignal-protocol-c is an implementation of a ratcheting
233 forward secrecy protocol that works in synchronous and asynchronous
234 messaging environments. It can be used with messaging software to provide
235 end-to-end encryption.")
236 (license license:gpl3+)))
237
238 (define-public bitlbee
239 (package
240 (name "bitlbee")
241 (version "3.6")
242 (source (origin
243 (method url-fetch)
244 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
245 version ".tar.gz"))
246 (sha256
247 (base32 "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz"))))
248 (build-system gnu-build-system)
249 (native-inputs `(("pkg-config" ,pkg-config)
250 ;; Note: Change to 'check' for versions > 3.6.
251 ("check" ,check-0.12)))
252 (inputs `(("glib" ,glib)
253 ("libotr" ,libotr)
254 ("gnutls" ,gnutls)
255 ("python" ,python)
256 ("perl" ,perl)))
257 (arguments
258 `(#:phases
259 (modify-phases %standard-phases
260 (add-before 'configure 'set-python
261 (lambda _ (setenv "PYTHON" (which "python3")) #t))
262 (add-after 'install 'install-etc
263 (lambda* (#:key (make-flags '()) #:allow-other-keys)
264 (apply invoke "make" "install-etc" make-flags)))
265 (add-after 'install-etc 'install-lib
266 (lambda* (#:key (make-flags '()) #:allow-other-keys)
267 (apply invoke "make" "install-dev" make-flags)))
268 (replace 'configure
269 ;; bitlbee's configure script does not tolerate many of the
270 ;; variable settings that Guix would pass to it.
271 (lambda* (#:key outputs #:allow-other-keys)
272 (invoke "./configure"
273 (string-append "--prefix="
274 (assoc-ref outputs "out"))
275 "--otr=1"))))))
276 (synopsis "IRC to instant messaging gateway")
277 (description "BitlBee brings IM (instant messaging) to IRC clients, for
278 people who have an IRC client running all the time and don't want to run an
279 additional IM client. BitlBee currently supports XMPP/Jabber (including
280 Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
281 microblogging network (plus all other Twitter API compatible services like
282 identi.ca and status.net).")
283 (home-page "https://www.bitlbee.org/")
284 (license (list license:gpl2+ license:bsd-2))))
285
286 (define-public bitlbee-purple
287 ;; This variant uses libpurple, which provides support for more protocols at
288 ;; the expense of a much bigger closure.
289 (package/inherit bitlbee
290 (name "bitlbee-purple")
291 (synopsis "IRC to instant messaging gateway (using Pidgin's libpurple)")
292 (inputs `(("purple" ,pidgin)
293 ,@(package-inputs bitlbee)))
294 (arguments
295 (substitute-keyword-arguments (package-arguments bitlbee)
296 ((#:phases phases '%standard-phases)
297 `(modify-phases ,phases
298 (replace 'configure ;add "--purple=1"
299 (lambda* (#:key outputs #:allow-other-keys)
300 (invoke "./configure"
301 (string-append "--prefix="
302 (assoc-ref outputs "out"))
303 "--otr=1" "--purple=1")))))
304 ((#:tests? _ #t)
305 ;; XXX: Tests fail to link, and ./configure says that it's "supported
306 ;; on a best-effort basis" anyway.
307 #f)))))
308
309 (define-public bitlbee-discord
310 (package
311 (name "bitlbee-discord")
312 (version "0.4.2")
313 (source
314 (origin
315 (method git-fetch)
316 (uri (git-reference
317 (url "https://github.com/sm00th/bitlbee-discord")
318 (commit version)))
319 (file-name (git-file-name name version))
320 (sha256
321 (base32 "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f"))))
322 (build-system gnu-build-system)
323 (arguments
324 `(#:phases
325 (modify-phases %standard-phases
326 (add-after 'unpack 'patch-autogen
327 (lambda _
328 (let ((sh (which "sh")))
329 (substitute* "autogen.sh" (("/bin/sh") sh))
330 (setenv "CONFIG_SHELL" sh))
331 #t))
332 (replace 'configure
333 (lambda* (#:key inputs outputs #:allow-other-keys)
334 (invoke "./configure"
335 (string-append "--with-plugindir="
336 (assoc-ref outputs "out")
337 "/lib/bitlbee/")))))))
338 (inputs `(("glib" ,glib)))
339 (native-inputs `(("pkg-config" ,pkg-config)
340 ("autoconf" ,autoconf)
341 ("automake" ,automake)
342 ("texinfo" ,texinfo)
343 ("libtool" ,libtool)
344 ("bitlbee" ,bitlbee) ; needs bitlbee headers
345 ("bash" ,bash)))
346 (synopsis "Discord plugin for Bitlbee")
347 (description "Bitlbee-discord is a plugin for Bitlbee which provides
348 access to servers running the Discord protocol.")
349 (home-page "https://github.com/sm00th/bitlbee-discord/")
350 (license license:gpl2+)))
351
352 (define-public purple-mattermost
353 ;; The latest release (1.2) only supports Mattermost's /api/v3. Choose a
354 ;; commit that supports /api/v4.
355 (let ((commit "158ce2052af9aaf3d1f6f045f0cfba276e0e91cf")
356 (revision "0"))
357 (package
358 (name "purple-mattermost")
359 (version (git-version "1.2" revision commit))
360 (home-page "https://github.com/EionRobb/purple-mattermost")
361 (source (origin
362 (method git-fetch)
363 (uri (git-reference (url home-page)
364 (commit commit)))
365 (file-name (git-file-name name version))
366 (sha256
367 (base32
368 "1481zm20pnfq52ncg7hxayjq8cw3a6yh9m4jm1m5s8chsq04015l"))))
369 (build-system gnu-build-system)
370 (arguments
371 `(#:phases (modify-phases %standard-phases
372 (replace 'configure
373 (lambda* (#:key inputs outputs #:allow-other-keys)
374 ;; Adjust the makefile to install files in the right
375 ;; place.
376 (let ((out (assoc-ref outputs "out")))
377 (substitute* "Makefile"
378 (("MATTERMOST_DEST = .*")
379 (string-append "MATTERMOST_DEST = " out
380 "/lib/purple-2\n")) ;XXX: hardcoded
381 (("MATTERMOST_ICONS_DEST = .*")
382 (string-append "MATTERMOST_ICONS_DEST = "
383 out
384 "/share/pixmaps/pidgin/protocols\n")))
385 #t))))
386 #:make-flags (list "CC=gcc"
387 ,(string-append "PLUGIN_VERSION=" version))
388 #:tests? #f))
389 (inputs `(("glib" ,glib)
390 ("json-glib" ,json-glib)
391 ("discount" ,discount)
392 ("pidgin" ,pidgin)))
393 (native-inputs `(("pkg-config" ,pkg-config)))
394 (synopsis "Purple plug-in to access Mattermost instant messaging")
395 (description
396 "Purple-Mattermost is a plug-in for Purple, the instant messaging library
397 used by Pidgin and Bitlbee, among others, to access
398 @uref{https://mattermost.com/, Mattermost} servers.")
399 (license license:gpl3+))))
400
401 (define-public hexchat
402 (package
403 (name "hexchat")
404 (version "2.14.3")
405 (source (origin
406 (method url-fetch)
407 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
408 version ".tar.xz"))
409 (sha256
410 (base32
411 "10p829jm1r6kidkgf5lhqhyqc5mxdcq96q3zhadsckasvc9rs6lh"))))
412 (build-system meson-build-system)
413 (native-inputs `(("gettext" ,gettext-minimal)
414 ("glib:bin" ,glib "bin") ;need glib-genmarshal
415 ("perl" ,perl)
416 ("pkg-config" ,pkg-config)))
417 (inputs `(("dbus-glib" ,dbus-glib)
418 ("dbus" ,dbus)
419 ("enchant" ,enchant)
420 ("gtk" ,gtk+-2)
421 ("libcanberra" ,libcanberra)
422 ("libnotify" ,libnotify)
423 ("libproxy" ,libproxy)
424 ("openssl" ,openssl)
425
426 ;; Bindings for add-on scripts.
427 ("luajit" ,luajit)
428 ("perl-xml-parser" ,perl-xml-parser)
429 ("python-2" ,python-2)))
430 (arguments
431 `(#:phases
432 (modify-phases %standard-phases
433 (add-after 'unpack 'skip-desktop-database-updates
434 (lambda _
435 ;; The build scripts update icon and desktop file databases when
436 ;; DESTDIR is not set. We can't update these databases from
437 ;; within the build chroot, but we also don't set DESTDIR. So, we
438 ;; just skip this code.
439 (substitute* "meson_post_install.py"
440 (("if 'DESTDIR' not in os.environ:")
441 "if False:"))
442 #t)))))
443 (synopsis "Graphical IRC client")
444 (description
445 "HexChat lets you connect to multiple IRC networks at once. The main
446 window shows the list of currently connected networks and their channels, the
447 current conversation and the list of users. It uses colors to differentiate
448 between users and to highlight messages. It checks spelling using available
449 dictionaries. HexChat can be extended with multiple addons.")
450 (home-page "https://hexchat.net/")
451 (license license:gpl2+)))
452
453 (define-public ngircd
454 (package
455 (name "ngircd")
456 (version "26")
457 (source (origin
458 (method url-fetch)
459 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
460 version ".tar.xz"))
461 (sha256
462 (base32
463 "1ijmv18fa648y7apxb9vp4j9iq6fxq850kz5v36rysaq614cdp2n"))
464 (patches (search-patches "ngircd-handle-zombies.patch"))))
465 (build-system gnu-build-system)
466 ;; Needed for the test suite.
467 (native-inputs `(("procps" ,procps)
468 ("expect" ,expect)
469 ("inetutils" ,inetutils)
470 ("openssl" ,openssl)))
471 ;; XXX Add libident.
472 (inputs `(("zlib" ,zlib)
473 ("libwrap" ,tcp-wrappers)
474 ("gnutls" ,gnutls)
475 ,@(if (string-suffix? "-linux"
476 (or (%current-target-system)
477 (%current-system)))
478 `(("linux-pam" ,linux-pam))
479 '())))
480 (arguments
481 `(#:configure-flags
482 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
483 ,@(if (string-suffix? "-linux"
484 (or (%current-target-system)
485 (%current-system)))
486 '("--with-pam")
487 '()))
488 #:phases
489 (modify-phases %standard-phases
490 ;; Necessary for the test suite.
491 (add-after 'configure 'post-configure
492 (lambda _
493 (substitute* "src/ngircd/Makefile"
494 (("/bin/sh") (which "sh")))
495 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
496 ;; which fails arbitrarily.
497 (with-output-to-file "src/testsuite/getpid.sh"
498 (lambda ()
499 (display
500 (string-append
501 "#!" (which "sh") "\n"
502 "ps -C \"$1\" -o pid=\n"))))
503 ;; Our variant of getpid.sh does not match interpreter names
504 ;; when the script's shebang is invoked directly as "./foo".
505 ;; Patch cases where the test suite relies on this.
506 (substitute* "src/testsuite/start-server.sh"
507 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
508 ;; 'make' instead.
509 (("getpid.sh sh") "getpid.sh make")))))))
510 (home-page "https://ngircd.barton.de/")
511 (synopsis "Lightweight Internet Relay Chat server for small networks")
512 (description
513 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
514 or private networks. It is easy to configure, can cope with dynamic IP
515 addresses, and supports IPv6, SSL-protected connections, as well as PAM for
516 authentication.")
517 (license license:gpl2+)))
518
519 (define-public pidgin
520 (package
521 (name "pidgin")
522 (version "2.13.0")
523 (source
524 (origin
525 (method url-fetch)
526 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
527 version "/pidgin-" version ".tar.bz2"))
528 (sha256
529 (base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7"))
530 (patches (search-patches "pidgin-add-search-path.patch"
531 ;; Remove the snippet and bootstrapping
532 ;; native-inputs together with this patch.
533 "pidgin-libnm.patch"))
534 (modules '((guix build utils)))
535 (snippet
536 '(begin
537 ;; Remove stale generated file after applying pidgin-libnm.patch.
538 (delete-file "configure")
539 #t))))
540 (build-system glib-or-gtk-build-system)
541 (native-inputs
542 `(("pkg-config" ,pkg-config)
543 ("check" ,check)
544 ("intltool" ,intltool)
545 ("gconf" ,gconf)
546 ("python" ,python-2)
547 ("doxygen" ,doxygen)
548
549 ;; For bootstrapping after applying pidgin-libnm.patch.
550 ("autoconf" ,autoconf)
551 ("automake" ,automake)
552 ("libtool" ,libtool)))
553 (inputs
554 `(("gtk+" ,gtk+-2)
555 ("libgcrypt" ,libgcrypt)
556 ("gnutls" ,gnutls)
557 ("cyrus-sasl" ,cyrus-sasl)
558 ("dbus" ,dbus)
559 ("dbus-glib" ,dbus-glib)
560 ("python2-dbus" ,python2-dbus)
561 ("libidn" ,libidn)
562 ("libltdl" ,libltdl)
563 ("libxml2" ,libxml2)
564 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
565 ;; TODO: farstream
566 ;; TODO: meanwhile
567 ;; TODO: gtkspell
568 ;; TODO: libxephyr
569 ;; TODO: libgadu
570 ("libxslt" ,libxslt)
571 ("avahi" ,avahi)
572 ("ncurses" ,ncurses)
573 ("network-manager" ,network-manager)
574 ("sqlite" ,sqlite)
575 ("libice" ,libice)
576 ("libsm" ,libsm)
577 ("libxscrnsaver" ,libxscrnsaver)
578 ("startup-notification" ,startup-notification)))
579 (arguments
580 `(#:configure-flags
581 (list "--disable-gtkspell"
582 "--disable-tcl"
583 "--disable-meanwhile"
584 "--disable-vv" ; XXX remove when we have farstream and gstreamer
585 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
586 "--enable-cyrus-sasl"
587 (string-append "--with-ncurses-headers="
588 (assoc-ref %build-inputs "ncurses")
589 "/include"))))
590 (native-search-paths
591 (list (search-path-specification
592 (variable "PURPLE_PLUGIN_PATH")
593 (files (list (string-append "lib/purple-"
594 (version-major version))
595 "lib/pidgin")))))
596 (home-page "https://www.pidgin.im/")
597 (synopsis "Graphical multi-protocol instant messaging client")
598 (description
599 "Pidgin is a modular instant messaging client that supports many popular
600 chat protocols.")
601 (license
602 (list
603 license:gpl2+ ; Most of the code
604 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
605 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
606 ;; The following licenses cover the zephyr protocol plugin:
607 (license:non-copyleft
608 "file://libpurple/protocols/zephyr/mit-copyright.h"
609 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
610 (license:non-copyleft
611 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
612 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
613
614 (define-public pidgin-otr
615 (package
616 (name "pidgin-otr")
617 (version "4.0.2")
618 (source (origin
619 (method url-fetch)
620 (uri (string-append "https://otr.cypherpunks.ca/"
621 name "-" version ".tar.gz"))
622 (sha256
623 (base32
624 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
625 (build-system gnu-build-system)
626 (native-inputs
627 `(("pkg-config" ,pkg-config)
628 ("intltool" ,intltool)))
629 (inputs
630 `(("pidgin" ,pidgin)
631 ("libotr" ,libotr)
632 ("libgpg-error" ,libgpg-error)
633 ("libgcrypt" ,libgcrypt)
634 ("glib" ,glib)
635 ("gtk+" ,gtk+-2)))
636 (home-page "https://otr.cypherpunks.ca/")
637 (synopsis "Off-the-Record Messaging plugin for Pidgin")
638 (description
639 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
640 messaging client. OTR (Off-the-Record) Messaging allows you to have private
641 conversations over instant messaging by providing: (1) Encryption: No one else
642 can read your instant messages. (2) Authentication: You are assured the
643 correspondent is who you think it is. (3) Deniability: The messages you send
644 do not have digital signatures that are checkable by a third party. Anyone
645 can forge messages after a conversation to make them look like they came from
646 you. However, during a conversation, your correspondent is assured the
647 messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
648 If you lose control of your private keys, no previous conversation is
649 compromised.")
650 (license license:gpl2)))
651
652 (define-public znc
653 (package
654 (name "znc")
655 (version "1.8.2")
656 (source (origin
657 (method url-fetch)
658 (uri (string-append "https://znc.in/releases/archive/znc-"
659 version ".tar.gz"))
660 (sha256
661 (base32
662 "03fyi0j44zcanj1rsdx93hkdskwfvhbywjiwd17f9q1a7yp8l8zz"))))
663 (build-system cmake-build-system)
664 (arguments
665 `(#:configure-flags
666 (list "-DWANT_CYRUS=ON"
667 "-DWANT_I18N=ON"
668 "-DWANT_PERL=ON"
669 "-DWANT_PYTHON=ON")
670 #:phases
671 (modify-phases %standard-phases
672 (add-after 'unpack 'unpack-googletest
673 ;; Copy the googletest sources to where the CMake build expects them.
674 (lambda* (#:key inputs #:allow-other-keys)
675 (let ((source (assoc-ref inputs "googletest-source"))
676 (target "third_party/googletest"))
677 (mkdir-p target)
678 (copy-recursively source target)
679 #t))))))
680 (native-inputs
681 `(("boost" ,boost)
682 ("gettext" ,gettext-minimal)
683 ("googletest-source" ,(package-source googletest))
684 ("pkg-config" ,pkg-config)))
685 (inputs
686 `(("cyrus-sasl" ,cyrus-sasl)
687 ("icu4c" ,icu4c)
688 ("openssl" ,openssl)
689 ("perl" ,perl)
690 ("python" ,python)
691 ("zlib" ,zlib)))
692 (home-page "https://wiki.znc.in/ZNC")
693 (synopsis "IRC network bouncer")
694 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
695 detach the client from the actual IRC server, and also from selected channels.
696 Multiple clients from different locations can connect to a single ZNC account
697 simultaneously and therefore appear under the same nickname on IRC.")
698 (license license:asl2.0)))
699
700 (define-public python-nbxmpp
701 (package
702 (name "python-nbxmpp")
703 (version "0.6.10")
704 (source
705 (origin
706 (method url-fetch)
707 (uri (pypi-uri "nbxmpp" version))
708 (sha256
709 (base32
710 "1vq89nhamciblyi5579bppnm4sb0zk5cg5hdipfpz174fxvl2wyd"))))
711 (build-system python-build-system)
712 (arguments
713 `(#:tests? #f)) ; no tests
714 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
715 (synopsis "Non-blocking Jabber/XMPP module")
716 (description
717 "The goal of this python library is to provide a way for Python
718 applications to use Jabber/XMPP networks in a non-blocking way. This library
719 was initially a fork of xmpppy, but uses non-blocking sockets.")
720 (license license:gpl3+)))
721
722 (define-public python2-nbxmpp
723 (package-with-python2 python-nbxmpp))
724
725 (define-public gajim
726 (package
727 (name "gajim")
728 (version "1.1.3")
729 (source (origin
730 (method url-fetch)
731 (uri (string-append "https://gajim.org/downloads/"
732 (version-major+minor version)
733 "/gajim-" version ".tar.bz2"))
734 (sha256
735 (base32
736 "0bzxwcpdd4ydh6d6mzpr0gxwhcb0x9ympk55fpvm1hcw9d28a716"))))
737 (build-system python-build-system)
738 (arguments
739 `(#:phases
740 (modify-phases %standard-phases
741 (add-after 'unpack 'add-plugin-dirs
742 (lambda _
743 (substitute* "gajim/common/configpaths.py"
744 (("_paths\\['PLUGINS_USER'\\]\\]")
745 "_paths['PLUGINS_USER']] + \
746 ([os.getenv('GAJIM_PLUGIN_PATH')] \
747 if os.getenv('GAJIM_PLUGIN_PATH') \
748 and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() \
749 else [])"))
750 #t))
751 (replace 'check
752 (lambda _
753 (invoke "python" "./setup.py" "test" "-s" "test.no_gui")))
754 (add-after 'install 'wrap-gi-typelib-path
755 (lambda* (#:key outputs #:allow-other-keys)
756 (let ((out (assoc-ref outputs "out")))
757 (for-each
758 (lambda (name)
759 (let ((file (string-append out "/bin/" name))
760 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
761 (wrap-program file
762 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
763 ;; For translations
764 `("XDG_DATA_DIRS" ":" prefix
765 (,(string-append (assoc-ref outputs "out") "/share"))))))
766 '("gajim" "gajim-remote" "gajim-history-manager")))
767 #t))
768 (add-after 'install 'install-icons
769 (lambda* (#:key inputs outputs #:allow-other-keys)
770 (let* ((out (assoc-ref outputs "out"))
771 (adwaita (string-append
772 (assoc-ref inputs "adwaita-icon-theme")
773 "/share/icons/Adwaita"))
774 (hicolor (string-append
775 (assoc-ref inputs "hicolor-icon-theme")
776 "/share/icons/hicolor"))
777 (icons (string-append
778 out "/lib/python"
779 ,(version-major+minor (package-version python))
780 "/site-packages/gajim/data/icons")))
781 (with-directory-excursion icons
782 (symlink adwaita "Adwaita")
783 (copy-recursively hicolor "hicolor")))
784 #t))
785 (add-after 'install-icons 'wrap-gsettings-schema-dir
786 (lambda* (#:key inputs outputs #:allow-other-keys)
787 (wrap-program (string-append (assoc-ref outputs "out")
788 "/bin/gajim")
789 ;; For GtkFileChooserDialog.
790 `("GSETTINGS_SCHEMA_DIR" =
791 (,(string-append (assoc-ref inputs "gtk+")
792 "/share/glib-2.0/schemas"))))
793 #t)))))
794 (native-search-paths
795 (list (search-path-specification
796 (variable "GAJIM_PLUGIN_PATH")
797 (separator #f) ;single entry
798 (files '("share/gajim/plugins")))
799 ;; Gajim needs to use the propagated inputs of its plugins.
800 (search-path-specification
801 (variable "PYTHONPATH")
802 (files (list (string-append
803 "lib/python"
804
805 ;; FIXME: Cannot use this expression as it would
806 ;; introduce a circular dependency at the top level.
807 ;; (version-major+minor (package-version python))
808 "3.8"
809
810 "/site-packages"))))))
811 (native-inputs
812 `(("intltool" ,intltool)
813 ("python-docutils" ,python-docutils)
814 ("xorg-server" ,xorg-server-for-tests)))
815 (inputs
816 `(("adwaita-icon-theme" ,adwaita-icon-theme)
817 ("gnome-keyring" ,gnome-keyring)
818 ("gtk+" ,gtk+)
819 ("gtkspell3" ,gtkspell3)
820 ("hicolor-icon-theme" ,hicolor-icon-theme)
821 ("libsecret" ,libsecret)
822 ("python-cssutils" ,python-cssutils)
823 ("python-dbus" ,python-dbus)
824 ("python-gnupg" ,python-gnupg)
825 ("python-keyring" ,python-keyring)
826 ("python-nbxmpp" ,python-nbxmpp)
827 ("python-pillow" ,python-pillow)
828 ("python-precis-i18n" ,python-precis-i18n)
829 ("python-pycairo" ,python-pycairo)
830 ("python-pygobject" ,python-pygobject)
831 ("python-pyopenssl" ,python-pyopenssl)
832 ("python-qrcode" ,python-qrcode)))
833 (home-page "https://gajim.org/")
834 (synopsis "Jabber (XMPP) client")
835 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
836 Among its features are: a tabbed chat window and single window modes; support
837 for group chat (with Multi-User Chat protocol), invitation, chat to group chat
838 transformation; audio and video conferences; file transfer; TLS, GPG and
839 end-to-end encryption support; XML console.")
840 (license license:gpl3)))
841
842 (define-public gajim-omemo
843 (package
844 (name "gajim-omemo")
845 (version "2.7.7")
846 (source (origin
847 (method url-fetch/zipbomb)
848 (uri (string-append
849 "https://ftp.gajim.org/plugins_releases/omemo_"
850 version ".zip"))
851 (sha256
852 (base32
853 "17jl4blkq04ag3g0har6z1bmk36523d29s51g260wb1pywfb536h"))))
854 (build-system trivial-build-system)
855 (arguments
856 `(#:modules ((guix build utils))
857 #:builder
858 (begin
859 (use-modules (guix build utils))
860 (let* ((out (assoc-ref %outputs "out"))
861 (share (in-vicinity out "share/gajim/plugins"))
862 (source (assoc-ref %build-inputs "source")))
863 (mkdir-p share)
864 (copy-recursively source share)
865 #t))))
866 (propagated-inputs
867 `(("python-axolotl" ,python-axolotl)))
868 (home-page
869 "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OmemoGajimPlugin")
870 (synopsis "Gajim OMEMO plugin")
871 (description
872 "This package provides the Gajim OMEMO plugin. OMEMO is an XMPP
873 Extension Protocol (XEP) for secure multi-client end-to-end encryption based
874 on Axolotl and PEP.")
875 (license license:gpl3+)))
876
877 (define-public dino
878 (package
879 (name "dino")
880 (version "0.1.0")
881 (source
882 (origin
883 (method url-fetch)
884 (uri (string-append "https://github.com/dino/dino/releases/download/v"
885 version "/dino-" version ".tar.gz"))
886 (sha256
887 (base32
888 "0dcq2jhpywgxrp9x1qqmrl2z50hazspqj547b9zz70apy3y4418h"))))
889 (build-system cmake-build-system)
890 (arguments
891 `(#:tests? #f
892 #:parallel-build? #f ; not supported
893 #:modules ((guix build cmake-build-system)
894 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
895 (guix build utils))
896 #:imported-modules (,@%gnu-build-system-modules
897 (guix build cmake-build-system)
898 (guix build glib-or-gtk-build-system))
899 #:phases
900 (modify-phases %standard-phases
901 (add-after 'install 'glib-or-gtk-wrap
902 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
903 (inputs
904 `(("libgee" ,libgee)
905 ("libsignal-protocol-c" ,libsignal-protocol-c)
906 ("libgcrypt" ,libgcrypt)
907 ("libsoup" ,libsoup)
908 ("qrencode" ,qrencode)
909 ("sqlite" ,sqlite)
910 ("gpgme" ,gpgme)
911 ("gtk+" ,gtk+)
912 ("glib-networking" ,glib-networking)
913 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
914 (native-inputs
915 `(("pkg-config" ,pkg-config)
916 ("glib" ,glib "bin")
917 ("vala" ,vala)
918 ("gettext" ,gettext-minimal)))
919 (home-page "https://dino.im")
920 (synopsis "Graphical Jabber (XMPP) client")
921 (description "Dino is a Jabber (XMPP) client which aims to fit well into
922 a graphical desktop environment like GNOME.")
923 (license license:gpl3+)))
924
925 (define-public prosody
926 (package
927 (name "prosody")
928 (version "0.11.3")
929 (source (origin
930 (method url-fetch)
931 (uri (string-append "https://prosody.im/downloads/source/"
932 "prosody-" version ".tar.gz"))
933 (sha256
934 (base32
935 "11xz4milv2962qf75vrdwsvd8sy2332nf69202rmvz5989pvvnng"))))
936 (build-system gnu-build-system)
937 (arguments
938 `(#:tests? #f ;tests require "busted"
939 #:configure-flags (list "--no-example-certs")
940 #:modules ((ice-9 match)
941 (srfi srfi-1)
942 (guix build gnu-build-system)
943 (guix build utils))
944 #:phases
945 (modify-phases %standard-phases
946 (add-after 'unpack 'fix-configure-script
947 (lambda _
948 ;; The configure script aborts when it encounters unexpected
949 ;; arguments. Make it more tolerant.
950 (substitute* "configure"
951 (("exit 1") ""))
952 #t))
953 (add-after 'unpack 'fix-makefile
954 (lambda _
955 (substitute* "GNUmakefile"
956 ;; prosodyctl needs to read the configuration file.
957 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
958 ;; prosodyctl needs a place to put auto-generated certificates.
959 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
960 #t))
961 (add-after 'install 'wrap-programs
962 (lambda* (#:key inputs outputs #:allow-other-keys)
963 ;; Make sure all executables in "bin" find the required Lua
964 ;; modules at runtime.
965 (let* ((out (assoc-ref outputs "out"))
966 (bin (string-append out "/bin/"))
967 (deps (delete #f (map (match-lambda
968 ((label . directory)
969 (if (string-prefix? "lua" label)
970 directory #f)))
971 inputs)))
972 (lua-path (string-join
973 (map (lambda (path)
974 (string-append
975 path "/share/lua/5.2/?.lua;"
976 path "/share/lua/5.2/?/?.lua"))
977 (cons out deps))
978 ";"))
979 (lua-cpath (string-join
980 (map (lambda (path)
981 (string-append
982 path "/lib/lua/5.2/?.so;"
983 path "/lib/lua/5.2/?/?.so"))
984 (cons out deps))
985 ";"))
986 (openssl (assoc-ref inputs "openssl"))
987 (coreutils (assoc-ref inputs "coreutils"))
988 (path (map (lambda (dir)
989 (string-append dir "/bin"))
990 (list openssl coreutils))))
991 (for-each (lambda (file)
992 (wrap-program file
993 `("LUA_PATH" ";" = (,lua-path))
994 `("LUA_CPATH" ";" = (,lua-cpath))
995 `("PATH" ":" prefix ,path)))
996 (find-files bin ".*"))
997 #t))))))
998 (inputs
999 `(("libidn" ,libidn)
1000 ("openssl" ,openssl)
1001 ("lua" ,lua-5.2)
1002 ("lua5.2-bitop" ,lua5.2-bitop)
1003 ("lua5.2-expat" ,lua5.2-expat)
1004 ("lua5.2-socket" ,lua5.2-socket)
1005 ("lua5.2-filesystem" ,lua5.2-filesystem)
1006 ("lua5.2-sec" ,lua5.2-sec)))
1007 (home-page "https://prosody.im/")
1008 (synopsis "Jabber (XMPP) server")
1009 (description "Prosody is a modern XMPP communication server. It aims to
1010 be easy to set up and configure, and efficient with system resources.
1011 Additionally, for developers it aims to be easy to extend and give a flexible
1012 system on which to rapidly develop added functionality, or prototype new
1013 protocols.")
1014 (license license:x11)))
1015
1016 (define-public prosody-http-upload
1017 (let ((changeset "765735bb590b")
1018 (revision "1"))
1019 (package
1020 (name "prosody-http-upload")
1021 (version (string-append "0-" revision "." (string-take changeset 7)))
1022 (source (origin
1023 (method hg-fetch)
1024 (uri (hg-reference
1025 (url "https://hg.prosody.im/prosody-modules/")
1026 (changeset changeset)))
1027 (file-name (string-append name "-" version "-checkout"))
1028 (sha256
1029 (base32
1030 "142wrcism70nf8ffahhd961cqg2pi1h7ic8adfs3zwh0j3pnf41f"))))
1031 (build-system trivial-build-system)
1032 (arguments
1033 '(#:modules ((guix build utils))
1034 #:builder
1035 (begin
1036 (use-modules (guix build utils))
1037 (let ((out (assoc-ref %outputs "out"))
1038 (source (assoc-ref %build-inputs "source")))
1039 (with-directory-excursion (in-vicinity source "mod_http_upload")
1040 (install-file "mod_http_upload.lua" out))
1041 #t))))
1042 (home-page "https://modules.prosody.im/mod_http_upload.html")
1043 (synopsis "XEP-0363: Allow clients to upload files over HTTP")
1044 (description "This module implements XEP-0363: it allows clients to
1045 upload files over HTTP.")
1046 (license (package-license prosody)))))
1047
1048 (define-public prosody-smacks
1049 (let ((changeset "67f1d1f22625")
1050 (revision "1"))
1051 (package
1052 (name "prosody-smacks")
1053 (version (string-append "0-" revision "." (string-take changeset 7)))
1054 (source (origin
1055 (method hg-fetch)
1056 (uri (hg-reference
1057 (url "https://hg.prosody.im/prosody-modules/")
1058 (changeset changeset)))
1059 (file-name (string-append name "-" version "-checkout"))
1060 (sha256
1061 (base32
1062 "020ngpax30fgarah98yvlj0ni8rcdwq60if03a9hqdw8mic0nxxs"))))
1063 (build-system trivial-build-system)
1064 (arguments
1065 '(#:modules ((guix build utils))
1066 #:builder
1067 (begin
1068 (use-modules (guix build utils))
1069 (let ((out (assoc-ref %outputs "out"))
1070 (source (assoc-ref %build-inputs "source")))
1071 (with-directory-excursion (in-vicinity source "mod_smacks")
1072 (install-file "mod_smacks.lua" out))
1073 #t))))
1074 (home-page "https://modules.prosody.im/mod_smacks.html")
1075 (synopsis "XEP-0198: Reliability and fast reconnects for XMPP")
1076 (description "This module implements XEP-0198: when supported by both
1077 the client and server, it can allow clients to resume a disconnected session,
1078 and prevent message loss.")
1079 (license (package-license prosody)))))
1080
1081 (define-public libtoxcore
1082 (let ((revision "2")
1083 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
1084 (package
1085 (name "libtoxcore")
1086 (version (string-append "0.0.0" "-"
1087 revision "."(string-take commit 7)))
1088 (source (origin
1089 (method git-fetch)
1090 (uri (git-reference
1091 (url "https://github.com/irungentoo/toxcore")
1092 (commit commit)))
1093 (file-name (string-append name "-" version "-checkout"))
1094 (sha256
1095 (base32
1096 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
1097 (build-system gnu-build-system)
1098 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
1099 (native-inputs
1100 `(("autoconf" ,autoconf)
1101 ("automake" ,automake)
1102 ("libtool" ,libtool)
1103 ("check" ,check)
1104 ("pkg-config" ,pkg-config)))
1105 (inputs
1106 `(("libsodium" ,libsodium)
1107 ("opus" ,opus)
1108 ("libvpx" ,libvpx)))
1109 (synopsis "Library for the Tox encrypted messenger protocol")
1110 (description
1111 "C library implementation of the Tox encrypted messenger protocol.")
1112 (license license:gpl3+)
1113 (home-page "https://tox.chat"))))
1114
1115 ;; Some tox clients move to c-toxcore, which seems to be where all the
1116 ;; recent development happens. It is run by the same developers as toxcore,
1117 ;; forked into a group namespace.
1118 (define-public c-toxcore
1119 (package
1120 (name "c-toxcore")
1121 (version "0.2.12")
1122 (source
1123 (origin
1124 (method git-fetch)
1125 (uri (git-reference
1126 (url "https://github.com/TokTok/c-toxcore")
1127 (commit (string-append "v" version))))
1128 (file-name (git-file-name name version))
1129 (sha256
1130 (base32
1131 "0a6sqpm00d2rn0nviqfz4gh9ck1wzci6rxgmqmcyryl5ca19ffvp"))))
1132 (arguments
1133 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
1134 ; for now.
1135 (build-system cmake-build-system)
1136 (native-inputs
1137 `(("pkg-config" ,pkg-config)))
1138 (propagated-inputs
1139 `(("libsodium" ,libsodium)
1140 ("opus" ,opus)
1141 ("libvpx" ,libvpx)))
1142 (home-page "https://tox.chat")
1143 (synopsis "Library for the Tox encrypted messenger protocol")
1144 (description
1145 "Official fork of the C library implementation of the Tox encrypted
1146 messenger protocol.")
1147 (license license:gpl3+)))
1148
1149 (define-public utox
1150 (package
1151 (name "utox")
1152 (version "0.17.1")
1153 (source
1154 (origin
1155 (method git-fetch)
1156 (uri (git-reference
1157 (url "https://github.com/uTox/uTox")
1158 (commit (string-append "v" version))
1159 (recursive? #t))) ;; Needed for 'minini' git submodule.
1160 (file-name (string-append name "-" version "-checkout"))
1161 (sha256
1162 (base32
1163 "17kwqw24iqljp2icih9k6ikx12gzr8zzqr8y5h35bg8m5s8pasq5"))))
1164 (build-system cmake-build-system)
1165 (arguments
1166 `(#:configure-flags '("-DENABLE_TESTS=on")
1167 #:phases
1168 (modify-phases %standard-phases
1169 (add-before 'build 'patch-absolute-filename-libgtk-3
1170 (lambda* (#:key inputs outputs #:allow-other-keys)
1171 (substitute* "../source/src/xlib/gtk.c"
1172 (("libgtk-3.so")
1173 (string-append (assoc-ref inputs "gtk+")
1174 "/lib/libgtk-3.so")))))
1175 (add-after 'install 'wrap-program
1176 (lambda* (#:key inputs outputs #:allow-other-keys)
1177 (wrap-program (string-append (assoc-ref outputs "out")
1178 "/bin/utox")
1179 ;; For GtkFileChooserDialog.
1180 `("GSETTINGS_SCHEMA_DIR" =
1181 (,(string-append (assoc-ref inputs "gtk+")
1182 "/share/glib-2.0/schemas")))))))))
1183 (inputs
1184 `(("dbus" ,dbus)
1185 ("filteraudio" ,filteraudio)
1186 ("fontconfig" ,fontconfig)
1187 ("freetype" ,freetype)
1188 ("libsodium" ,libsodium)
1189 ("c-toxcore" ,c-toxcore)
1190 ("gtk+" ,gtk+)
1191 ("libvpx" ,libvpx)
1192 ("libx11" ,libx11)
1193 ("libxext" ,libxext)
1194 ("libxrender" ,libxrender)
1195 ("openal" ,openal)
1196 ("v4l-utils" ,v4l-utils)))
1197 (native-inputs
1198 `(("check" ,check)
1199 ("pkg-config" ,pkg-config)))
1200 (synopsis "Lightweight Tox client")
1201 (description
1202 "Utox is a lightweight Tox client. Tox is a distributed and secure
1203 instant messenger with audio and video chat capabilities.")
1204 (home-page "http://utox.org/")
1205 (license license:gpl3)))
1206
1207 (define-public qtox
1208 (package
1209 (name "qtox")
1210 (version "1.17.2")
1211 (source (origin
1212 (method url-fetch/tarbomb)
1213 (uri (string-append "https://github.com/qTox/qTox/releases"
1214 "/download/v" version
1215 "/v" version ".tar.gz"))
1216 (sha256
1217 (base32
1218 "0fmr3a0apil3rl32247qv2pqslp3knpbj5vhprdq0ixsvifrlhmh"))
1219 (file-name (string-append name "-" version ".tar.gz"))))
1220 (build-system cmake-build-system)
1221 (arguments
1222 '(#:phases
1223 (modify-phases %standard-phases
1224 (add-after 'unpack 'fix-reproducibility-issues
1225 (lambda _
1226 (substitute* "src/main.cpp"
1227 (("__DATE__") "\"\"")
1228 (("__TIME__") "\"\"")
1229 (("TIMESTAMP") "\"\""))
1230 #t))
1231 (add-after 'unpack 'disable-network-tests
1232 (lambda _
1233 ;; These tests require network access.
1234 (substitute* "cmake/Testing.cmake"
1235 (("auto_test\\(core core\\)") "# auto_test(core core)")
1236 (("auto_test\\(net bsu\\)") "# auto_test(net bsu)"))
1237 #t))
1238 ;; Ensure that icons are found at runtime.
1239 (add-after 'install 'wrap-executable
1240 (lambda* (#:key inputs outputs #:allow-other-keys)
1241 (let ((out (assoc-ref outputs "out")))
1242 (wrap-program (string-append out "/bin/qtox")
1243 `("QT_PLUGIN_PATH" prefix
1244 ,(list (string-append (assoc-ref inputs "qtsvg")
1245 "/lib/qt5/plugins/"))))))))))
1246 (inputs
1247 `(("ffmpeg" ,ffmpeg)
1248 ("filteraudio" ,filteraudio)
1249 ("glib" ,glib)
1250 ("gtk+" ,gtk+-2)
1251 ("libsodium" ,libsodium)
1252 ("c-toxcore" ,c-toxcore)
1253 ("libvpx" ,libvpx)
1254 ("libxscrnsaver" ,libxscrnsaver)
1255 ("libx11" ,libx11)
1256 ("libexif" ,libexif)
1257 ("sqlite" ,sqlite)
1258 ("openal" ,openal)
1259 ("qrencode" ,qrencode)
1260 ("qtbase" ,qtbase)
1261 ("qtsvg" ,qtsvg)
1262 ("sqlcipher" ,sqlcipher)))
1263 (native-inputs
1264 `(("pkg-config" ,pkg-config)
1265 ("qmake" ,qttools)))
1266 (home-page "https://qtox.github.io/")
1267 (synopsis "Tox chat client using Qt")
1268 (description "qTox is a Tox client that follows the Tox design
1269 guidelines. It provides an easy to use application that allows you to
1270 connect with friends and family without anyone else listening in.")
1271 (license license:gpl3+)))
1272
1273 (define-public pybitmessage
1274 (package
1275 (name "pybitmessage")
1276 (version "0.6.3.2")
1277 (source
1278 (origin
1279 (method git-fetch)
1280 (uri (git-reference
1281 (url "https://github.com/Bitmessage/PyBitmessage")
1282 (commit version)))
1283 (file-name (string-append name "-" version "-checkout"))
1284 (sha256
1285 (base32
1286 "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
1287 (propagated-inputs
1288 ;; TODO:
1289 ;; Package "pyopencl", required in addition to numpy for OpenCL support.
1290 ;; Package "gst123", required in addition to alsa-utils and
1291 ;; mpg123 for sound support.
1292 `(("python2-msgpack" ,python2-msgpack)
1293 ("python2-pythondialog" ,python2-pythondialog)
1294 ("python2-pyqt-4" ,python2-pyqt-4)
1295 ("python2-sip" ,python2-sip)
1296 ("python2-pysqlite" ,python2-pysqlite)
1297 ("python2-pyopenssl" ,python2-pyopenssl)))
1298 (native-inputs
1299 `(("openssl" ,openssl)))
1300 (build-system python-build-system)
1301 (arguments
1302 `(#:modules ((guix build python-build-system)
1303 (guix build utils))
1304 #:tests? #f ;no test target
1305 #:python ,python-2
1306 #:phases
1307 (modify-phases %standard-phases
1308 (add-after 'unpack 'fix-unmatched-python-shebangs
1309 (lambda* (#:key inputs #:allow-other-keys)
1310 (substitute* "src/bitmessagemain.py"
1311 (("#!/usr/bin/env python2.7")
1312 (string-append "#!" (which "python"))))
1313 (substitute* "src/bitmessagecli.py"
1314 (("#!/usr/bin/env python2.7.x")
1315 (string-append "#!" (which "python"))))
1316 #t))
1317 (add-after 'unpack 'fix-depends
1318 (lambda* (#:key inputs #:allow-other-keys)
1319 (substitute* "src/depends.py"
1320 (("libcrypto.so")
1321 (string-append (assoc-ref inputs "openssl")
1322 "/lib/libcrypto.so")))
1323 #t))
1324 (add-after 'unpack 'fix-local-files-in-paths
1325 (lambda* (#:key outputs #:allow-other-keys)
1326 (substitute* "src/proofofwork.py"
1327 (("bitmsghash.so")
1328 (string-append (assoc-ref outputs "out")
1329 "/lib/bitmsghash.so")))
1330 #t))
1331 (add-after 'unpack 'fix-pyelliptic
1332 (lambda* (#:key inputs #:allow-other-keys)
1333 (substitute* "src/pyelliptic/openssl.py"
1334 (("libcrypto.so")
1335 (string-append (assoc-ref inputs "openssl")
1336 "/lib/libcrypto.so"))
1337 (("libssl.so")
1338 (string-append (assoc-ref inputs "openssl")
1339 "/lib/libssl.so")))
1340 #t))
1341 (add-after 'unpack 'noninteractive-build
1342 ;; This applies upstream commit 4c597d3f7cf9f83a763472aa165a1a4292019f20
1343 (lambda _
1344 (substitute* "setup.py"
1345 (("except NameError")
1346 "except EOFError, NameError"))
1347 #t))
1348 ;; XXX: python setup.py does not build and install bitmsghash,
1349 ;; without it PyBitmessage tries to compile it at first run
1350 ;; in the store, which due to obvious reasons fails. Do it
1351 ;; and place it in /lib.
1352 (add-after 'unpack 'build-and-install-bitmsghash
1353 (lambda* (#:key outputs #:allow-other-keys)
1354 (with-directory-excursion "src/bitmsghash"
1355 (system* "make")
1356 (install-file "bitmsghash.so"
1357 (string-append (assoc-ref outputs "out") "/lib")))
1358 #t)))))
1359 (license license:expat)
1360 (description
1361 "Distributed and trustless peer-to-peer communications protocol
1362 for sending encrypted messages to one person or many subscribers.")
1363 (synopsis "Distributed peer-to-peer communication")
1364 (home-page "https://bitmessage.org/")))
1365
1366 (define-public ytalk
1367 (package
1368 (name "ytalk")
1369 (version "3.3.0")
1370 (source
1371 (origin
1372 (method url-fetch)
1373 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1374 version ".tar.gz"))
1375 (sha256
1376 (base32
1377 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1378 (build-system gnu-build-system)
1379 (inputs
1380 `(("ncurses" ,ncurses)))
1381 (home-page "https://ytalk.ourproject.org")
1382 (synopsis "Multi-user chat program")
1383 (description "Ytalk is a replacement for the BSD talk program. Its main
1384 advantage is the ability to communicate with any arbitrary number of users at
1385 once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1386 with several different talk daemons at the same time.")
1387 (license license:gpl2+)))
1388
1389 (define-public gloox
1390 (package
1391 (name "gloox")
1392 (version "1.0.24")
1393 (source
1394 (origin
1395 (method url-fetch)
1396 (uri (string-append "https://camaya.net/download/gloox-"
1397 version ".tar.bz2"))
1398 (sha256
1399 (base32 "1jgrd07qr9jvbb5hcmhrqz4w4lvwc51m30jls1fgxf1f5az6455f"))))
1400 (build-system gnu-build-system)
1401 (inputs
1402 `(("libidn" ,libidn)
1403 ("gnutls" ,gnutls)
1404 ("zlib" ,zlib)))
1405 (native-inputs
1406 `(("pkg-config" ,pkg-config)))
1407 (synopsis "Portable high-level Jabber/XMPP library for C++")
1408 (description
1409 "gloox is a full-featured Jabber/XMPP client library,
1410 written in ANSI C++. It makes writing spec-compliant clients easy
1411 and allows for hassle-free integration of Jabber/XMPP functionality
1412 into existing applications.")
1413 (home-page "https://camaya.net/gloox")
1414 (license license:gpl3)))
1415
1416 (define-public perl-net-psyc
1417 (package
1418 (name "perl-net-psyc")
1419 (version "1.3")
1420 (source
1421 (origin
1422 (method url-fetch)
1423 (uri (string-append "https://perl.psyc.eu/"
1424 "perlpsyc-" version ".zip"))
1425 (file-name (string-append name "-" version ".zip"))
1426 (sha256
1427 (base32
1428 "0vsjclglkwgbyd9m5ad642fyysxw2x725nhq4r2m9pvqaq6s5yf2"))))
1429 (build-system perl-build-system)
1430 (native-inputs
1431 `(("unzip" ,unzip)))
1432 (inputs
1433 `(("perl-curses" ,perl-curses)
1434 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1435 (arguments
1436 `(#:phases
1437 (modify-phases %standard-phases
1438 (delete 'configure) ; No configure script
1439 ;; There is a Makefile, but it does not install everything
1440 ;; (leaves out psycion) and says
1441 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1442 (replace 'build
1443 (lambda _ (invoke "make" "manuals")))
1444 (replace 'install
1445 (lambda* (#:key outputs #:allow-other-keys)
1446 (let* ((out (assoc-ref outputs "out"))
1447 (doc (string-append out "/share/doc/perl-net-psyc"))
1448 (man1 (string-append out "/share/man/man1"))
1449 (man3 (string-append out "/share/man/man3"))
1450 (bin (string-append out "/bin"))
1451 (libpsyc (string-append out "/lib/psyc/ion"))
1452 (libperl (string-append out "/lib/perl5/site_perl/"
1453 ,(package-version perl))))
1454
1455 (copy-recursively "lib/perl5" libperl)
1456 (copy-recursively "lib/psycion" libpsyc)
1457 (copy-recursively "bin" bin)
1458 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1459 (copy-recursively "contrib" (string-append doc "/contrib"))
1460 (copy-recursively "hooks" (string-append doc "/hooks"))
1461 (copy-recursively "sdj" (string-append doc "/sdj"))
1462 (install-file "README.txt" doc)
1463 (install-file "TODO.txt" doc)
1464 (copy-recursively "share/man/man1" man1)
1465 (copy-recursively "share/man/man3" man3)
1466 #t)))
1467 (add-after 'install 'wrap-programs
1468 (lambda* (#:key outputs #:allow-other-keys)
1469 ;; Make sure all executables in "bin" find the Perl modules
1470 ;; provided by this package at runtime.
1471 (let* ((out (assoc-ref outputs "out"))
1472 (bin (string-append out "/bin/"))
1473 (path (getenv "PERL5LIB")))
1474 (for-each (lambda (file)
1475 (wrap-program file
1476 `("PERL5LIB" ":" prefix (,path))))
1477 (find-files bin "\\.*$"))
1478 #t))))))
1479 (description
1480 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1481 Gtk2 event loops. This package includes 12 applications and additional scripts:
1482 psycion (a @uref{https://about.psyc.eu,PSYC} chat client), remotor (a control console
1483 for @uref{https://torproject.org,tor} router) and many more.")
1484 (synopsis "Perl implementation of PSYC protocol")
1485 (home-page "https://perl.psyc.eu")
1486 (license (list license:gpl2
1487 license:perl-license
1488 ;; contrib/irssi-psyc.pl:
1489 license:public-domain
1490 ;; bin/psycplay states AGPL with no version:
1491 license:agpl3+))))
1492
1493 (define-public libpsyc
1494 (package
1495 (name "libpsyc")
1496 (version "20160913")
1497 (source (origin
1498 (method url-fetch)
1499 (uri (string-append "http://www.psyced.org/files/"
1500 name "-" version ".tar.xz"))
1501 (sha256
1502 (base32
1503 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1504 (build-system gnu-build-system)
1505 (native-inputs
1506 `(("perl" ,perl)
1507 ("netcat" ,netcat)
1508 ("procps" ,procps)))
1509 (arguments
1510 `(#:make-flags
1511 (list "CC=gcc"
1512 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1513 #:phases
1514 (modify-phases %standard-phases
1515 ;; The rust bindings are the only ones in use, the lpc bindings
1516 ;; are in psyclpc. The other bindings are not used by anything,
1517 ;; the chances are high that the bindings do not even work,
1518 ;; therefore we do not include them.
1519 ;; TODO: Get a cargo build system in Guix.
1520 (delete 'configure)))) ; no configure script
1521 (home-page "https://about.psyc.eu/libpsyc")
1522 (description
1523 "@code{libpsyc} is a PSYC library in C which implements
1524 core aspects of PSYC, useful for all kinds of clients and servers
1525 including psyced.")
1526 (synopsis "PSYC library in C")
1527 (license license:agpl3+)))
1528
1529 ;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
1530 (define-public psyclpc
1531 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1532 (revision "2"))
1533 (package
1534 (name "psyclpc")
1535 (version (string-append "20160821-" revision "." (string-take commit 7)))
1536 (source (origin
1537 (method git-fetch)
1538 (uri (git-reference
1539 (url "git://git.psyced.org/git/psyclpc")
1540 (commit commit)))
1541 (file-name (string-append name "-" version "-checkout"))
1542 (sha256
1543 (base32
1544 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1545 (build-system gnu-build-system)
1546 (arguments
1547 `(#:tests? #f ; There are no tests/checks.
1548 #:configure-flags
1549 ;; If you have questions about this part, look at
1550 ;; "src/settings/psyced" and the ebuild.
1551 (list
1552 "--enable-use-tls=yes"
1553 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1554 (string-append "--prefix="
1555 (assoc-ref %outputs "out"))
1556 ;; src/Makefile: Set MUD_LIB to the directory which contains
1557 ;; the mud data. defaults to MUD_LIB = @libdir@
1558 (string-append "--libdir="
1559 (assoc-ref %outputs "out")
1560 "/opt/psyced/world")
1561 (string-append "--bindir="
1562 (assoc-ref %outputs "out")
1563 "/opt/psyced/bin")
1564 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1565 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1566 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1567 (string-append "--libexecdir="
1568 (assoc-ref %outputs "out")
1569 "/opt/psyced/run"))
1570 #:phases
1571 (modify-phases %standard-phases
1572 (add-before 'configure 'chdir-to-src
1573 ;; We need to pass this as env variables
1574 ;; and manually change the directory.
1575 (lambda _
1576 (chdir "src")
1577 (setenv "CONFIG_SHELL" (which "sh"))
1578 (setenv "SHELL" (which "sh"))
1579 #t)))
1580 #:make-flags (list "install-all")))
1581 (inputs
1582 `(("zlib" ,zlib)
1583 ("openssl" ,openssl-1.0)
1584 ("pcre" ,pcre)))
1585 (native-inputs
1586 `(("pkg-config" ,pkg-config)
1587 ("bison" ,bison)
1588 ("gettext" ,gettext-minimal)
1589 ("help2man" ,help2man)
1590 ("autoconf" ,autoconf)
1591 ("automake" ,automake)))
1592 (home-page "http://lpc.psyc.eu/")
1593 (synopsis "psycLPC is a multi-user network server programming language")
1594 (description
1595 "LPC is a bytecode language, invented to specifically implement
1596 multi user virtual environments on the internet. This technology is used for
1597 MUDs and also the psyced implementation of the Protocol for SYnchronous
1598 Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1599 many bug fixes.")
1600 (license license:gpl2))))
1601
1602 (define-public loudmouth
1603 (package
1604 (name "loudmouth")
1605 (version "1.5.3")
1606 (source
1607 (origin
1608 (method url-fetch)
1609 (uri (string-append "https://mcabber.com/files/loudmouth/"
1610 name "-" version ".tar.bz2"))
1611 (sha256
1612 (base32
1613 "0b6kd5gpndl9nzis3n6hcl0ldz74bnbiypqgqa1vgb0vrcar8cjl"))))
1614 (build-system gnu-build-system)
1615 (inputs
1616 `(("glib" ,glib)
1617 ("gnutls" ,gnutls)
1618 ("libidn" ,libidn)))
1619 (native-inputs
1620 `(("pkg-config" ,pkg-config)
1621 ("check" ,check)
1622 ("glib" ,glib "bin") ; gtester
1623 ("gtk-doc" ,gtk-doc)))
1624 (home-page "https://mcabber.com/")
1625 (description
1626 "Loudmouth is a lightweight and easy-to-use C library for programming
1627 with the XMPP (formerly known as Jabber) protocol. It is designed to be
1628 easy to get started with and yet extensible to let you do anything the XMPP
1629 protocol allows.")
1630 (synopsis "Asynchronous XMPP library")
1631 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1632 (license license:lgpl2.0+)))
1633
1634 (define-public mcabber
1635 (package
1636 (name "mcabber")
1637 (version "1.1.1")
1638 (source
1639 (origin
1640 (method url-fetch)
1641 (uri (string-append "https://mcabber.com/files/"
1642 name "-" version ".tar.bz2"))
1643 (sha256
1644 (base32 "0ngrcc8nzpzk4vw36ni3w073149zsi0yjh922xy9cy5a7srwx2fp"))))
1645 (build-system gnu-build-system)
1646 (arguments
1647 '(#:configure-flags (list "--enable-otr"
1648 "--enable-aspell")))
1649 (inputs
1650 `(("gpgme" ,gpgme)
1651 ("libotr" ,libotr)
1652 ("aspell" ,aspell)
1653 ("libidn" ,libidn)
1654 ("glib" ,glib)
1655 ("ncurses" ,ncurses)
1656 ("loudmouth" ,loudmouth)))
1657 (native-inputs
1658 `(("pkg-config" ,pkg-config)))
1659 (home-page "https://mcabber.com")
1660 (description
1661 "Mcabber is a small XMPP (Jabber) console client, which includes features
1662 such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1663 command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1664 support, and more.")
1665 (synopsis "Small XMPP console client")
1666 (license license:gpl2+)))
1667
1668 (define-public freetalk
1669 (package
1670 (name "freetalk")
1671 (version "4.1")
1672 (source (origin
1673 (method url-fetch)
1674 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1675 version ".tar.gz"))
1676 (sha256
1677 (base32
1678 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1679 (build-system gnu-build-system)
1680 (arguments
1681 `(#:phases
1682 (modify-phases %standard-phases
1683 ;; For 'system' commands in Scheme code.
1684 (add-after 'install 'wrap-program
1685 (lambda* (#:key inputs outputs #:allow-other-keys)
1686 (let* ((out (assoc-ref outputs "out"))
1687 (bash (assoc-ref inputs "bash"))
1688 (coreutils (assoc-ref inputs "coreutils"))
1689 (less (assoc-ref inputs "less")))
1690 (wrap-program (string-append out "/bin/freetalk")
1691 `("PATH" ":" prefix
1692 ,(map (lambda (dir)
1693 (string-append dir "/bin"))
1694 (list bash coreutils less))))
1695 #t))))))
1696 (native-inputs
1697 `(("autoconf" ,autoconf)
1698 ("automake" ,automake)
1699 ("pkg-config" ,pkg-config)
1700 ("texinfo" ,texinfo)))
1701 (inputs
1702 `(("bash" ,bash)
1703 ("glib" ,glib)
1704 ("guile" ,guile-2.0)
1705 ("less" ,less)
1706 ("loudmouth" ,loudmouth)
1707 ("readline" ,readline)))
1708 (synopsis "Extensible console-based Jabber client")
1709 (description
1710 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
1711 the Readline library to handle input, so it features convenient navigation of
1712 text as well as tab-completion of buddy names, commands and English words. It
1713 is also scriptable and extensible via Guile.")
1714 (home-page "https://www.gnu.org/software/freetalk/")
1715 (license license:gpl3+)))
1716
1717 (define-public libmesode
1718 (package
1719 (name "libmesode")
1720 (version "0.9.3")
1721 (source (origin
1722 (method git-fetch)
1723 (uri (git-reference
1724 (url "https://github.com/boothj5/libmesode")
1725 (commit version)))
1726 (file-name (git-file-name name version))
1727 (sha256
1728 (base32
1729 "0xzfg1xx88cn36352nnjlb1p7xyw32yqkhjzq10px88iaaqz1vv0"))))
1730 (build-system gnu-build-system)
1731 (inputs
1732 `(("expat" ,expat)
1733 ("openssl" ,openssl)))
1734 (native-inputs
1735 `(("autoconf" ,autoconf)
1736 ("automake" ,automake)
1737 ("libtool" ,libtool)
1738 ("pkg-config" ,pkg-config)))
1739 (synopsis "C library for writing XMPP clients")
1740 (description "Libmesode is a fork of libstrophe for use with Profanity
1741 XMPP Client. In particular, libmesode provides extra TLS functionality such as
1742 manual SSL certificate verification.")
1743 (home-page "https://github.com/boothj5/libmesode")
1744 ;; Dual-licensed.
1745 (license (list license:gpl3+ license:x11))))
1746
1747 (define-public libstrophe
1748 (package
1749 (name "libstrophe")
1750 (version "0.9.3")
1751 (source
1752 (origin
1753 (method git-fetch)
1754 (uri (git-reference
1755 (url "https://github.com/strophe/libstrophe")
1756 (commit version)))
1757 (file-name (git-file-name name version))
1758 (sha256
1759 (base32 "1g1l0w9z9hdy5ncdvd9097gi7k7783did6py5h9camlpb2fnk5mk"))))
1760 (build-system gnu-build-system)
1761 (inputs
1762 `(("expat" ,expat)
1763 ("openssl" ,openssl)))
1764 (native-inputs
1765 `(("autoconf" ,autoconf)
1766 ("automake" ,automake)
1767 ("libtool" ,libtool)
1768 ("pkg-config" ,pkg-config)))
1769 (synopsis "C library for writing XMPP clients")
1770 (description "Libstrophe is a minimal XMPP library written in C. It has
1771 almost no external dependencies, only an XML parsing library (expat or libxml
1772 are both supported).")
1773 (home-page "http://strophe.im/libstrophe")
1774 ;; Dual-licensed.
1775 (license (list license:gpl3+ license:x11))))
1776
1777 (define-public profanity
1778 (package
1779 (name "profanity")
1780 (version "0.9.5")
1781 (source
1782 (origin
1783 (method url-fetch)
1784 (uri
1785 (string-append "https://profanity-im.github.io/profanity-"
1786 version ".tar.gz"))
1787 (sha256
1788 (base32
1789 "00j9l9v62rz9hprgiy1vrz8v3v59ph18h8kskqxr31fgqvjv5xr3"))))
1790 (build-system glib-or-gtk-build-system)
1791 (arguments
1792 `(#:configure-flags
1793 (list
1794 "--enable-notifications"
1795 "--enable-python-plugins"
1796 "--enable-c-plugins"
1797 "--enable-plugins"
1798 "--enable-otr"
1799 "--enable-pgp"
1800 "--enable-omemo"
1801 "--enable-icons-and-clipboard")))
1802 (native-inputs
1803 `(("autoconf" ,autoconf)
1804 ("autoconf-archive" ,autoconf-archive)
1805 ("automake" ,automake)
1806 ("cmocka" ,cmocka)
1807 ("libtool" ,libtool)
1808 ("pkg-config" ,pkg-config)))
1809 (inputs
1810 `(("curl" ,curl)
1811 ("expat" ,expat)
1812 ("glib" ,glib)
1813 ("gpgme" ,gpgme)
1814 ("gtk+" ,gtk+-2)
1815 ("libmesode" ,libmesode)
1816 ("libnotify" ,libnotify)
1817 ("libotr" ,libotr)
1818 ("libsignal-protocol-c" ,libsignal-protocol-c)
1819 ("ncurses" ,ncurses)
1820 ("openssl" ,openssl)
1821 ("python" ,python-wrapper)
1822 ("readline" ,readline)
1823 ("sqlite" ,sqlite)))
1824 (synopsis "Console-based XMPP client")
1825 (description "Profanity is a console based XMPP client written in C
1826 using ncurses and libmesode, inspired by Irssi.")
1827 (home-page "https://profanity-im.github.io")
1828 (license license:gpl3+)))
1829
1830 (define-public libircclient
1831 (package
1832 (name "libircclient")
1833 (version "1.10")
1834 (source
1835 (origin
1836 (method url-fetch)
1837 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
1838 version "/libircclient-" version ".tar.gz"))
1839 (sha256
1840 (base32
1841 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
1842 (build-system gnu-build-system)
1843 (inputs
1844 `(("openssl" ,openssl)))
1845 (arguments
1846 `(#:configure-flags
1847 (list (string-append "--libdir="
1848 (assoc-ref %outputs "out") "/lib")
1849 "--enable-shared"
1850 "--enable-ipv6"
1851 "--enable-openssl")
1852 #:tests? #f)) ; no test suite
1853 (home-page "https://www.ulduzsoft.com/libircclient/")
1854 (synopsis "Library implementing the client IRC protocol")
1855 (description "Libircclient is a library which implements the client IRC
1856 protocol. It is designed to be small, fast, portable and compatible with the
1857 RFC standards as well as non-standard but popular features. It can be used for
1858 building the IRC clients and bots.")
1859 (license license:lgpl3+)))
1860
1861 (define-public toxic
1862 (package
1863 (name "toxic")
1864 (version "0.8.3")
1865 (source
1866 (origin
1867 (method git-fetch)
1868 (uri (git-reference
1869 (url "https://github.com/JFreegman/toxic")
1870 (commit (string-append "v" version))))
1871 (sha256
1872 (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
1873 (file-name (git-file-name name version))))
1874 (build-system gnu-build-system)
1875 (arguments
1876 `(#:tests? #f ; no tests
1877 #:make-flags
1878 (list
1879 "CC=gcc"
1880 (string-append "PREFIX="
1881 (assoc-ref %outputs "out")))
1882 #:phases
1883 (modify-phases %standard-phases
1884 (delete 'configure)
1885 (add-before 'build 'enable-python-scripting
1886 (lambda _
1887 ;; XXX: For compatibility with Python 3.8, adjust python3-config
1888 ;; invokation to include --embed; see
1889 ;; <https://github.com/JFreegman/toxic/issues/533>.
1890 (substitute* "cfg/checks/python.mk"
1891 (("python3-config --ldflags")
1892 "python3-config --ldflags --embed"))
1893 (setenv "ENABLE_PYTHON" "1")
1894 #t)))))
1895 (inputs
1896 `(("c-toxcore" ,c-toxcore)
1897 ("curl" ,curl)
1898 ("freealut" ,freealut)
1899 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
1900 ("libconfig" ,libconfig)
1901 ("libnotify" ,libnotify)
1902 ("libpng" ,libpng)
1903 ("libvpx" ,libvpx)
1904 ("libx11" ,libx11)
1905 ("ncurses" ,ncurses)
1906 ("openal" ,openal)
1907 ("python" ,python)
1908 ("qrencode" ,qrencode)))
1909 (native-inputs
1910 `(("pkg-config" ,pkg-config)))
1911 (home-page "https://github.com/JFreegman/toxic")
1912 (synopsis "Tox chat client using ncurses")
1913 (description "Toxic is a console-based instant messaging client, using
1914 c-toxcore and ncurses. It provides audio calls, sound and desktop
1915 notifications, and Python scripting support.")
1916 (license license:gpl3+)))
1917
1918 (define-public libqmatrixclient
1919 (package
1920 (name "libqmatrixclient")
1921 (version "0.5.3.2")
1922 (source
1923 (origin
1924 (method git-fetch)
1925 (uri (git-reference
1926 (url "https://github.com/quotient-im/libQuotient")
1927 (commit version)))
1928 (file-name (git-file-name name version))
1929 (sha256
1930 (base32 "0gkwr3yw6k2m0j8cc085b5p2q788rf5nhp1p5hc5d55pc7mci2qs"))))
1931 (build-system cmake-build-system)
1932 (inputs
1933 `(("qtbase" ,qtbase)
1934 ("qtmultimedia" ,qtmultimedia)))
1935 (arguments
1936 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
1937 #:tests? #f)) ; no tests
1938 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
1939 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
1940 (description "libqmatrixclient is a Qt5 library to write clients for the
1941 Matrix instant messaging protocol. Quaternion is the reference client
1942 implementation. Quaternion and libqmatrixclient together form the
1943 QMatrixClient project.")
1944 (license license:lgpl2.1+)))
1945
1946 (define-public mtxclient
1947 (package
1948 (name "mtxclient")
1949 (version "0.3.1")
1950 (source
1951 (origin
1952 (method git-fetch)
1953 (uri (git-reference
1954 (url "https://github.com/Nheko-Reborn/mtxclient")
1955 (commit (string-append "v" version))))
1956 (file-name (git-file-name name version))
1957 (sha256
1958 (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x"))))
1959 (arguments
1960 `(#:configure-flags
1961 (list
1962 ;; Disable example binaries (not installed)
1963 "-DBUILD_LIB_EXAMPLES=OFF")
1964 #:phases
1965 (modify-phases %standard-phases
1966 (add-before 'configure 'disable-network-tests
1967 (lambda _
1968 (substitute* "CMakeLists.txt"
1969 (("add_test\\((BasicConnectivity|ClientAPI|MediaAPI|Encryption|Pushrules)")
1970 "# add_test"))
1971 #t))
1972 (add-before 'configure 'set-home
1973 (lambda _
1974 ;; Tries to create package registry file
1975 ;; So, set HOME.
1976 (setenv "HOME" "/tmp")
1977 #t)))))
1978 (build-system cmake-build-system)
1979 (inputs
1980 `(("boost" ,boost)
1981 ("json-modern-cxx" ,json-modern-cxx)
1982 ("libolm" ,libolm)
1983 ("libsodium" ,libsodium)
1984 ("openssl" ,openssl)
1985 ("spdlog" ,spdlog)
1986 ("zlib" ,zlib)))
1987 (native-inputs
1988 `(("googletest" ,googletest)
1989 ("pkg-config" ,pkg-config)))
1990 (home-page "https://github.com/Nheko-Reborn/mtxclient")
1991 (synopsis "Client API library for the Matrix protocol")
1992 (description "@code{mtxclient} is a C++ library that implements client API
1993 for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
1994 (license license:expat)))
1995
1996 (define-public nheko
1997 (package
1998 (name "nheko")
1999 (version "0.7.2")
2000 (source
2001 (origin
2002 (method git-fetch)
2003 (uri (git-reference
2004 (url "https://github.com/Nheko-Reborn/nheko")
2005 (commit (string-append "v" version))))
2006 (file-name (git-file-name name version))
2007 (sha256
2008 (base32 "1cbhgaf9klgxdirrxj571fqwspm0byl75c1xc40l727a6qswvp7s"))))
2009 (arguments
2010 `(#:tests? #f ;no test target
2011 #:configure-flags
2012 (list
2013 "-DCMAKE_BUILD_TYPE=Release"
2014 "-DCMAKE_CXX_FLAGS=-fpermissive")
2015 #:phases
2016 (modify-phases %standard-phases
2017 (add-after 'unpack 'remove-Werror
2018 (lambda _
2019 (substitute* "CMakeLists.txt"
2020 (("-Werror") ""))
2021 #t))
2022 (add-after 'unpack 'fix-determinism
2023 (lambda _
2024 ;; Make Qt deterministic.
2025 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
2026 #t)))))
2027 (build-system qt-build-system)
2028 (inputs
2029 `(("boost" ,boost)
2030 ("cmark" ,cmark)
2031 ("json-modern-cxx" ,json-modern-cxx)
2032 ("libolm" ,libolm)
2033 ("lmdb" ,lmdb)
2034 ("lmdbxx" ,lmdbxx)
2035 ("mtxclient" ,mtxclient)
2036 ("openssl" ,openssl)
2037 ("qtbase" ,qtbase)
2038 ("qtdeclarative" ,qtdeclarative)
2039 ("qtgraphicaleffects" ,qtgraphicaleffects)
2040 ("qtmultimedia" ,qtmultimedia)
2041 ("qtquickcontrols2" ,qtquickcontrols2)
2042 ("qtsvg" ,qtsvg)
2043 ("spdlog" ,spdlog)
2044 ("tweeny" ,tweeny)
2045 ("zlib" ,zlib)))
2046 (native-inputs
2047 `(("pkg-config" ,pkg-config)
2048 ("qtlinguist" ,qttools)))
2049 (home-page "https://github.com/Nheko-Reborn/nheko")
2050 (synopsis "Desktop client for Matrix using Qt and C++14")
2051 (description "@code{Nheko} want to provide a native desktop app for the
2052 Matrix protocol that feels more like a mainstream chat app and less like an IRC
2053 client.
2054
2055 There is support for:
2056 @itemize
2057 @item E2E encryption (text messages only: attachments are currently sent unencrypted).
2058 @item User registration.
2059 @item Creating, joining & leaving rooms.
2060 @item Sending & receiving invites.
2061 @item Sending & receiving files and emoji.
2062 @item Typing notifications.
2063 @item Username auto-completion.
2064 @item Message & mention notifications.
2065 @item Redacting messages.
2066 @item Read receipts.
2067 @item Basic communities support.
2068 @item Room switcher (@key{ctrl-K}).
2069 @item Light, Dark & System themes.
2070 @end itemize")
2071 (license license:gpl3+)))
2072
2073 (define-public quaternion
2074 (package
2075 (name "quaternion")
2076 (version "0.0.9.4e")
2077 (source
2078 (origin
2079 (method git-fetch)
2080 (uri (git-reference
2081 (url "https://github.com/quotient-im/Quaternion")
2082 (commit version)))
2083 (file-name (git-file-name name version))
2084 (sha256
2085 (base32 "0hqhg7l6wpkdbzrdjvrbqymmahziri07ba0hvbii7dd2p0h248fv"))))
2086 (build-system qt-build-system)
2087 (inputs
2088 `(("libqmatrixclient" ,libqmatrixclient)
2089 ("qtbase" ,qtbase)
2090 ("qtdeclarative" ,qtdeclarative)
2091 ("qtmultimedia" ,qtmultimedia)
2092 ("qtquickcontrols" ,qtquickcontrols)
2093 ("qtquickcontrols2" ,qtquickcontrols2)
2094 ("qtsvg" ,qtsvg)
2095 ("qttools" ,qttools)))
2096 (arguments
2097 `(#:tests? #f)) ; no tests
2098 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
2099 (synopsis "Graphical client for the Matrix instant messaging protocol")
2100 (description "Quaternion is a Qt5 desktop client for the Matrix instant
2101 messaging protocol. It uses libqmatrixclient and is its reference client
2102 implementation. Quaternion and libqmatrixclient together form the
2103 QMatrixClient project.")
2104 (license (list license:gpl3+ ; all source code
2105 license:lgpl3+)))) ; icons/breeze
2106
2107 (define-public hangups
2108 (package
2109 (name "hangups")
2110 (version "0.4.11")
2111 (source
2112 (origin
2113 (method url-fetch)
2114 (uri (pypi-uri "hangups" version))
2115 (sha256
2116 (base32 "165lravvlsgkv6pp3vgg785ihycvs43qzqxw2d2yygrc6pbhqlyv"))))
2117 (build-system python-build-system)
2118 (arguments
2119 `(#:phases
2120 (modify-phases %standard-phases
2121 (add-before 'build 'relax-dependencies
2122 ;; Relax overly strict package version specifications.
2123 (lambda _
2124 (substitute* "setup.py"
2125 (("==") ">="))
2126 #t)))))
2127 (propagated-inputs
2128 `(("python-aiohttp" ,python-aiohttp)
2129 ("python-appdirs" ,python-appdirs)
2130 ("python-async-timeout" ,python-async-timeout)
2131 ("python-configargparse" ,python-configargparse)
2132 ("python-mechanicalsoup" ,python-mechanicalsoup)
2133 ("python-protobuf" ,python-protobuf-3.6)
2134 ("python-readlike" ,python-readlike)
2135 ("python-reparser" ,python-reparser)
2136 ("python-requests" ,python-requests)
2137 ("python-urwid" ,python-urwid)))
2138 (native-inputs
2139 `(("python-httpretty" ,python-httpretty)
2140 ("python-pytest" ,python-pytest)))
2141 (home-page "https://hangups.readthedocs.io/")
2142 (synopsis "Instant messaging client for Google Hangouts")
2143 (description
2144 "Hangups is an instant messaging client for Google Hangouts. It includes
2145 both a Python library and a reference client with a text-based user interface.
2146
2147 Hangups is implements a reverse-engineered version of Hangouts' proprietary,
2148 non-interoperable protocol, which allows it to support features like group
2149 messaging that aren’t available to clients that connect over XMPP.")
2150 (license license:expat)))
2151
2152 (define-public telegram-purple
2153 (package
2154 (name "telegram-purple")
2155 (version "1.4.2")
2156 (home-page "https://github.com/majn/telegram-purple")
2157 (source (origin
2158 (method git-fetch)
2159 (uri (git-reference
2160 (url home-page)
2161 (commit (string-append "v" version))
2162 (recursive? #t)))
2163 (sha256
2164 (base32
2165 "0imbzhhq9qbj6gvkckrnjhls2vvmmy8db7l6gsd7lng2pbfcn522"))
2166 (modules '((guix build utils)))
2167 (snippet
2168 '(begin
2169 (substitute* "Makefile.in"
2170 ;; By default these two directories point to Pidgin's own
2171 ;; prefix.
2172 (("^PLUGIN_DIR_PURPLE=.*")
2173 (string-append
2174 "exec_prefix := @exec_prefix@\n"
2175 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
2176 (("^DATA_ROOT_DIR_PURPLE=.*")
2177 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
2178
2179 ;; Honor sysconfdir instead of trying to write to /etc.
2180 (("DESTDIR\\)/etc/telegram-purple")
2181 "DESTDIR)@sysconfdir@/telegram-purple"))
2182 #t))
2183 (patches (search-patches "telegram-purple-adjust-test.patch"))
2184 (file-name (git-file-name name version))))
2185 (build-system gnu-build-system)
2186 (native-inputs
2187 `(("pkg-config" ,pkg-config)
2188 ("gettext" ,gettext-minimal)
2189 ("which" ,which)))
2190 (inputs
2191 `(("pidgin" ,pidgin)
2192 ("libgcrypt" ,libgcrypt)
2193 ("libwebp" ,libwebp)
2194 ("glib" ,glib)
2195 ("gtk+" ,gtk+-2)
2196 ("zlib" ,zlib)))
2197 (arguments
2198 `(#:phases
2199 (modify-phases %standard-phases
2200 ;; We're using release tag for repository checkout - let's prepare
2201 ;; header defining GIT_COMMIT manually instead of running git to
2202 ;; identify version which is being compiled. Git repository
2203 ;; is removed anyway and only source code is kept.
2204 (add-after 'unpack 'prepare-commit.h
2205 (lambda _
2206 (with-output-to-file "./commit.h"
2207 (lambda ()
2208 (display
2209 (string-append "//generated by guix, use version instead of "
2210 "commit\n"
2211 "#ifndef GIT_COMMIT\n"
2212 "# define GIT_COMMIT \"v"
2213 ,version "\"\n"
2214 "#endif\n"))))
2215 #t))
2216 (add-before 'configure 'set-SHELL-variables
2217 ;; Set these environment variables so that 'tgl/configure' uses the
2218 ;; right shell and not /bin/sh.
2219 (lambda _
2220 (let ((bash (which "bash")))
2221 (setenv "SHELL" bash)
2222 (setenv "CONFIG_SHELL" bash)
2223 #t))))))
2224 (synopsis "Telegram messaging support for Pidgin")
2225 (description
2226 "Telegram-purple is a plugin for Libpurple, the communication library
2227 used by the Pidgin instant messaging client, that adds support for the
2228 Telegram messenger.")
2229
2230 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
2231 ;; itself is GPLv2+.
2232 (license license:gpl2+)))
2233
2234 (define-public tdlib
2235 (let ((commit "f45d80fe16f99d112d545b7cd74ce46342fe3437")
2236 (revision "0")
2237 (version "1.6.6"))
2238 (package
2239 (name "tdlib")
2240 (version (git-version version revision commit))
2241 (source (origin
2242 (method git-fetch)
2243 (uri (git-reference
2244 (url "https://github.com/tdlib/td")
2245 (commit commit)))
2246 (sha256
2247 (base32
2248 "1q8zw26mqhpdzvqbgc7fmn8rzwm5amb8m7s6impin4342wj7h6nr"))
2249 (file-name (git-file-name name version))))
2250 (build-system cmake-build-system)
2251 (arguments
2252 `(#:tests? #t
2253 #:configure-flags
2254 (list "-DCMAKE_BUILD_TYPE=Release"
2255 "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work.
2256 #:phases
2257 (modify-phases %standard-phases
2258 (add-after 'unpack 'remove-failing-tests
2259 (lambda _
2260 (substitute* "test/CMakeLists.txt"
2261 ;; The test cases are compiled into a distinct binary
2262 ;; which uses mtproto.cpp to attempt to connect to
2263 ;; a remote server. Removing this file from the sources
2264 ;; list disables those specific test cases.
2265 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") ""))
2266 #t)))))
2267 (native-inputs
2268 `(("gperf" ,gperf)
2269 ("openssl" ,openssl)
2270 ("zlib" ,zlib)
2271 ("php" ,php)
2272 ("doxygen" ,doxygen)))
2273 (synopsis "Cross-platform library for building Telegram clients")
2274 (description "Tdlib is a cross-platform library for creating custom
2275 Telegram clients following the official Telegram API. It can be easily used
2276 from almost any programming language with a C-FFI and features first-class
2277 support for high performance Telegram Bot creation.")
2278 (home-page "https://core.telegram.org/tdlib")
2279 (license license:boost1.0))))
2280
2281 (define-public purple-mm-sms
2282 (package
2283 (name "purple-mm-sms")
2284 (version "0.1.4")
2285 (source (origin
2286 (method git-fetch)
2287 (uri (git-reference
2288 (url "https://source.puri.sm/Librem5/purple-mm-sms.git")
2289 (commit (string-append "v" version))))
2290 (file-name (git-file-name name version))
2291 (sha256
2292 (base32
2293 "1daf7zl8bhhm1szkgxflpqql69f2w9i9nlgf1n4p1nynxifz1bim"))))
2294 (build-system gnu-build-system)
2295 (arguments
2296 `(#:make-flags
2297 (let ((out (assoc-ref %outputs "out")))
2298 ;; Fix hardcoded paths
2299 (list (string-append "PREFIX=" out)
2300 (string-append "PLUGIN_DIR_PURPLE=" out "/lib/purple-2")
2301 (string-append "DATA_ROOT_DIR_PURPLE=" out "/share")))
2302 #:tests? #f ; no tests
2303 #:phases
2304 (modify-phases %standard-phases
2305 (delete 'configure))))
2306 (native-inputs
2307 `(("glib:bin" ,glib "bin")
2308 ("pkg-config" ,pkg-config)))
2309 (inputs
2310 `(("modem-manager" ,modem-manager)
2311 ("pidgin" ,pidgin)))
2312 (synopsis "Libpurple plugin for SMS via ModemManager")
2313 (description "Plugin for libpurple to allow sending SMS using ModemManager.")
2314 (home-page "https://source.puri.sm/Librem5/purple-mm-sms")
2315 (license license:gpl2+)))
2316
2317 (define-public chatty
2318 (package
2319 (name "chatty")
2320 (version "0.1.10")
2321 (source (origin
2322 (method git-fetch)
2323 (uri (git-reference
2324 (url "https://source.puri.sm/Librem5/chatty.git")
2325 (commit (string-append "v" version))))
2326 (file-name (git-file-name name version))
2327 (sha256
2328 (base32
2329 "0czvqwjzsb0rvmgrmbh97m1b35rnwl41j7q32z4fcqb7bschibql"))))
2330 (build-system meson-build-system)
2331 (arguments
2332 '(#:phases
2333 (modify-phases %standard-phases
2334 (add-after 'unpack 'skip-updating-desktop-database
2335 (lambda _
2336 (substitute* "meson.build"
2337 (("meson.add_install_script.*") ""))
2338 #t)))))
2339 (native-inputs
2340 `(("gettext" ,gettext-minimal)
2341 ("glib:bin" ,glib "bin")
2342 ("pkg-config" ,pkg-config)))
2343 (inputs
2344 `(("feedbackd" ,feedbackd)
2345 ("folks" ,folks)
2346 ("libgcrypt" ,libgcrypt)
2347 ("libgee" ,libgee)
2348 ("libhandy" ,libhandy-0.0)
2349 ("pidgin" ,pidgin)
2350 ("purple-mm-sms" ,purple-mm-sms)
2351 ("sqlite" ,sqlite)))
2352 (propagated-inputs
2353 `(("adwaita-icon-theme" ,adwaita-icon-theme)
2354 ("evolution-data-server" ,evolution-data-server)))
2355 (synopsis "Mobile client for XMPP and SMS messaging")
2356 (description "Chatty is a chat program for XMPP and SMS. It works on mobile
2357 as well as on desktop platforms. It's based on libpurple and ModemManager.")
2358 (home-page "https://source.puri.sm/Librem5/chatty")
2359 (license license:gpl3+)))
2360
2361 (define-public mosquitto
2362 (package
2363 (name "mosquitto")
2364 (version "1.6.12")
2365 (source
2366 (origin
2367 (method url-fetch)
2368 (uri (string-append "https://mosquitto.org/files/source/mosquitto-"
2369 version ".tar.gz"))
2370 (sha256
2371 (base32
2372 "1yq7y329baa1ly488rw125c3mvsnsa7kjkik602xv1xpkz8p73al"))))
2373 (build-system cmake-build-system)
2374 (inputs
2375 `(("openssl" ,openssl)))
2376 (synopsis "Message broker")
2377 (description "This package provides Eclipse Mosquitto, a message broker
2378 that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto
2379 is lightweight and is suitable for use on all devices from low power single
2380 board computers to full servers.
2381
2382 The MQTT protocol provides a lightweight method of carrying out messaging
2383 using a publish/subscribe model. This makes it suitable for Internet of
2384 Things messaging such as with low power sensors or mobile devices such
2385 as phones, embedded computers or microcontrollers.")
2386 (home-page "https://mosquitto.org/")
2387 ;; Dual licensed.
2388 (license (list license:epl1.0 license:edl1.0))))
2389
2390 ;;; messaging.scm ends here