gnu: r-arrmdata: Use bioconductor-uri.
[jackhill/guix/guix.git] / gnu / packages / messaging.scm
CommitLineData
7c706558 1;;; GNU Guix --- Functional package management for GNU
0c0207a9 2;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
74b86713 3;;; Copyright © 2014, 2017 Julien Lepiller <julien@lepiller.eu>
ea119a28 4;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
2e88d113 5;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
b11af07a 6;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
c6b60d30 7;;; Copyright © 2015, 2018 Efraim Flashner <efraim@flashner.co.il>
47956fa0 8;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
bc1c995e 9;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
5cfec72f 10;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
13292ee5 11;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
9a3da985 12;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
389ae518 13;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
d109b1e8 14;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
90eb705d 15;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
c2a601c9 16;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
31060bff 17;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
ba2fa414 18;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
403604c3 19;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
7c706558
MW
20;;;
21;;; This file is part of GNU Guix.
22;;;
23;;; GNU Guix is free software; you can redistribute it and/or modify it
24;;; under the terms of the GNU General Public License as published by
25;;; the Free Software Foundation; either version 3 of the License, or (at
26;;; your option) any later version.
27;;;
28;;; GNU Guix is distributed in the hope that it will be useful, but
29;;; WITHOUT ANY WARRANTY; without even the implied warranty of
30;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31;;; GNU General Public License for more details.
32;;;
33;;; You should have received a copy of the GNU General Public License
34;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
35
36(define-module (gnu packages messaging)
8b3099cf 37 #:use-module (gnu packages)
661da251 38 #:use-module (gnu packages admin)
bc1c995e 39 #:use-module (gnu packages aidc)
cd4a232d 40 #:use-module (gnu packages aspell)
661da251 41 #:use-module (gnu packages audio)
b1a2bc89
MW
42 #:use-module (gnu packages autotools)
43 #:use-module (gnu packages avahi)
5b494618 44 #:use-module (gnu packages base)
661da251
TGR
45 #:use-module (gnu packages bash)
46 #:use-module (gnu packages bison)
44ddf0f1 47 #:use-module (gnu packages boost)
b1a2bc89 48 #:use-module (gnu packages check)
661da251 49 #:use-module (gnu packages compression)
901c1aae 50 #:use-module (gnu packages crypto)
a829c650 51 #:use-module (gnu packages curl)
b1a2bc89
MW
52 #:use-module (gnu packages cyrus-sasl)
53 #:use-module (gnu packages databases)
99828fa7 54 #:use-module (gnu packages documentation)
b977cd2b 55 #:use-module (gnu packages enchant)
661da251 56 #:use-module (gnu packages fontutils)
ebfc2ecc 57 #:use-module (gnu packages gettext)
661da251 58 #:use-module (gnu packages glib)
b977cd2b 59 #:use-module (gnu packages gnome)
661da251 60 #:use-module (gnu packages gnupg)
403604c3 61 #:use-module (gnu packages gperf)
b977cd2b 62 #:use-module (gnu packages gtk)
661da251
TGR
63 #:use-module (gnu packages guile)
64 #:use-module (gnu packages icu4c)
61f81618 65 #:use-module (gnu packages image)
661da251 66 #:use-module (gnu packages less)
b977cd2b 67 #:use-module (gnu packages libcanberra)
b1a2bc89 68 #:use-module (gnu packages libidn)
661da251 69 #:use-module (gnu packages linux)
1ae27aac 70 #:use-module (gnu packages lua)
661da251 71 #:use-module (gnu packages man)
b1a2bc89 72 #:use-module (gnu packages ncurses)
661da251
TGR
73 #:use-module (gnu packages networking)
74 #:use-module (gnu packages pcre)
75 #:use-module (gnu packages perl)
76 #:use-module (gnu packages photo)
403604c3 77 #:use-module (gnu packages php)
8b3099cf 78 #:use-module (gnu packages pkg-config)
f65fdd95 79 #:use-module (gnu packages protobuf)
8b3099cf 80 #:use-module (gnu packages python)
cc6f4912 81 #:use-module (gnu packages python-crypto)
f65fdd95 82 #:use-module (gnu packages python-web)
44d10b1f 83 #:use-module (gnu packages python-xyz)
661da251
TGR
84 #:use-module (gnu packages qt)
85 #:use-module (gnu packages readline)
cd0322a3 86 #:use-module (gnu packages sqlite)
ea119a28 87 #:use-module (gnu packages tcl)
661da251 88 #:use-module (gnu packages texinfo)
61f81618 89 #:use-module (gnu packages textutils)
a10052ac 90 #:use-module (gnu packages tls)
901c1aae 91 #:use-module (gnu packages video)
ebfc2ecc 92 #:use-module (gnu packages web)
661da251 93 #:use-module (gnu packages xdisorg)
3b38d78e 94 #:use-module (gnu packages xiph)
661da251
TGR
95 #:use-module (gnu packages xml)
96 #:use-module (gnu packages xorg)
97 #:use-module (guix build-system cmake)
98 #:use-module (guix build-system glib-or-gtk)
99 #:use-module (guix build-system gnu)
100 #:use-module (guix build-system meson)
101 #:use-module (guix build-system perl)
102 #:use-module (guix build-system python)
34e31612 103 #:use-module (guix build-system qt)
435d8a83 104 #:use-module (guix build-system trivial)
661da251
TGR
105 #:use-module (guix download)
106 #:use-module (guix git-download)
e0aa5b5b 107 #:use-module (guix hg-download)
661da251
TGR
108 #:use-module ((guix licenses) #:prefix license:)
109 #:use-module (guix packages)
110 #:use-module (guix utils))
7c706558
MW
111
112(define-public libotr
113 (package
114 (name "libotr")
89e58e8e 115 (version "4.1.1")
7c706558
MW
116 (source (origin
117 (method url-fetch)
118 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
119 version ".tar.gz"))
120 (sha256
89e58e8e 121 (base32
e3d3546e 122 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
fc1adab1 123 (patches (search-patches "libotr-test-auth-fix.patch"))))
7c706558
MW
124 (build-system gnu-build-system)
125 (propagated-inputs
126 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
127 (inputs `(("libgpg-error" ,libgpg-error)))
89e58e8e 128 (native-inputs `(("perl" ,perl))) ; for the test suite
7c706558
MW
129 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
130 (description
131 "OTR allows you to have private conversations over instant messaging by
008b5257
MW
132providing: (1) Encryption: No one else can read your instant messages. (2)
133Authentication: You are assured the correspondent is who you think it is. (3)
134Deniability: The messages you send do not have digital signatures that are
135checkable by a third party. Anyone can forge messages after a conversation to
136make them look like they came from you. However, during a conversation, your
137correspondent is assured the messages he sees are authentic and
138unmodified. (4) Perfect forward secrecy: If you lose control of your private
139keys, no previous conversation is compromised.")
7c706558 140 (home-page "https://otr.cypherpunks.ca/")
29e83e1c 141 (license (list license:lgpl2.1 license:gpl2))))
7c706558 142
0d549f60
RH
143(define-public libsignal-protocol-c
144 (package
145 (name "libsignal-protocol-c")
05ca7a91 146 (version "2.3.2")
0d549f60
RH
147 (source (origin
148 (method url-fetch)
149 (uri (string-append "https://github.com/WhisperSystems/"
150 "libsignal-protocol-c/archive/v" version
151 ".tar.gz"))
152 (file-name (string-append name "-" version ".tar.gz"))
153 (sha256
154 (base32
05ca7a91 155 "0380hl6fw3ppf265fg897pyrpqygpx4m9j8ifq118bim8lq6z0pk"))))
0d549f60
RH
156 (arguments
157 `(;; Required for proper linking and for tests to run.
158 #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
159 (build-system cmake-build-system)
160 (inputs `( ;; Required for tests:
c695fb76
TGR
161 ("check" ,check)
162 ("openssl" ,openssl)))
163 (native-inputs `(("pkg-config" ,pkg-config)))
0d549f60
RH
164 (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
165 (synopsis "Implementation of a ratcheting forward secrecy protocol")
166 (description "libsignal-protocol-c is an implementation of a ratcheting
167forward secrecy protocol that works in synchronous and asynchronous
168messaging environments. It can be used with messaging software to provide
169end-to-end encryption.")
170 (license license:gpl3+)))
171
8b3099cf
MW
172(define-public bitlbee
173 (package
174 (name "bitlbee")
5a12bdaf 175 (version "3.5.1")
8b3099cf
MW
176 (source (origin
177 (method url-fetch)
95791189 178 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
8b3099cf
MW
179 version ".tar.gz"))
180 (sha256
5a12bdaf 181 (base32 "0sgsn0fv41rga46mih3fyv65cvfa6rvki8x92dn7bczbi7yxfdln"))))
8b3099cf
MW
182 (build-system gnu-build-system)
183 (native-inputs `(("pkg-config" ,pkg-config)
184 ("check" ,check)))
185 (inputs `(("glib" ,glib)
fa40e4d4 186 ("libotr" ,libotr)
8b3099cf 187 ("gnutls" ,gnutls)
8b3099cf
MW
188 ("python" ,python-2)
189 ("perl" ,perl)))
190 (arguments
dc1d3cde
KK
191 `(#:phases
192 (modify-phases %standard-phases
193 (add-after 'install 'install-etc
194 (lambda* (#:key (make-flags '()) #:allow-other-keys)
bea06837 195 (apply invoke "make" "install-etc" make-flags)))
31060bff
PAR
196 (add-after 'install-etc 'install-lib
197 (lambda* (#:key (make-flags '()) #:allow-other-keys)
bea06837 198 (apply invoke "make" "install-dev" make-flags)))
dc1d3cde
KK
199 (replace 'configure
200 ;; bitlbee's configure script does not tolerate many of the
201 ;; variable settings that Guix would pass to it.
202 (lambda* (#:key outputs #:allow-other-keys)
bea06837
RW
203 (invoke "./configure"
204 (string-append "--prefix="
205 (assoc-ref outputs "out"))
206 "--otr=1"))))))
8b3099cf
MW
207 (synopsis "IRC to instant messaging gateway")
208 (description "BitlBee brings IM (instant messaging) to IRC clients, for
209people who have an IRC client running all the time and don't want to run an
210additional IM client. BitlBee currently supports XMPP/Jabber (including
211Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
212microblogging network (plus all other Twitter API compatible services like
213identi.ca and status.net).")
214 (home-page "http://www.bitlbee.org/")
29e83e1c 215 (license (list license:gpl2+ license:bsd-2))))
8b3099cf 216
b992bfea
PAR
217(define-public bitlbee-discord
218 (package
219 (name "bitlbee-discord")
886e9772 220 (version "0.4.2")
d1ef0e02
TGR
221 (source
222 (origin
223 (method git-fetch)
224 (uri (git-reference
225 (url "https://github.com/sm00th/bitlbee-discord.git")
226 (commit version)))
227 (file-name (git-file-name name version))
228 (sha256
886e9772 229 (base32 "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f"))))
b992bfea
PAR
230 (build-system gnu-build-system)
231 (arguments
232 `(#:phases
233 (modify-phases %standard-phases
e6a24cd0 234 (add-after 'unpack 'patch-autogen
b992bfea
PAR
235 (lambda _
236 (let ((sh (which "sh")))
237 (substitute* "autogen.sh" (("/bin/sh") sh))
e6a24cd0
RW
238 (setenv "CONFIG_SHELL" sh))
239 #t))
b992bfea
PAR
240 (replace 'configure
241 (lambda* (#:key inputs outputs #:allow-other-keys)
242 (invoke "./configure"
243 (string-append "--with-plugindir="
244 (assoc-ref outputs "out")
245 "/lib/bitlbee/")))))))
246 (inputs `(("glib" ,glib)))
247 (native-inputs `(("pkg-config" ,pkg-config)
248 ("autoconf" ,autoconf)
249 ("automake" ,automake)
250 ("texinfo" ,texinfo)
251 ("libtool" ,libtool)
886e9772 252 ("bitlbee" ,bitlbee) ; needs bitlbee headers
b992bfea
PAR
253 ("bash" ,bash)))
254 (synopsis "Discord plugin for Bitlbee")
255 (description "Bitlbee-discord is a plugin for Bitlbee witch provides
256access to servers running the Discord protocol.")
257 (home-page "https://github.com/sm00th/bitlbee-discord/")
258 (license license:gpl2+)))
259
b977cd2b
JL
260(define-public hexchat
261 (package
262 (name "hexchat")
dc5282f9 263 (version "2.14.2")
b977cd2b
JL
264 (source (origin
265 (method url-fetch)
266 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
267 version ".tar.xz"))
268 (sha256
269 (base32
8da527d5
JL
270 "064nq151nzsljv97dmkifyl162d2738vbgvm1phx7yv04pjvk4kp"))
271 (patches (search-patches "hexchat-crash-exit.patch"))))
c2a601c9
LF
272 (build-system meson-build-system)
273 (native-inputs `(("gettext" ,gettext-minimal)
274 ("perl" ,perl)
74b86713 275 ("pkg-config" ,pkg-config)))
b977cd2b
JL
276 (inputs `(("dbus-glib" ,dbus-glib)
277 ("dbus" ,dbus)
278 ("enchant" ,enchant)
279 ("glib:bin" ,glib "bin") ;need glib-genmarshal
280 ("gtk" ,gtk+-2)
281 ("libcanberra" ,libcanberra)
282 ("libnotify" ,libnotify)
c2a601c9 283 ("libproxy" ,libproxy)
b977cd2b 284 ("openssl" ,openssl)
71af71dc
TGR
285
286 ;; Bindings for add-on scripts.
287 ("luajit" ,luajit)
288 ("perl-xml-parser" ,perl-xml-parser)
289 ("python-2" ,python-2)))
74b86713 290 (arguments
c2a601c9 291 `(#:phases
74b86713 292 (modify-phases %standard-phases
c2a601c9
LF
293 (add-after 'unpack 'skip-desktop-database-updates
294 (lambda _
295 ;; The build scripts update icon and desktop file databases when
296 ;; DESTDIR is not set. We can't update these databases from
297 ;; within the build chroot, but we also don't set DESTDIR. So, we
298 ;; just skip this code.
299 (substitute* "meson_post_install.py"
300 (("if 'DESTDIR' not in os.environ:")
301 "if False:"))
189be331 302 #t)))))
b977cd2b
JL
303 (synopsis "Graphical IRC Client")
304 (description
71af71dc
TGR
305 "HexChat lets you connect to multiple IRC networks at once. The main
306window shows the list of currently connected networks and their channels, the
307current conversation and the list of users. It uses colors to differentiate
308between users and to highlight messages. It checks spelling using available
b977cd2b 309dictionaries. HexChat can be extended with multiple addons.")
e02013b7 310 (home-page "https://hexchat.net/")
29e83e1c 311 (license license:gpl2+)))
b977cd2b 312
ea119a28
TUBK
313(define-public ngircd
314 (package
315 (name "ngircd")
31f6c612 316 (version "25")
ea119a28
TUBK
317 (source (origin
318 (method url-fetch)
6809d937 319 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
ea119a28
TUBK
320 version ".tar.xz"))
321 (sha256
322 (base32
31f6c612 323 "0kpf5qi98m9f833r4rx9n6h9p31biwk798jwc1mgzmix7sp7r6f4"))
4fd95d91 324 (patches (search-patches "ngircd-handle-zombies.patch"))))
ea119a28
TUBK
325 (build-system gnu-build-system)
326 ;; Needed for the test suite.
327 (native-inputs `(("procps" ,procps)
328 ("expect" ,expect)
329 ("inetutils" ,inetutils)))
8f3afba4 330 ;; XXX Add libident.
ea119a28 331 (inputs `(("zlib" ,zlib)
8f3afba4 332 ("libwrap" ,tcp-wrappers)
ea119a28
TUBK
333 ("gnutls" ,gnutls)
334 ,@(if (string-suffix? "-linux"
335 (or (%current-target-system)
336 (%current-system)))
337 `(("linux-pam" ,linux-pam))
338 '())))
339 (arguments
340 `(#:configure-flags
8f3afba4 341 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
ea119a28
TUBK
342 ,@(if (string-suffix? "-linux"
343 (or (%current-target-system)
344 (%current-system)))
345 '("--with-pam")
346 '()))
347 #:phases
341ed63f
TGR
348 (modify-phases %standard-phases
349 ;; Necessary for the test suite.
350 (add-after 'configure 'post-configure
351 (lambda _
352 (substitute* "src/ngircd/Makefile"
353 (("/bin/sh") (which "sh")))
354 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
355 ;; which fails arbitrarily.
356 (with-output-to-file "src/testsuite/getpid.sh"
357 (lambda ()
358 (display
359 (string-append
360 "#!" (which "sh") "\n"
361 "ps -C \"$1\" -o pid=\n"))))
362 ;; Our variant of getpid.sh does not match interpreter names
363 ;; when the script's shebang is invoked directly as "./foo".
364 ;; Patch cases where the test suite relies on this.
365 (substitute* "src/testsuite/start-server.sh"
366 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
367 ;; 'make' instead.
368 (("getpid.sh sh") "getpid.sh make")))))))
6809d937 369 (home-page "https://ngircd.barton.de/")
ea119a28
TUBK
370 (synopsis "Lightweight Internet Relay Chat server for small networks")
371 (description
07b7a665
TGR
372 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
373or private networks. It is easy to configure, can cope with dynamic IP
374addresses, and supports IPv6, SSL-protected connections, as well as PAM for
375authentication.")
29e83e1c 376 (license license:gpl2+)))
ea119a28 377
b1a2bc89
MW
378(define-public pidgin
379 (package
380 (name "pidgin")
0fcb0e50 381 (version "2.13.0")
b1a2bc89
MW
382 (source
383 (origin
384 (method url-fetch)
385 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
a4cf65c8 386 version "/pidgin-" version ".tar.bz2"))
b1a2bc89 387 (sha256
0fcb0e50 388 (base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7"))
fc1adab1 389 (patches (search-patches "pidgin-add-search-path.patch"))))
b1a2bc89
MW
390 (build-system glib-or-gtk-build-system)
391 (native-inputs
392 `(("pkg-config" ,pkg-config)
393 ("check" ,check)
394 ("intltool" ,intltool)
395 ("gconf" ,gconf)
396 ("python" ,python-2)
397 ("doxygen" ,doxygen)))
398 (inputs
399 `(("gtk+" ,gtk+-2)
400 ("libgcrypt" ,libgcrypt)
401 ("gnutls" ,gnutls)
402 ("cyrus-sasl" ,cyrus-sasl)
403 ("dbus" ,dbus)
404 ("dbus-glib" ,dbus-glib)
405 ("python2-dbus" ,python2-dbus)
406 ("libidn" ,libidn)
407 ("libltdl" ,libltdl)
408 ("libxml2" ,libxml2)
409 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
410 ;; TODO: farstream
411 ;; TODO: meanwhile
b1a2bc89
MW
412 ;; TODO: gtkspell
413 ;; TODO: libxephyr
414 ;; TODO: libgadu
415 ("libxslt" ,libxslt)
416 ("avahi" ,avahi)
417 ("ncurses" ,ncurses)
569958ae 418 ("network-manager" ,network-manager)
b1a2bc89
MW
419 ("sqlite" ,sqlite)
420 ("libice" ,libice)
421 ("libsm" ,libsm)
422 ("libxscrnsaver" ,libxscrnsaver)
423 ("startup-notification" ,startup-notification)))
424 (arguments
425 `(#:configure-flags
426 (list "--disable-gtkspell"
427 "--disable-tcl"
428 "--disable-meanwhile"
b1a2bc89
MW
429 "--disable-vv" ; XXX remove when we have farstream and gstreamer
430 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
431 "--enable-cyrus-sasl"
432 (string-append "--with-ncurses-headers="
433 (assoc-ref %build-inputs "ncurses")
434 "/include"))))
435 (native-search-paths
436 (list (search-path-specification
437 (variable "PURPLE_PLUGIN_PATH")
438 (files (list (string-append "lib/purple-"
9cf5f134 439 (version-major version))
b1a2bc89 440 "lib/pidgin")))))
dbe2dfa5 441 (home-page "https://www.pidgin.im/")
b1a2bc89
MW
442 (synopsis "Graphical multi-protocol instant messaging client")
443 (description
444 "Pidgin is a modular instant messaging client that supports many popular
445chat protocols.")
446 (license
447 (list
29e83e1c 448 license:gpl2+ ; Most of the code
449 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
450 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
b1a2bc89 451 ;; The following licenses cover the zephyr protocol plugin:
29e83e1c 452 (license:non-copyleft
b1a2bc89
MW
453 "file://libpurple/protocols/zephyr/mit-copyright.h"
454 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
29e83e1c 455 (license:non-copyleft
b1a2bc89
MW
456 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
457 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
458
0a143f67
MW
459(define-public pidgin-otr
460 (package
461 (name "pidgin-otr")
f9733422 462 (version "4.0.2")
0a143f67
MW
463 (source (origin
464 (method url-fetch)
465 (uri (string-append "https://otr.cypherpunks.ca/"
466 name "-" version ".tar.gz"))
467 (sha256
468 (base32
f9733422 469 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
0a143f67
MW
470 (build-system gnu-build-system)
471 (native-inputs
472 `(("pkg-config" ,pkg-config)
473 ("intltool" ,intltool)))
474 (inputs
475 `(("pidgin" ,pidgin)
476 ("libotr" ,libotr)
477 ("libgpg-error" ,libgpg-error)
478 ("libgcrypt" ,libgcrypt)
479 ("glib" ,glib)
480 ("gtk+" ,gtk+-2)))
481 (home-page "https://otr.cypherpunks.ca/")
482 (synopsis "Off-the-Record Messaging plugin for Pidgin")
483 (description
484 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
485messaging client. OTR (Off-the-Record) Messaging allows you to have private
486conversations over instant messaging by providing: (1) Encryption: No one else
487can read your instant messages. (2) Authentication: You are assured the
488correspondent is who you think it is. (3) Deniability: The messages you send
489do not have digital signatures that are checkable by a third party. Anyone
490can forge messages after a conversation to make them look like they came from
491you. However, during a conversation, your correspondent is assured the
492messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
493If you lose control of your private keys, no previous conversation is
494compromised.")
29e83e1c 495 (license license:gpl2)))
0a143f67 496
a10052ac
DT
497(define-public znc
498 (package
499 (name "znc")
254cc3c3 500 (version "1.7.5")
a10052ac
DT
501 (source (origin
502 (method url-fetch)
eb2371bc 503 (uri (string-append "http://znc.in/releases/archive/znc-"
a10052ac
DT
504 version ".tar.gz"))
505 (sha256
506 (base32
254cc3c3 507 "08a7yb2xs85hyyz8dpzfbsfjwj2r6kcii022lj3l4rf8hl9ix558"))))
2b0f3293 508 (build-system cmake-build-system)
a10052ac 509 (arguments
2b0f3293
TGR
510 `(#:configure-flags
511 (list "-DWANT_CYRUS=ON"
44ddf0f1 512 "-DWANT_I18N=ON"
2b0f3293
TGR
513 "-DWANT_PERL=ON"
514 "-DWANT_PYTHON=ON")
515 #:phases
500fc65b
TGR
516 (modify-phases %standard-phases
517 (add-after 'unpack 'unpack-googletest
2b0f3293 518 ;; Copy the googletest sources to where the CMake build expects them.
500fc65b 519 (lambda* (#:key inputs #:allow-other-keys)
2b0f3293
TGR
520 (let ((source (assoc-ref inputs "googletest-source"))
521 (target "third_party/googletest"))
522 (mkdir-p target)
523 (copy-recursively source target)
524 #t))))))
a10052ac 525 (native-inputs
44ddf0f1
TGR
526 `(("boost" ,boost)
527 ("gettext" ,gettext-minimal)
528 ("googletest-source" ,(package-source googletest))
d7463e01 529 ("pkg-config" ,pkg-config)))
a10052ac 530 (inputs
d7463e01 531 `(("cyrus-sasl" ,cyrus-sasl)
a10052ac 532 ("icu4c" ,icu4c)
d7463e01
TGR
533 ("openssl" ,openssl)
534 ("perl" ,perl)
535 ("python" ,python)
536 ("zlib" ,zlib)))
83e07539 537 (home-page "https://znc.in")
a10052ac 538 (synopsis "IRC network bouncer")
1a544482
TGR
539 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
540detach the client from the actual IRC server, and also from selected channels.
541Multiple clients from different locations can connect to a single ZNC account
a10052ac 542simultaneously and therefore appear under the same nickname on IRC.")
29e83e1c 543 (license license:asl2.0)))
a10052ac 544
246bc76a
RW
545(define-public python-nbxmpp
546 (package
547 (name "python-nbxmpp")
bf98373f 548 (version "0.6.10")
246bc76a
RW
549 (source
550 (origin
551 (method url-fetch)
46cb089f 552 (uri (pypi-uri "nbxmpp" version))
246bc76a
RW
553 (sha256
554 (base32
bf98373f 555 "1vq89nhamciblyi5579bppnm4sb0zk5cg5hdipfpz174fxvl2wyd"))))
246bc76a 556 (build-system python-build-system)
46cb089f
TGR
557 (arguments
558 `(#:tests? #f)) ; no tests
559 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
246bc76a
RW
560 (synopsis "Non-blocking Jabber/XMPP module")
561 (description
562 "The goal of this python library is to provide a way for Python
563applications to use Jabber/XMPP networks in a non-blocking way. This library
46cb089f 564was initially a fork of xmpppy, but uses non-blocking sockets.")
29e83e1c 565 (license license:gpl3+)))
246bc76a
RW
566
567(define-public python2-nbxmpp
568 (package-with-python2 python-nbxmpp))
569
1f321f87
RW
570(define-public gajim
571 (package
572 (name "gajim")
bdb372a6 573 (version "1.1.3")
1f321f87
RW
574 (source (origin
575 (method url-fetch)
576 (uri (string-append "https://gajim.org/downloads/"
577 (version-major+minor version)
578 "/gajim-" version ".tar.bz2"))
579 (sha256
580 (base32
bdb372a6 581 "0bzxwcpdd4ydh6d6mzpr0gxwhcb0x9ympk55fpvm1hcw9d28a716"))))
e2d8b4a8 582 (build-system python-build-system)
1f321f87 583 (arguments
5cfec72f 584 `(#:phases
1f321f87 585 (modify-phases %standard-phases
9e3644a8
CL
586 (add-after 'unpack 'add-plugin-dirs
587 (lambda _
588 (substitute* "gajim/common/configpaths.py"
a624c363
RW
589 (("_paths\\['PLUGINS_USER'\\]\\]")
590 "_paths['PLUGINS_USER']] + \
591([os.getenv('GAJIM_PLUGIN_PATH')] \
592if os.getenv('GAJIM_PLUGIN_PATH') \
593and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() \
594else [])"))
9e3644a8 595 #t))
5cfec72f
CL
596 (replace 'check
597 (lambda _
598 (invoke "python" "./setup.py" "test" "-s" "test.no_gui")))
e3a2dd55 599 (add-after 'install 'wrap-gi-typelib-path
0f6b6cb9 600 (lambda* (#:key outputs #:allow-other-keys)
e2d8b4a8
CL
601 (let ((out (assoc-ref outputs "out")))
602 (for-each
603 (lambda (name)
604 (let ((file (string-append out "/bin/" name))
605 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
606 (wrap-program file
607 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
608 '("gajim" "gajim-remote" "gajim-history-manager")))
609 #t))
e2d8b4a8
CL
610 (add-after 'install 'install-icons
611 (lambda* (#:key inputs outputs #:allow-other-keys)
612 (let* ((out (assoc-ref outputs "out"))
613 (adwaita (string-append
614 (assoc-ref inputs "adwaita-icon-theme")
615 "/share/icons/Adwaita"))
616 (hicolor (string-append
617 (assoc-ref inputs "hicolor-icon-theme")
618 "/share/icons/hicolor"))
619 (icons (string-append
620 out "/lib/python"
621 ,(version-major+minor (package-version python))
622 "/site-packages/gajim/data/icons")))
623 (with-directory-excursion icons
624 (symlink adwaita "Adwaita")
625 (copy-recursively hicolor "hicolor")))
8584965b 626 #t))
e3a2dd55 627 (add-after 'install-icons 'wrap-gsettings-schema-dir
8584965b
RH
628 (lambda* (#:key inputs outputs #:allow-other-keys)
629 (wrap-program (string-append (assoc-ref outputs "out")
630 "/bin/gajim")
631 ;; For GtkFileChooserDialog.
632 `("GSETTINGS_SCHEMA_DIR" =
633 (,(string-append (assoc-ref inputs "gtk+")
60c5b444
CL
634 "/share/glib-2.0/schemas"))))
635 #t)))))
9e3644a8
CL
636 (native-search-paths
637 (list (search-path-specification
638 (variable "GAJIM_PLUGIN_PATH")
639 (separator #f) ;single entry
640 (files '("share/gajim/plugins")))
641 ;; Gajim needs to use the propagated inputs of its plugins.
642 (search-path-specification
643 (variable "PYTHONPATH")
644 (files (list (string-append
645 "lib/python"
abad22dd
LC
646
647 ;; FIXME: Cannot use this expression as it would
648 ;; introduce a circular dependency at the top level.
649 ;; (version-major+minor (package-version python))
650 "3.7"
651
9e3644a8 652 "/site-packages"))))))
1f321f87 653 (native-inputs
e2d8b4a8 654 `(("intltool" ,intltool)
37a350ec 655 ("python-docutils" ,python-docutils)
ff337525 656 ("xorg-server" ,xorg-server-for-tests)))
51a0887d 657 (inputs
e2d8b4a8
CL
658 `(("adwaita-icon-theme" ,adwaita-icon-theme)
659 ("gnome-keyring" ,gnome-keyring)
660 ("gtk+" ,gtk+)
661 ("gtkspell3" ,gtkspell3)
662 ("hicolor-icon-theme" ,hicolor-icon-theme)
663 ("libsecret" ,libsecret)
992a4965 664 ("python-cssutils" ,python-cssutils)
e2d8b4a8 665 ("python-dbus" ,python-dbus)
e2d8b4a8 666 ("python-gnupg" ,python-gnupg)
992a4965 667 ("python-keyring" ,python-keyring)
e2d8b4a8
CL
668 ("python-nbxmpp" ,python-nbxmpp)
669 ("python-pillow" ,python-pillow)
992a4965 670 ("python-precis-i18n" ,python-precis-i18n)
e2d8b4a8
CL
671 ("python-pycairo" ,python-pycairo)
672 ("python-pygobject" ,python-pygobject)
673 ("python-pyopenssl" ,python-pyopenssl)
674 ("python-qrcode" ,python-qrcode)))
1f321f87
RW
675 (home-page "https://gajim.org/")
676 (synopsis "Jabber (XMPP) client")
677 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
678Among its features are: a tabbed chat window and single window modes; support
679for group chat (with Multi-User Chat protocol), invitation, chat to group chat
680transformation; audio and video conferences; file transfer; TLS, GPG and
681end-to-end encryption support; XML console.")
d6465efa 682 (license license:gpl3)))
1f321f87 683
435d8a83
CL
684(define-public gajim-omemo
685 (package
686 (name "gajim-omemo")
b019965c 687 (version "2.6.29")
435d8a83
CL
688 (source (origin
689 (method url-fetch/zipbomb)
690 (uri (string-append
691 "https://ftp.gajim.org/plugins_releases/omemo_"
692 version ".zip"))
693 (sha256
694 (base32
b019965c 695 "1mif5qkrvxclqbqmq6njini4laznbs5nn82w2f1hkl8c1284dvgi"))))
435d8a83
CL
696 (build-system trivial-build-system)
697 (arguments
698 `(#:modules ((guix build utils))
699 #:builder
700 (begin
701 (use-modules (guix build utils))
702 (let* ((out (assoc-ref %outputs "out"))
703 (share (in-vicinity out "share/gajim/plugins"))
704 (source (assoc-ref %build-inputs "source")))
705 (mkdir-p share)
706 (copy-recursively source share)
707 #t))))
708 (propagated-inputs
709 `(("python-axolotl" ,python-axolotl)))
710 (home-page
711 "https://dev.gajim.org/gajim/gajim-plugins/wikis/OmemoGajimPlugin")
712 (synopsis "Gajim OMEMO plugin")
713 (description
714 "This package provides the Gajim OMEMO plugin. OMEMO is an XMPP
715Extension Protocol (XEP) for secure multi-client end-to-end encryption based
716on Axolotl and PEP.")
717 (license license:gpl3+)))
718
50cb3c8d
RW
719(define-public dino
720 ;; The only release tarball is for version 0.0, but it is very old and fails
721 ;; to build.
b11af07a
RW
722 (let ((commit "8e14ac6d714b7f88e16de31a6c795e811dc27417")
723 (revision "4"))
50cb3c8d
RW
724 (package
725 (name "dino")
b11af07a 726 (version (git-version "0.0" revision commit))
50cb3c8d
RW
727 (source (origin
728 (method git-fetch)
729 (uri (git-reference
730 (url "https://github.com/dino/dino.git")
b3b07df4 731 (commit commit)))
b11af07a 732 (file-name (git-file-name name version))
50cb3c8d
RW
733 (sha256
734 (base32
b11af07a 735 "0xfmwnc2f8lsvmp7m8ggikzqjaw5z6wmxrv6j5ljha5ckffrdd9m"))))
50cb3c8d
RW
736 (build-system cmake-build-system)
737 (arguments
738 `(#:tests? #f ; there are no tests
739 #:parallel-build? #f ; not supported
d9cd1c22
RH
740 ; Use our libsignal-protocol-c instead of the git submodule.
741 #:configure-flags '("-DSHARED_SIGNAL_PROTOCOL=yes")
50cb3c8d
RW
742 #:modules ((guix build cmake-build-system)
743 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
744 (guix build utils))
745 #:imported-modules (,@%gnu-build-system-modules
746 (guix build cmake-build-system)
747 (guix build glib-or-gtk-build-system))
748 #:phases
749 (modify-phases %standard-phases
b3b07df4
RW
750 ;; The signal-protocol plugin accesses internal headers of
751 ;; libsignal-protocol-c, so we need to put the sources there.
752 (add-after 'unpack 'unpack-sources
753 (lambda* (#:key inputs #:allow-other-keys)
b11af07a
RW
754 (with-directory-excursion "plugins/signal-protocol/libsignal-protocol-c"
755 (invoke "tar" "xvf"
756 (assoc-ref inputs "libsignal-protocol-c-source")
757 "--strip-components=1"))))
50cb3c8d
RW
758 (add-after 'install 'glib-or-gtk-wrap
759 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
760 (inputs
761 `(("libgee" ,libgee)
c695fb76
TGR
762 ("libsignal-protocol-c" ,libsignal-protocol-c)
763 ("libgcrypt" ,libgcrypt)
50cb3c8d 764 ("libsoup" ,libsoup)
b11af07a
RW
765 ("qrencode" ,qrencode)
766 ("sqlite" ,sqlite-with-column-metadata)
50cb3c8d
RW
767 ("gpgme" ,gpgme)
768 ("gtk+" ,gtk+)
769 ("glib-networking" ,glib-networking)
770 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
771 (native-inputs
772 `(("pkg-config" ,pkg-config)
c695fb76 773 ("libsignal-protocol-c-source" ,(package-source libsignal-protocol-c))
50cb3c8d
RW
774 ("glib" ,glib "bin")
775 ("vala" ,vala)
776 ("gettext" ,gettext-minimal)))
777 (home-page "https://dino.im")
778 (synopsis "Graphical Jabber (XMPP) client")
779 (description "Dino is a Jabber (XMPP) client which aims to fit well into
780a graphical desktop environment like GNOME.")
781 (license license:gpl3+))))
782
1ae27aac
RW
783(define-public prosody
784 (package
785 (name "prosody")
c688e314 786 (version "0.11.3")
1ae27aac
RW
787 (source (origin
788 (method url-fetch)
789 (uri (string-append "https://prosody.im/downloads/source/"
790 "prosody-" version ".tar.gz"))
791 (sha256
792 (base32
c688e314 793 "11xz4milv2962qf75vrdwsvd8sy2332nf69202rmvz5989pvvnng"))))
1ae27aac
RW
794 (build-system gnu-build-system)
795 (arguments
627e6d8c 796 `(#:tests? #f ;tests require "busted"
7f39e131 797 #:configure-flags (list "--no-example-certs")
1ae27aac
RW
798 #:modules ((ice-9 match)
799 (srfi srfi-1)
800 (guix build gnu-build-system)
801 (guix build utils))
802 #:phases
803 (modify-phases %standard-phases
804 (add-after 'unpack 'fix-configure-script
805 (lambda _
806 ;; The configure script aborts when it encounters unexpected
807 ;; arguments. Make it more tolerant.
808 (substitute* "configure"
809 (("exit 1") ""))
810 #t))
84bf2a2e
CL
811 (add-after 'unpack 'fix-makefile
812 (lambda _
627e6d8c 813 (substitute* "GNUmakefile"
84bf2a2e
CL
814 ;; prosodyctl needs to read the configuration file.
815 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
816 ;; prosodyctl needs a place to put auto-generated certificates.
817 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
818 #t))
1ae27aac
RW
819 (add-after 'install 'wrap-programs
820 (lambda* (#:key inputs outputs #:allow-other-keys)
821 ;; Make sure all executables in "bin" find the required Lua
822 ;; modules at runtime.
823 (let* ((out (assoc-ref outputs "out"))
824 (bin (string-append out "/bin/"))
825 (deps (delete #f (map (match-lambda
826 ((label . directory)
827 (if (string-prefix? "lua" label)
828 directory #f)))
829 inputs)))
5b494618
CL
830 (lua-path (string-join
831 (map (lambda (path)
832 (string-append
627e6d8c
CL
833 path "/share/lua/5.2/?.lua;"
834 path "/share/lua/5.2/?/?.lua"))
5b494618
CL
835 (cons out deps))
836 ";"))
837 (lua-cpath (string-join
838 (map (lambda (path)
839 (string-append
627e6d8c
CL
840 path "/lib/lua/5.2/?.so;"
841 path "/lib/lua/5.2/?/?.so"))
5b494618
CL
842 (cons out deps))
843 ";"))
844 (openssl (assoc-ref inputs "openssl"))
845 (coreutils (assoc-ref inputs "coreutils"))
846 (path (map (lambda (dir)
847 (string-append dir "/bin"))
848 (list openssl coreutils))))
1ae27aac
RW
849 (for-each (lambda (file)
850 (wrap-program file
5b494618
CL
851 `("LUA_PATH" ";" = (,lua-path))
852 `("LUA_CPATH" ";" = (,lua-cpath))
853 `("PATH" ":" prefix ,path)))
1ae27aac
RW
854 (find-files bin ".*"))
855 #t))))))
856 (inputs
857 `(("libidn" ,libidn)
858 ("openssl" ,openssl)
627e6d8c
CL
859 ("lua" ,lua-5.2)
860 ("lua5.2-bitop" ,lua5.2-bitop)
861 ("lua5.2-expat" ,lua5.2-expat)
862 ("lua5.2-socket" ,lua5.2-socket)
863 ("lua5.2-filesystem" ,lua5.2-filesystem)
864 ("lua5.2-sec" ,lua5.2-sec)))
1ae27aac
RW
865 (home-page "https://prosody.im/")
866 (synopsis "Jabber (XMPP) server")
867 (description "Prosody is a modern XMPP communication server. It aims to
868be easy to set up and configure, and efficient with system resources.
869Additionally, for developers it aims to be easy to extend and give a flexible
870system on which to rapidly develop added functionality, or prototype new
871protocols.")
29e83e1c 872 (license license:x11)))
1ae27aac 873
e0aa5b5b
CL
874(define-public prosody-http-upload
875 (let ((changeset "765735bb590b")
876 (revision "1"))
877 (package
878 (name "prosody-http-upload")
879 (version (string-append "0-" revision "." (string-take changeset 7)))
880 (source (origin
881 (method hg-fetch)
882 (uri (hg-reference
883 (url "https://hg.prosody.im/prosody-modules/")
884 (changeset changeset)))
885 (file-name (string-append name "-" version "-checkout"))
886 (sha256
887 (base32
888 "142wrcism70nf8ffahhd961cqg2pi1h7ic8adfs3zwh0j3pnf41f"))))
889 (build-system trivial-build-system)
890 (arguments
891 '(#:modules ((guix build utils))
892 #:builder
893 (begin
894 (use-modules (guix build utils))
895 (let ((out (assoc-ref %outputs "out"))
896 (source (assoc-ref %build-inputs "source")))
897 (with-directory-excursion (in-vicinity source "mod_http_upload")
898 (install-file "mod_http_upload.lua" out))
899 #t))))
900 (home-page "https://modules.prosody.im/mod_http_upload.html")
901 (synopsis "XEP-0363: Allow clients to upload files over HTTP")
902 (description "This module implements XEP-0363: it allows clients to
903upload files over HTTP.")
904 (license (package-license prosody)))))
905
be1ce9fd
CL
906(define-public prosody-smacks
907 (let ((changeset "67f1d1f22625")
908 (revision "1"))
909 (package
910 (name "prosody-smacks")
911 (version (string-append "0-" revision "." (string-take changeset 7)))
912 (source (origin
913 (method hg-fetch)
914 (uri (hg-reference
915 (url "https://hg.prosody.im/prosody-modules/")
916 (changeset changeset)))
917 (file-name (string-append name "-" version "-checkout"))
918 (sha256
919 (base32
920 "020ngpax30fgarah98yvlj0ni8rcdwq60if03a9hqdw8mic0nxxs"))))
921 (build-system trivial-build-system)
922 (arguments
923 '(#:modules ((guix build utils))
924 #:builder
925 (begin
926 (use-modules (guix build utils))
927 (let ((out (assoc-ref %outputs "out"))
928 (source (assoc-ref %build-inputs "source")))
929 (with-directory-excursion (in-vicinity source "mod_smacks")
930 (install-file "mod_smacks.lua" out))
931 #t))))
932 (home-page "https://modules.prosody.im/mod_smacks.html")
933 (synopsis "XEP-0198: Reliability and fast reconnects for XMPP")
934 (description "This module implements XEP-0198: when supported by both
935the client and server, it can allow clients to resume a disconnected session,
936and prevent message loss.")
937 (license (package-license prosody)))))
938
901c1aae 939(define-public libtoxcore
aaf0e47f
RW
940 (let ((revision "2")
941 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
901c1aae 942 (package
943 (name "libtoxcore")
944 (version (string-append "0.0.0" "-"
945 revision "."(string-take commit 7)))
946 (source (origin
947 (method git-fetch)
948 (uri (git-reference
949 (url "https://github.com/irungentoo/toxcore.git")
950 (commit commit)))
951 (file-name (string-append name "-" version "-checkout"))
952 (sha256
953 (base32
aaf0e47f 954 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
901c1aae 955 (build-system gnu-build-system)
aaf0e47f 956 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
901c1aae 957 (native-inputs
958 `(("autoconf" ,autoconf)
959 ("automake" ,automake)
960 ("libtool" ,libtool)
aaf0e47f 961 ("check" ,check)
901c1aae 962 ("pkg-config" ,pkg-config)))
963 (inputs
964 `(("libsodium" ,libsodium)
965 ("opus" ,opus)
966 ("libvpx" ,libvpx)))
901c1aae 967 (synopsis "Library for the Tox encrypted messenger protocol")
968 (description
969 "C library implementation of the Tox encrypted messenger protocol.")
29e83e1c 970 (license license:gpl3+)
901c1aae 971 (home-page "https://tox.chat"))))
972
0ed5554a 973;; Some tox clients move to c-toxcore, which seems to be where all the
974;; recent development happens. It is run by the same developers as toxcore,
975;; forked into a group namespace.
976(define-public c-toxcore
977 (package
978 (name "c-toxcore")
90eb705d 979 (version "0.2.9")
0ed5554a 980 (source
981 (origin
60186836
RW
982 (method git-fetch)
983 (uri (git-reference
984 (url "https://github.com/TokTok/c-toxcore.git")
985 (commit (string-append "v" version))))
986 (file-name (git-file-name name version))
0ed5554a 987 (sha256
988 (base32
90eb705d 989 "0aljr9hqybla6p61af6fdkv0x8gph7c2wacqqa9hq2z9w0p4fs5j"))))
230bd4bb
RH
990 (arguments
991 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
992 ; for now.
9840b8fa 993 (build-system cmake-build-system)
0ed5554a 994 (native-inputs
9840b8fa
RW
995 `(("pkg-config" ,pkg-config)))
996 (propagated-inputs
0ed5554a 997 `(("libsodium" ,libsodium)
998 ("opus" ,opus)
999 ("libvpx" ,libvpx)))
9840b8fa 1000 (home-page "https://tox.chat")
0ed5554a 1001 (synopsis "Library for the Tox encrypted messenger protocol")
1002 (description
9840b8fa
RW
1003 "Official fork of the C library implementation of the Tox encrypted
1004messenger protocol.")
1005 (license license:gpl3+)))
0ed5554a 1006
3b38d78e
EE
1007(define-public utox
1008 (package
1009 (name "utox")
48c97c27 1010 (version "0.17.1")
3b38d78e
EE
1011 (source
1012 (origin
c11df2e8
RH
1013 (method git-fetch)
1014 (uri (git-reference
1015 (url "https://github.com/uTox/uTox.git")
48c97c27 1016 (commit (string-append "v" version))
c11df2e8
RH
1017 (recursive? #t))) ;; Needed for 'minini' git submodule.
1018 (file-name (string-append name "-" version "-checkout"))
3b38d78e
EE
1019 (sha256
1020 (base32
48c97c27 1021 "17kwqw24iqljp2icih9k6ikx12gzr8zzqr8y5h35bg8m5s8pasq5"))))
c413c6ad 1022 (build-system cmake-build-system)
3b38d78e 1023 (arguments
c11df2e8
RH
1024 `(#:configure-flags '("-DENABLE_TESTS=on")
1025 #:phases
3b38d78e 1026 (modify-phases %standard-phases
907ab9e8
RH
1027 (add-before 'build 'patch-absolute-filename-libgtk-3
1028 (lambda* (#:key inputs outputs #:allow-other-keys)
c11df2e8 1029 (substitute* "../source/src/xlib/gtk.c"
907ab9e8
RH
1030 (("libgtk-3.so")
1031 (string-append (assoc-ref inputs "gtk+")
1032 "/lib/libgtk-3.so")))))
1033 (add-after 'install 'wrap-program
1034 (lambda* (#:key inputs outputs #:allow-other-keys)
1035 (wrap-program (string-append (assoc-ref outputs "out")
1036 "/bin/utox")
1037 ;; For GtkFileChooserDialog.
1038 `("GSETTINGS_SCHEMA_DIR" =
1039 (,(string-append (assoc-ref inputs "gtk+")
1040 "/share/glib-2.0/schemas")))))))))
3b38d78e
EE
1041 (inputs
1042 `(("dbus" ,dbus)
1043 ("filteraudio" ,filteraudio)
1044 ("fontconfig" ,fontconfig)
1045 ("freetype" ,freetype)
1046 ("libsodium" ,libsodium)
c413c6ad 1047 ("c-toxcore" ,c-toxcore)
907ab9e8 1048 ("gtk+" ,gtk+)
3b38d78e
EE
1049 ("libvpx" ,libvpx)
1050 ("libx11" ,libx11)
1051 ("libxext" ,libxext)
1052 ("libxrender" ,libxrender)
1053 ("openal" ,openal)
1054 ("v4l-utils" ,v4l-utils)))
1e0ea1d8
LF
1055 (native-inputs
1056 `(("check" ,check)
1057 ("pkg-config" ,pkg-config)))
3b38d78e 1058 (synopsis "Lightweight Tox client")
c27b31e8 1059 (description
1060 "Utox is a lightweight Tox client. Tox is a distributed and secure
3b38d78e
EE
1061instant messenger with audio and video chat capabilities.")
1062 (home-page "http://utox.org/")
29e83e1c 1063 (license license:gpl3)))
c413c6ad 1064
bc1c995e
AP
1065(define-public qtox
1066 (package
1067 (name "qtox")
7a426eef 1068 (version "1.16.3")
2eb67681
RW
1069 (source (origin
1070 (method url-fetch)
1071 (uri (string-append "https://github.com/qTox/qTox/archive/v"
1072 version ".tar.gz"))
1073 (sha256
1074 (base32
7a426eef 1075 "10n3cgw9xaqin9la8wpd8v83bkjmimicgbyp5ninsdgsrgky4hmq"))
2eb67681
RW
1076 (file-name (string-append name "-" version ".tar.gz"))))
1077 (build-system cmake-build-system)
1078 (arguments
1079 '(#:phases
1080 (modify-phases %standard-phases
1081 (add-after 'unpack 'fix-reproducibility-issues
1082 (lambda _
1083 (substitute* "src/main.cpp"
1084 (("__DATE__") "\"\"")
1085 (("__TIME__") "\"\"")
1086 (("TIMESTAMP") "\"\""))
dab03baa
DNB
1087 #t))
1088 ;; Ensure that icons are found at runtime.
1089 (add-after 'install 'wrap-executable
1090 (lambda* (#:key inputs outputs #:allow-other-keys)
1091 (let ((out (assoc-ref outputs "out")))
1092 (wrap-program (string-append out "/bin/qtox")
1093 `("QT_PLUGIN_PATH" prefix
1094 ,(list (string-append (assoc-ref inputs "qtsvg")
1095 "/lib/qt5/plugins/"))))))))))
bc1c995e 1096 (inputs
7a426eef 1097 `(("ffmpeg" ,ffmpeg)
dab03baa 1098 ("filteraudio" ,filteraudio)
bc1c995e
AP
1099 ("glib" ,glib)
1100 ("gtk+" ,gtk+-2)
1101 ("libsodium" ,libsodium)
2eb67681 1102 ("c-toxcore" ,c-toxcore)
bc1c995e
AP
1103 ("libvpx" ,libvpx)
1104 ("libxscrnsaver" ,libxscrnsaver)
1105 ("libx11" ,libx11)
3d7a1596
RH
1106 ("libexif" ,libexif)
1107 ("sqlite" ,sqlite)
bc1c995e
AP
1108 ("openal" ,openal)
1109 ("qrencode" ,qrencode)
2eb67681
RW
1110 ("qtbase" ,qtbase)
1111 ("qtsvg" ,qtsvg)
bc1c995e
AP
1112 ("sqlcipher" ,sqlcipher)))
1113 (native-inputs
1114 `(("pkg-config" ,pkg-config)
2eb67681 1115 ("qmake" ,qttools)))
bc1c995e
AP
1116 (home-page "https://qtox.github.io/")
1117 (synopsis "Tox chat client using Qt")
1118 (description "qTox is a Tox client that follows the Tox design
1119guidelines. It provides an easy to use application that allows you to
1120connect with friends and family without anyone else listening in.")
1121 (license license:gpl3+)))
3b38d78e 1122
aeca1c0e 1123(define-public pybitmessage
1124 (package
1125 (name "pybitmessage")
315ed91e 1126 (version "0.6.3.2")
aeca1c0e 1127 (source
1128 (origin
315ed91e
RW
1129 (method git-fetch)
1130 (uri (git-reference
1131 (url "https://github.com/Bitmessage/PyBitmessage.git")
1132 (commit version)))
1133 (file-name (string-append name "-" version "-checkout"))
aeca1c0e 1134 (sha256
1135 (base32
315ed91e 1136 "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
58b2835d 1137 (propagated-inputs
1138 ;; TODO:
1139 ;; Package "pyopencl", required in addition to numpy for OpenCL support.
1140 ;; Package "gst123", required in addition to alsa-utils and
1141 ;; mpg123 for sound support.
1142 `(("python2-msgpack" ,python2-msgpack)
1143 ("python2-pythondialog" ,python2-pythondialog)
aeca1c0e 1144 ("python2-pyqt-4" ,python2-pyqt-4)
1145 ("python2-sip" ,python2-sip)
1146 ("python2-pysqlite" ,python2-pysqlite)
1147 ("python2-pyopenssl" ,python2-pyopenssl)))
1148 (native-inputs
58b2835d 1149 `(("openssl" ,openssl)))
1150 (build-system python-build-system)
aeca1c0e 1151 (arguments
58b2835d 1152 `(#:modules ((guix build python-build-system)
1153 (guix build utils))
1154 #:tests? #f ;no test target
1155 #:python ,python-2
aeca1c0e 1156 #:phases
1157 (modify-phases %standard-phases
aeca1c0e 1158 (add-after 'unpack 'fix-unmatched-python-shebangs
1159 (lambda* (#:key inputs #:allow-other-keys)
1160 (substitute* "src/bitmessagemain.py"
1161 (("#!/usr/bin/env python2.7")
1162 (string-append "#!" (which "python"))))
1163 (substitute* "src/bitmessagecli.py"
1164 (("#!/usr/bin/env python2.7.x")
1165 (string-append "#!" (which "python"))))
1166 #t))
1167 (add-after 'unpack 'fix-depends
1168 (lambda* (#:key inputs #:allow-other-keys)
1169 (substitute* "src/depends.py"
1170 (("libcrypto.so")
1171 (string-append (assoc-ref inputs "openssl")
1172 "/lib/libcrypto.so")))
1173 #t))
1174 (add-after 'unpack 'fix-local-files-in-paths
1175 (lambda* (#:key outputs #:allow-other-keys)
1176 (substitute* "src/proofofwork.py"
1177 (("bitmsghash.so")
1178 (string-append (assoc-ref outputs "out")
1179 "/lib/bitmsghash.so")))
1180 #t))
1181 (add-after 'unpack 'fix-pyelliptic
1182 (lambda* (#:key inputs #:allow-other-keys)
1183 (substitute* "src/pyelliptic/openssl.py"
1184 (("libcrypto.so")
1185 (string-append (assoc-ref inputs "openssl")
1186 "/lib/libcrypto.so"))
1187 (("libssl.so")
1188 (string-append (assoc-ref inputs "openssl")
1189 "/lib/libssl.so")))
1190 #t))
58b2835d 1191 (add-after 'unpack 'noninteractive-build
1192 ;; This applies upstream commit 4c597d3f7cf9f83a763472aa165a1a4292019f20
1193 (lambda _
1194 (substitute* "setup.py"
1195 (("except NameError")
1196 "except EOFError, NameError"))
1197 #t))
1198 ;; XXX: python setup.py does not build and install bitmsghash,
1199 ;; without it PyBitmessage tries to compile it at first run
1200 ;; in the store, which due to obvious reasons fails. Do it
aeca1c0e 1201 ;; and place it in /lib.
58b2835d 1202 (add-after 'unpack 'build-and-install-bitmsghash
aeca1c0e 1203 (lambda* (#:key outputs #:allow-other-keys)
58b2835d 1204 (with-directory-excursion "src/bitmsghash"
1205 (system* "make")
1206 (install-file "bitmsghash.so"
1207 (string-append (assoc-ref outputs "out") "/lib")))
1208 #t)))))
aeca1c0e 1209 (license license:expat)
1210 (description
1211 "Distributed and trustless peer-to-peer communications protocol
1212for sending encrypted messages to one person or many subscribers.")
1213 (synopsis "Distributed peer-to-peer communication")
1214 (home-page "https://bitmessage.org/")))
1215
c788c5fe
JD
1216(define-public ytalk
1217 (package
1218 (name "ytalk")
1219 (version "3.3.0")
1220 (source
1221 (origin
1222 (method url-fetch)
1223 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1224 version ".tar.gz"))
1225 (sha256
1226 (base32
1227 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1228 (build-system gnu-build-system)
1229 (inputs
1230 `(("ncurses" ,ncurses)))
1231 (home-page "http://ytalk.ourproject.org")
1232 (synopsis "Multi-user chat program")
1233 (description "Ytalk is a replacement for the BSD talk program. Its main
1234advantage is the ability to communicate with any arbitrary number of users at
1235once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1236with several different talk daemons at the same time.")
1237 (license license:gpl2+)))
1238
3973e137 1239(define-public gloox
1240 (package
1241 (name "gloox")
4a14ee91 1242 (version "1.0.22")
3973e137 1243 (source
1244 (origin
1245 (method url-fetch)
1246 (uri (string-append "https://camaya.net/download/gloox-"
1247 version ".tar.bz2"))
1248 (sha256
1249 (base32
4a14ee91 1250 "0r69gq8if9yy1amjzl7qrq9lzhhna7qgz905ln4wvkwchha1ppja"))))
3973e137 1251 (build-system gnu-build-system)
1252 (inputs
1253 `(("libidn" ,libidn)
1254 ("gnutls" ,gnutls)
1255 ("zlib" ,zlib)))
1256 (native-inputs
1257 `(("pkg-config" ,pkg-config)))
1258 (synopsis "Portable high-level Jabber/XMPP library for C++")
1259 (description
1260 "gloox is a full-featured Jabber/XMPP client library,
1261written in ANSI C++. It makes writing spec-compliant clients easy
1262and allows for hassle-free integration of Jabber/XMPP functionality
1263into existing applications.")
1264 (home-page "https://camaya.net/gloox")
1265 (license license:gpl3)))
c788c5fe 1266
ebfc2ecc 1267(define-public perl-net-psyc
1268 (package
1269 (name "perl-net-psyc")
3fa013af 1270 (version "1.3")
ebfc2ecc 1271 (source
1272 (origin
1273 (method url-fetch)
1274 (uri (string-append "http://perlpsyc.psyc.eu/"
1275 "perlpsyc-" version ".zip"))
1276 (file-name (string-append name "-" version ".zip"))
1277 (sha256
1278 (base32
3fa013af 1279 "0vsjclglkwgbyd9m5ad642fyysxw2x725nhq4r2m9pvqaq6s5yf2"))))
ebfc2ecc 1280 (build-system perl-build-system)
3fa013af
RW
1281 (native-inputs
1282 `(("unzip" ,unzip)))
ebfc2ecc 1283 (inputs
1284 `(("perl-curses" ,perl-curses)
1285 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1286 (arguments
1287 `(#:phases
1288 (modify-phases %standard-phases
1289 (delete 'configure) ; No configure script
1290 ;; There is a Makefile, but it does not install everything
1291 ;; (leaves out psycion) and says
1292 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1293 (replace 'build
3fa013af 1294 (lambda _ (invoke "make" "manuals")))
ebfc2ecc 1295 (replace 'install
1296 (lambda* (#:key outputs #:allow-other-keys)
1297 (let* ((out (assoc-ref outputs "out"))
1298 (doc (string-append out "/share/doc/perl-net-psyc"))
1299 (man1 (string-append out "/share/man/man1"))
1300 (man3 (string-append out "/share/man/man3"))
1301 (bin (string-append out "/bin"))
1302 (libpsyc (string-append out "/lib/psyc/ion"))
1303 (libperl (string-append out "/lib/perl5/site_perl/"
1304 ,(package-version perl))))
1305
1306 (copy-recursively "lib/perl5" libperl)
1307 (copy-recursively "lib/psycion" libpsyc)
1308 (copy-recursively "bin" bin)
1309 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1310 (copy-recursively "contrib" (string-append doc "/contrib"))
1311 (copy-recursively "hooks" (string-append doc "/hooks"))
1312 (copy-recursively "sdj" (string-append doc "/sdj"))
1313 (install-file "README.txt" doc)
1314 (install-file "TODO.txt" doc)
1315 (copy-recursively "share/man/man1" man1)
1316 (copy-recursively "share/man/man3" man3)
1317 #t)))
1318 (add-after 'install 'wrap-programs
1319 (lambda* (#:key outputs #:allow-other-keys)
1320 ;; Make sure all executables in "bin" find the Perl modules
1321 ;; provided by this package at runtime.
1322 (let* ((out (assoc-ref outputs "out"))
1323 (bin (string-append out "/bin/"))
1324 (path (getenv "PERL5LIB")))
1325 (for-each (lambda (file)
1326 (wrap-program file
1327 `("PERL5LIB" ":" prefix (,path))))
1328 (find-files bin "\\.*$"))
1329 #t))))))
1330 (description
1331 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1332Gtk2 event loops. This package includes 12 applications and additional scripts:
1333psycion (a @uref{http://about.psyc.eu,PSYC} chat client), remotor (a control console
1334for @uref{https://torproject.org,tor} router) and many more.")
1335 (synopsis "Perl implementation of PSYC protocol")
1336 (home-page "http://perlpsyc.psyc.eu/")
1337 (license (list license:gpl2
2f3108ad 1338 license:perl-license
ebfc2ecc 1339 ;; contrib/irssi-psyc.pl:
1340 license:public-domain
1341 ;; bin/psycplay states AGPL with no version:
1342 license:agpl3+))))
1343
1344(define-public libpsyc
1345 (package
1346 (name "libpsyc")
1347 (version "20160913")
1348 (source (origin
1349 (method url-fetch)
1350 (uri (string-append "http://www.psyced.org/files/"
1351 name "-" version ".tar.xz"))
1352 (sha256
1353 (base32
1354 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1355 (build-system gnu-build-system)
1356 (native-inputs
1357 `(("perl" ,perl)
1358 ("netcat" ,netcat)
1359 ("procps" ,procps)))
1360 (arguments
1361 `(#:make-flags
1362 (list "CC=gcc"
1363 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1364 #:phases
1365 (modify-phases %standard-phases
1366 ;; The rust bindings are the only ones in use, the lpc bindings
1367 ;; are in psyclpc. The other bindings are not used by anything,
1368 ;; the chances are high that the bindings do not even work,
1369 ;; therefore we do not include them.
1370 ;; TODO: Get a cargo build system in Guix.
1371 (delete 'configure)))) ; no configure script
1372 (home-page "http://about.psyc.eu/libpsyc")
1373 (description
1374 "@code{libpsyc} is a PSYC library in C which implements
1375core aspects of PSYC, useful for all kinds of clients and servers
1376including psyced.")
1377 (synopsis "PSYC library in C")
1378 (license license:agpl3+)))
1379
cf3678df 1380;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
ebfc2ecc 1381(define-public psyclpc
1382 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1383 (revision "2"))
1384 (package
1385 (name "psyclpc")
1386 (version (string-append "20160821-" revision "." (string-take commit 7)))
1387 (source (origin
1388 (method git-fetch)
1389 (uri (git-reference
1390 (url "git://git.psyced.org/git/psyclpc")
1391 (commit commit)))
1392 (file-name (string-append name "-" version "-checkout"))
1393 (sha256
1394 (base32
1395 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1396 (build-system gnu-build-system)
1397 (arguments
1398 `(#:tests? #f ; There are no tests/checks.
1399 #:configure-flags
1400 ;; If you have questions about this part, look at
1401 ;; "src/settings/psyced" and the ebuild.
1402 (list
1403 "--enable-use-tls=yes"
1404 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1405 (string-append "--prefix="
1406 (assoc-ref %outputs "out"))
1407 ;; src/Makefile: Set MUD_LIB to the directory which contains
1408 ;; the mud data. defaults to MUD_LIB = @libdir@
1409 (string-append "--libdir="
1410 (assoc-ref %outputs "out")
1411 "/opt/psyced/world")
1412 (string-append "--bindir="
1413 (assoc-ref %outputs "out")
1414 "/opt/psyced/bin")
1415 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1416 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1417 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1418 (string-append "--libexecdir="
1419 (assoc-ref %outputs "out")
1420 "/opt/psyced/run"))
1421 #:phases
1422 (modify-phases %standard-phases
1423 (add-before 'configure 'chdir-to-src
1424 ;; We need to pass this as env variables
1425 ;; and manually change the directory.
1426 (lambda _
1427 (chdir "src")
1428 (setenv "CONFIG_SHELL" (which "sh"))
1429 (setenv "SHELL" (which "sh"))
1430 #t)))
1431 #:make-flags (list "install-all")))
1432 (inputs
1433 `(("zlib" ,zlib)
1434 ("openssl" ,openssl)
1435 ("pcre" ,pcre)))
1436 (native-inputs
1437 `(("pkg-config" ,pkg-config)
1438 ("bison" ,bison)
1439 ("gettext" ,gettext-minimal)
1440 ("help2man" ,help2man)
1441 ("autoconf" ,autoconf)
1442 ("automake" ,automake)))
1443 (home-page "http://lpc.psyc.eu/")
1444 (synopsis "psycLPC is a multi-user network server programming language")
1445 (description
1446 "LPC is a bytecode language, invented to specifically implement
1447multi user virtual environments on the internet. This technology is used for
1448MUDs and also the psyced implementation of the Protocol for SYnchronous
1449Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1450many bug fixes.")
1451 (license license:gpl2))))
1452
fdfb4b96 1453(define-public loudmouth
1454 (package
1455 (name "loudmouth")
1456 (version "1.5.3")
1457 (source
1458 (origin
1459 (method url-fetch)
1460 (uri (string-append "https://mcabber.com/files/loudmouth/"
1461 name "-" version ".tar.bz2"))
1462 (sha256
1463 (base32
1464 "0b6kd5gpndl9nzis3n6hcl0ldz74bnbiypqgqa1vgb0vrcar8cjl"))))
1465 (build-system gnu-build-system)
1466 (inputs
1467 `(("glib" ,glib)
1468 ("gnutls" ,gnutls)
1469 ("libidn" ,libidn)))
1470 (native-inputs
1471 `(("pkg-config" ,pkg-config)
1472 ("check" ,check)
1473 ("glib" ,glib "bin") ; gtester
1474 ("gtk-doc" ,gtk-doc)))
1475 (home-page "https://mcabber.com/")
1476 (description
1477 "Loudmouth is a lightweight and easy-to-use C library for programming
1478with the XMPP (formerly known as Jabber) protocol. It is designed to be
1479easy to get started with and yet extensible to let you do anything the XMPP
1480protocol allows.")
1481 (synopsis "Asynchronous XMPP library")
1482 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1483 (license license:lgpl2.0+)))
1484
cd4a232d 1485(define-public mcabber
1486 (package
1487 (name "mcabber")
ccccb467 1488 (version "1.1.0")
cd4a232d 1489 (source
1490 (origin
1491 (method url-fetch)
1492 (uri (string-append "https://mcabber.com/files/"
1493 name "-" version ".tar.bz2"))
1494 (sha256
1495 (base32
ccccb467 1496 "1ggh865p1rf10ffsnf4g6qv9i8bls36dxdb1nzs5r9vdqci2rz04"))))
cd4a232d 1497 (build-system gnu-build-system)
1498 (arguments
1499 '(#:configure-flags (list "--enable-otr"
1500 "--enable-aspell")))
1501 (inputs
1502 `(("gpgme" ,gpgme)
1503 ("libotr" ,libotr)
1504 ("aspell" ,aspell)
1505 ("libidn" ,libidn)
1506 ("glib" ,glib)
1507 ("ncurses" ,ncurses)
1508 ("loudmouth" ,loudmouth)))
1509 (native-inputs
1510 `(("pkg-config" ,pkg-config)))
1511 (home-page "https://mcabber.com")
1512 (description
1513 "Mcabber is a small XMPP (Jabber) console client, which includes features
1514such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1515command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1516support, and more.")
1517 (synopsis "Small XMPP console client")
1518 (license license:gpl2+)))
1519
c631233f
CL
1520(define-public freetalk
1521 (package
1522 (name "freetalk")
1523 (version "4.1")
1524 (source (origin
1525 (method url-fetch)
1526 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1527 version ".tar.gz"))
1528 (sha256
1529 (base32
1530 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1531 (build-system gnu-build-system)
1532 (arguments
1533 `(#:phases
1534 (modify-phases %standard-phases
c631233f
CL
1535 ;; For 'system' commands in Scheme code.
1536 (add-after 'install 'wrap-program
1537 (lambda* (#:key inputs outputs #:allow-other-keys)
1538 (let* ((out (assoc-ref outputs "out"))
1539 (bash (assoc-ref inputs "bash"))
1540 (coreutils (assoc-ref inputs "coreutils"))
1541 (less (assoc-ref inputs "less")))
1542 (wrap-program (string-append out "/bin/freetalk")
1543 `("PATH" ":" prefix
1544 ,(map (lambda (dir)
1545 (string-append dir "/bin"))
1546 (list bash coreutils less))))
1547 #t))))))
1548 (native-inputs
1549 `(("autoconf" ,autoconf)
1550 ("automake" ,automake)
1551 ("pkg-config" ,pkg-config)
1552 ("texinfo" ,texinfo)))
1553 (inputs
1554 `(("bash" ,bash)
1555 ("glib" ,glib)
1556 ("guile" ,guile-2.0)
1557 ("less" ,less)
1558 ("loudmouth" ,loudmouth)
1559 ("readline" ,readline)))
1560 (synopsis "Extensible console-based Jabber client")
1561 (description
1562 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
1563the Readline library to handle input, so it features convenient navigation of
1564text as well as tab-completion of buddy names, commands and English words. It
1565is also scriptable and extensible via Guile.")
6fd52309 1566 (home-page "https://www.gnu.org/software/freetalk/")
c631233f
CL
1567 (license license:gpl3+)))
1568
13292ee5
MM
1569(define-public libmesode
1570 (package
1571 (name "libmesode")
6bf449e8 1572 (version "0.9.3")
13292ee5 1573 (source (origin
c60d5a25
TGR
1574 (method git-fetch)
1575 (uri (git-reference
1576 (url "https://github.com/boothj5/libmesode.git")
1577 (commit version)))
1578 (file-name (git-file-name name version))
13292ee5
MM
1579 (sha256
1580 (base32
6bf449e8 1581 "0xzfg1xx88cn36352nnjlb1p7xyw32yqkhjzq10px88iaaqz1vv0"))))
13292ee5 1582 (build-system gnu-build-system)
13292ee5
MM
1583 (inputs
1584 `(("expat" ,expat)
1585 ("openssl" ,openssl)))
1586 (native-inputs
1587 `(("autoconf" ,autoconf)
1588 ("automake" ,automake)
1589 ("libtool" ,libtool)
1590 ("pkg-config" ,pkg-config)))
1591 (synopsis "C library for writing XMPP clients")
1592 (description "Libmesode is a fork of libstrophe for use with Profanity
1593XMPP Client. In particular, libmesode provides extra TLS functionality such as
1594manual SSL certificate verification.")
1595 (home-page "https://github.com/boothj5/libmesode")
6bf449e8 1596 ;; Dual-licensed.
13292ee5
MM
1597 (license (list license:gpl3+ license:x11))))
1598
781d3b07
MM
1599(define-public libstrophe
1600 (package
1601 (name "libstrophe")
75d9d8af 1602 (version "0.9.3")
3368917c
TGR
1603 (source
1604 (origin
1605 (method git-fetch)
1606 (uri (git-reference
1607 (url "https://github.com/strophe/libstrophe.git")
1608 (commit version)))
1609 (file-name (git-file-name name version))
1610 (sha256
1611 (base32 "1g1l0w9z9hdy5ncdvd9097gi7k7783did6py5h9camlpb2fnk5mk"))))
781d3b07 1612 (build-system gnu-build-system)
781d3b07
MM
1613 (inputs
1614 `(("expat" ,expat)
1615 ("openssl" ,openssl)))
1616 (native-inputs
1617 `(("autoconf" ,autoconf)
1618 ("automake" ,automake)
1619 ("libtool" ,libtool)
1620 ("pkg-config" ,pkg-config)))
1621 (synopsis "C library for writing XMPP clients")
1622 (description "Libstrophe is a minimal XMPP library written in C. It has
1623almost no external dependencies, only an XML parsing library (expat or libxml
1624are both supported).")
1625 (home-page "http://strophe.im/libstrophe")
75d9d8af 1626 ;; Dual-licensed.
781d3b07
MM
1627 (license (list license:gpl3+ license:x11))))
1628
a829c650 1629(define-public profanity
71adb422
TLC
1630 (package
1631 (name "profanity")
1632 (version "0.7.1")
1633 (source (origin
1634 (method url-fetch)
1635 (uri (string-append "https://profanity-im.github.io/profanity-"
1636 version ".tar.gz"))
1637 (sha256
1638 (base32
1639 "0nxh81j8ky0fzv47pip1jb7rs5rrin3jx0f3h632bvpjiya45r1z"))))
1640 (build-system gnu-build-system)
6bb93af8
TLC
1641 (arguments
1642 '(#:configure-flags
7644b8b5
TLC
1643 (list "--enable-c-plugins"
1644 "--enable-otr"
1645 "--enable-omemo"
a2c60995 1646 "--enable-pgp"
6bb93af8
TLC
1647 "--enable-icons"
1648 "--enable-notifications")))
71adb422
TLC
1649 (inputs
1650 `(("curl" ,curl)
1651 ("expat" ,expat)
1652 ("glib" ,glib)
1653 ("gpgme" ,gpgme)
1654 ("libmesode" ,libmesode)
1655 ("libotr" ,libotr)
1656 ("ncurses" ,ncurses)
1657 ("openssl" ,openssl)
1658 ("readline" ,readline)))
1659 (native-inputs
1660 `(("autoconf" ,autoconf)
1661 ("autoconf-archive" ,autoconf-archive)
1662 ("automake" ,automake)
1663 ("cmocka" ,cmocka)
6bb93af8
TLC
1664 ("gtk+" ,gtk+-2)
1665 ("libnotify" ,libnotify)
71adb422 1666 ("libtool" ,libtool)
6bb93af8 1667 ("libsignal-protocol-c" ,libsignal-protocol-c)
71adb422
TLC
1668 ("pkg-config" ,pkg-config)))
1669 (synopsis "Console-based XMPP client")
1670 (description "Profanity is a console based XMPP client written in C
a829c650 1671using ncurses and libmesode, inspired by Irssi.")
3dfd73f0 1672 (home-page "https://profanity-im.github.io")
71adb422 1673 (license license:gpl3+)))
a829c650 1674
6fdbd86d
AI
1675(define-public libircclient
1676 (package
1677 (name "libircclient")
b619b7f6 1678 (version "1.10")
6fdbd86d
AI
1679 (source
1680 (origin
1681 (method url-fetch)
1682 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
1683 version "/libircclient-" version ".tar.gz"))
1684 (sha256
1685 (base32
b619b7f6 1686 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
6fdbd86d
AI
1687 (build-system gnu-build-system)
1688 (inputs
1689 `(("openssl" ,openssl)))
1690 (arguments
1691 `(#:configure-flags
1692 (list (string-append "--libdir="
1693 (assoc-ref %outputs "out") "/lib")
1694 "--enable-shared"
1695 "--enable-ipv6"
1696 "--enable-openssl")
b619b7f6 1697 #:tests? #f)) ; no test suite
6fdbd86d
AI
1698 (home-page "https://www.ulduzsoft.com/libircclient/")
1699 (synopsis "Library implementing the client IRC protocol")
1700 (description "Libircclient is a library which implements the client IRC
1701protocol. It is designed to be small, fast, portable and compatible with the
1702RFC standards as well as non-standard but popular features. It can be used for
1703building the IRC clients and bots.")
1704 (license license:lgpl3+)))
1705
61f81618
TF
1706(define-public toxic
1707 (package
1708 (name "toxic")
1987f95f 1709 (version "0.8.3")
0c273c50
TGR
1710 (source
1711 (origin
1712 (method git-fetch)
1713 (uri (git-reference
1714 (url "https://github.com/JFreegman/toxic.git")
1715 (commit (string-append "v" version))))
1716 (sha256
1987f95f 1717 (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
0c273c50 1718 (file-name (git-file-name name version))))
61f81618
TF
1719 (build-system gnu-build-system)
1720 (arguments
1987f95f 1721 `(#:tests? #f ; no tests
61f81618
TF
1722 #:make-flags
1723 (list
1724 "CC=gcc"
1725 (string-append "PREFIX="
1726 (assoc-ref %outputs "out")))
1727 #:phases
1728 (modify-phases %standard-phases
1729 (delete 'configure)
1730 (add-before 'build 'enable-python-scripting
1731 (lambda _
1732 (setenv "ENABLE_PYTHON" "1")
1733 #t)))))
1734 (inputs
1735 `(("c-toxcore" ,c-toxcore)
1736 ("curl" ,curl)
1737 ("freealut" ,freealut)
1987f95f 1738 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
61f81618
TF
1739 ("libconfig" ,libconfig)
1740 ("libnotify" ,libnotify)
1741 ("libpng" ,libpng)
1742 ("libvpx" ,libvpx)
1743 ("libx11" ,libx11)
1744 ("ncurses" ,ncurses)
1745 ("openal" ,openal)
1746 ("python" ,python)
1747 ("qrencode" ,qrencode)))
1748 (native-inputs
1749 `(("pkg-config" ,pkg-config)))
1750 (home-page "https://github.com/JFreegman/toxic")
1751 (synopsis "Tox chat client using ncurses")
1752 (description "Toxic is a console-based instant messaging client, using
1753c-toxcore and ncurses. It provides audio calls, sound and desktop
1754notifications, and Python scripting support.")
1755 (license license:gpl3+)))
1756
9a3da985
AI
1757(define-public libqmatrixclient
1758 (package
1759 (name "libqmatrixclient")
0395c533 1760 (version "0.5.2")
9a3da985
AI
1761 (source
1762 (origin
c6b60d30
EF
1763 (method git-fetch)
1764 (uri (git-reference
1765 (url "https://github.com/QMatrixClient/libqmatrixclient")
0395c533 1766 (commit version)))
c6b60d30 1767 (file-name (git-file-name name version))
9a3da985 1768 (sha256
0395c533 1769 (base32 "1bhlqfs7251fss4icx794ka614npr6zyrpp4qwc4q5408ykfm7lr"))))
9a3da985
AI
1770 (build-system cmake-build-system)
1771 (inputs
0395c533
TGR
1772 `(("qtbase" ,qtbase)
1773 ("qtmultimedia" ,qtmultimedia)))
9a3da985
AI
1774 (arguments
1775 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
0395c533 1776 #:tests? #f)) ; no tests
9a3da985
AI
1777 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
1778 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
1779 (description "libqmatrixclient is a Qt5 library to write clients for the
1780Matrix instant messaging protocol. Quaternion is the reference client
1781implementation. Quaternion and libqmatrixclient together form the
1782QMatrixClient project.")
1783 (license license:lgpl2.1+)))
e81c952a
AI
1784
1785(define-public quaternion
1786 (package
1787 (name "quaternion")
1e9b956e 1788 (version "0.0.9.4c")
e81c952a
AI
1789 (source
1790 (origin
6f066db1
EF
1791 (method git-fetch)
1792 (uri (git-reference
1793 (url "https://github.com/QMatrixClient/Quaternion")
1e9b956e 1794 (commit version)))
6f066db1 1795 (file-name (git-file-name name version))
e81c952a 1796 (sha256
1e9b956e 1797 (base32 "0gpv6b3nn3lsyym8809kiqkpdszfasldqjpk5s542zyn41gdlql4"))))
34e31612 1798 (build-system qt-build-system)
e81c952a
AI
1799 (inputs
1800 `(("libqmatrixclient" ,libqmatrixclient)
29739890 1801 ("qtbase" ,qtbase)
c7ac8e36 1802 ("qtdeclarative" ,qtdeclarative)
1e9b956e 1803 ("qtmultimedia" ,qtmultimedia)
c7ac8e36 1804 ("qtquickcontrols" ,qtquickcontrols)
f920a64a 1805 ("qtquickcontrols2" ,qtquickcontrols2)
c7ac8e36
AI
1806 ("qtsvg" ,qtsvg)
1807 ("qttools" ,qttools)))
e81c952a 1808 (arguments
34e31612 1809 `(#:tests? #f)) ; no tests
e81c952a
AI
1810 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
1811 (synopsis "Graphical client for the Matrix instant messaging protocol")
1812 (description "Quaternion is a Qt5 desktop client for the Matrix instant
1813messaging protocol. It uses libqmatrixclient and is its reference client
1814implementation. Quaternion and libqmatriclient together form the
1815QMatrixClient project.")
1e9b956e
TGR
1816 (license (list license:gpl3+ ; all source code
1817 license:lgpl3+)))) ; icons/breeze
e81c952a 1818
f65fdd95
TGR
1819(define-public hangups
1820 (package
1821 (name "hangups")
d34c6a2a 1822 (version "0.4.10")
f65fdd95
TGR
1823 (source
1824 (origin
1825 (method url-fetch)
1826 (uri (pypi-uri "hangups" version))
1827 (sha256
d34c6a2a 1828 (base32 "0ww9z9kcb02pwnr8q1ll31wkzspc1fci1ly8ifrwzxysp4rxy3j5"))))
f65fdd95
TGR
1829 (build-system python-build-system)
1830 (arguments
1831 `(#:phases
1832 (modify-phases %standard-phases
1833 (add-before 'build 'relax-dependencies
1834 ;; Relax overly strict package version specifications.
1835 (lambda _
1836 (substitute* "setup.py"
1837 (("==") ">="))
1838 #t)))))
1839 (propagated-inputs
1840 `(("python-aiohttp" ,python-aiohttp)
1841 ("python-appdirs" ,python-appdirs)
1842 ("python-async-timeout" ,python-async-timeout)
1843 ("python-configargparse" ,python-configargparse)
1844 ("python-mechanicalsoup" ,python-mechanicalsoup)
837547cb 1845 ("python-protobuf" ,python-protobuf-3.6)
f65fdd95
TGR
1846 ("python-readlike" ,python-readlike)
1847 ("python-reparser" ,python-reparser)
1848 ("python-requests" ,python-requests)
1849 ("python-urwid" ,python-urwid)))
4b27b09a
TGR
1850 (native-inputs
1851 `(("python-httpretty" ,python-httpretty)
1852 ("python-pytest" ,python-pytest)))
f65fdd95
TGR
1853 (home-page "https://hangups.readthedocs.io/")
1854 (synopsis "Instant messaging client for Google Hangouts")
1855 (description
1856 "Hangups is an instant messaging client for Google Hangouts. It includes
1857both a Python library and a reference client with a text-based user interface.
1858
1859Hangups is implements a reverse-engineered version of Hangouts' proprietary,
1860non-interoperable protocol, which allows it to support features like group
1861messaging that aren’t available to clients that connect over XMPP.")
1862 (license license:expat)))
1863
e9a04157
1864(define-public telegram-purple
1865 (package
1866 (name "telegram-purple")
c0fb663e 1867 (version "1.4.2")
e9a04157
1868 (home-page "https://github.com/majn/telegram-purple")
1869 (source (origin
1870 (method git-fetch)
1871 (uri (git-reference
1872 (url home-page)
1873 (commit (string-append "v" version))
1874 (recursive? #t)))
1875 (sha256
1876 (base32
c0fb663e 1877 "0imbzhhq9qbj6gvkckrnjhls2vvmmy8db7l6gsd7lng2pbfcn522"))
e9a04157
1878 (modules '((guix build utils)))
1879 (snippet
1880 '(begin
1881 (substitute* "Makefile.in"
1882 ;; By default these two directories point to Pidgin's own
1883 ;; prefix.
1884 (("^PLUGIN_DIR_PURPLE=.*")
1885 (string-append
1886 "exec_prefix := @exec_prefix@\n"
1887 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
1888 (("^DATA_ROOT_DIR_PURPLE=.*")
1889 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
1890
1891 ;; Honor sysconfdir instead of trying to write to /etc.
1892 (("DESTDIR\\)/etc/telegram-purple")
1893 "DESTDIR)@sysconfdir@/telegram-purple"))
1894 #t))
1895 (patches (search-patches "telegram-purple-adjust-test.patch"))
1896 (file-name (git-file-name name version))))
1897 (build-system gnu-build-system)
1898 (native-inputs
1899 `(("pkg-config" ,pkg-config)
1900 ("which" ,which)))
1901 (inputs
1902 `(("pidgin" ,pidgin)
1903 ("libgcrypt" ,libgcrypt)
1904 ("libwebp" ,libwebp)
1905 ("glib" ,glib)
1906 ("gettext" ,gnu-gettext)
1907 ("gtk+" ,gtk+-2)
1908 ("zlib" ,zlib)))
1909 (arguments
1910 `(#:phases
1911 (modify-phases %standard-phases
1912 ;; We're using release tag for repository checkout - let's prepare
1913 ;; header defining GIT_COMMIT manually instead of running git to
1914 ;; identify version which is being compiled. Git repository
1915 ;; is removed anyway and only source code is kept.
1916 (add-after 'unpack 'prepare-commit.h
1917 (lambda _
1918 (with-output-to-file "./commit.h"
1919 (lambda ()
1920 (display
1921 (string-append "//generated by guix, use version instead of "
1922 "commit\n"
1923 "#ifndef GIT_COMMIT\n"
1924 "# define GIT_COMMIT \"v"
1925 ,version "\"\n"
1926 "#endif\n"))))
1927 #t))
1928 (add-before 'configure 'set-SHELL-variables
1929 ;; Set these environment variables so that 'tgl/configure' uses the
1930 ;; right shell and not /bin/sh.
1931 (lambda _
1932 (let ((bash (which "bash")))
1933 (setenv "SHELL" bash)
1934 (setenv "CONFIG_SHELL" bash)
1935 #t))))))
1936 (synopsis "Telegram messaging support for Pidgin")
1937 (description
1938 "Telegram-purple is a plugin for Libpurple, the communication library
1939used by the Pidgin instant messaging client, that adds support for the
1940Telegram messenger.")
1941
1942 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
1943 ;; itself is GPLv2+.
1944 (license license:gpl2+)))
1945
403604c3
BG
1946(define-public tdlib
1947 (let ((commit "afca63a4f43531058a079e91eb5c81f54ad744b5")
1948 (revision "1")
1949 (version "1.5.0"))
1950 (package
1951 (name "tdlib")
1952 (version (git-version version revision commit))
1953 (source (origin
1954 (method git-fetch)
1955 (uri (git-reference
1956 (url "https://github.com/tdlib/td.git")
1957 (commit commit)))
1958 (sha256
1959 (base32
1960 "1aa3p4k32mfshgc6fv58gwg8pnaix39rv455hfx6znj7llr8na6k"))
1961 (file-name (git-file-name name version))))
1962 (build-system cmake-build-system)
1963 (arguments
1964 `(#:tests? #t
1965 #:phases
1966 (modify-phases %standard-phases
1967 (add-after 'unpack 'remove-failing-tests
1968 (lambda _
1969 (substitute* "test/CMakeLists.txt"
1970 ;; The test cases are compiled into a distinct binary
1971 ;; which uses mtproto.cpp to attempt to connect to
1972 ;; a remote server. Removing this file from the sources
1973 ;; list disables those specific test cases.
1974 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") ""))
1975 #t)))))
1976 (native-inputs
1977 `(("gperf" ,gperf)
1978 ("openssl" ,openssl)
1979 ("zlib" ,zlib)
1980 ("php" ,php)
1981 ("doxygen" ,doxygen)))
1982 (synopsis "Cross-platform library for building Telegram clients")
1983 (description "Tdlib is a cross-platform library for creating custom
1984Telegram clients following the official Telegram API. It can be easily used
1985from almost any programming language with a C-FFI and features first-class
1986support for high performance Telegram Bot creation.")
1987 (home-page "https://core.telegram.org/tdlib")
1988 (license license:boost1.0))))
1989
7c706558 1990;;; messaging.scm ends here