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