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