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