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