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