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