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