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