gnu: edirect: Update to 4.10.
[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>
b977cd2b 3;;; Copyright © 2014 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>
246bc76a 6;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
07ab3b8e 7;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
7c706558
MW
8;;;
9;;; This file is part of GNU Guix.
10;;;
11;;; GNU Guix is free software; you can redistribute it and/or modify it
12;;; under the terms of the GNU General Public License as published by
13;;; the Free Software Foundation; either version 3 of the License, or (at
14;;; your option) any later version.
15;;;
16;;; GNU Guix is distributed in the hope that it will be useful, but
17;;; WITHOUT ANY WARRANTY; without even the implied warranty of
18;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;;; GNU General Public License for more details.
20;;;
21;;; You should have received a copy of the GNU General Public License
22;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23
24(define-module (gnu packages messaging)
8b3099cf 25 #:use-module ((guix licenses)
246bc76a 26 #:select (gpl3+ gpl2+ gpl2 lgpl2.1 lgpl2.0+ bsd-2 non-copyleft
a10052ac 27 asl2.0))
b1a2bc89 28 #:use-module (guix utils)
7c706558
MW
29 #:use-module (guix packages)
30 #:use-module (guix download)
31 #:use-module (guix build-system gnu)
b1a2bc89 32 #:use-module (guix build-system glib-or-gtk)
246bc76a 33 #:use-module (guix build-system python)
8b3099cf 34 #:use-module (gnu packages)
b1a2bc89
MW
35 #:use-module (gnu packages autotools)
36 #:use-module (gnu packages avahi)
37 #:use-module (gnu packages check)
38 #:use-module (gnu packages cyrus-sasl)
39 #:use-module (gnu packages databases)
40 #:use-module (gnu packages doxygen)
b977cd2b
JL
41 #:use-module (gnu packages enchant)
42 #:use-module (gnu packages gnome)
43 #:use-module (gnu packages gtk)
b1a2bc89
MW
44 #:use-module (gnu packages xorg)
45 #:use-module (gnu packages xdisorg)
b977cd2b 46 #:use-module (gnu packages libcanberra)
b1a2bc89 47 #:use-module (gnu packages libidn)
b977cd2b 48 #:use-module (gnu packages xml)
8b3099cf 49 #:use-module (gnu packages gnupg)
b1a2bc89 50 #:use-module (gnu packages ncurses)
8b3099cf
MW
51 #:use-module (gnu packages pkg-config)
52 #:use-module (gnu packages glib)
8b3099cf
MW
53 #:use-module (gnu packages python)
54 #:use-module (gnu packages perl)
ea119a28 55 #:use-module (gnu packages tcl)
8b3099cf 56 #:use-module (gnu packages compression)
ea119a28
TUBK
57 #:use-module (gnu packages check)
58 #:use-module (gnu packages admin)
a7fd7b68 59 #:use-module (gnu packages linux)
a10052ac
DT
60 #:use-module (gnu packages tls)
61 #:use-module (gnu packages icu4c))
7c706558
MW
62
63(define-public libotr
64 (package
65 (name "libotr")
89e58e8e 66 (version "4.1.1")
7c706558
MW
67 (source (origin
68 (method url-fetch)
69 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
70 version ".tar.gz"))
71 (sha256
89e58e8e 72 (base32
e3d3546e 73 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
fc1adab1 74 (patches (search-patches "libotr-test-auth-fix.patch"))))
7c706558
MW
75 (build-system gnu-build-system)
76 (propagated-inputs
77 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
78 (inputs `(("libgpg-error" ,libgpg-error)))
89e58e8e 79 (native-inputs `(("perl" ,perl))) ; for the test suite
7c706558
MW
80 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
81 (description
82 "OTR allows you to have private conversations over instant messaging by
008b5257
MW
83providing: (1) Encryption: No one else can read your instant messages. (2)
84Authentication: You are assured the correspondent is who you think it is. (3)
85Deniability: The messages you send do not have digital signatures that are
86checkable by a third party. Anyone can forge messages after a conversation to
87make them look like they came from you. However, during a conversation, your
88correspondent is assured the messages he sees are authentic and
89unmodified. (4) Perfect forward secrecy: If you lose control of your private
90keys, no previous conversation is compromised.")
7c706558
MW
91 (home-page "https://otr.cypherpunks.ca/")
92 (license (list lgpl2.1 gpl2))))
93
8b3099cf
MW
94(define-public bitlbee
95 (package
96 (name "bitlbee")
95791189 97 (version "3.4.1")
8b3099cf
MW
98 (source (origin
99 (method url-fetch)
95791189 100 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
8b3099cf
MW
101 version ".tar.gz"))
102 (sha256
95791189 103 (base32 "1qf0ypa9ba5jvsnpg9slmaran16hcc5fnfzbb1sdch1hjhchn2jh"))))
8b3099cf
MW
104 (build-system gnu-build-system)
105 (native-inputs `(("pkg-config" ,pkg-config)
106 ("check" ,check)))
107 (inputs `(("glib" ,glib)
fa40e4d4 108 ("libotr" ,libotr)
8b3099cf 109 ("gnutls" ,gnutls)
8b3099cf
MW
110 ("python" ,python-2)
111 ("perl" ,perl)))
112 (arguments
113 `(#:phases (alist-cons-after
114 'install 'install-etc
115 (lambda* (#:key (make-flags '()) #:allow-other-keys)
116 (zero? (apply system* "make" "install-etc" make-flags)))
117 (alist-replace
118 'configure
119 ;; bitlbee's configure script does not tolerate many of the
120 ;; variable settings that Guix would pass to it.
121 (lambda* (#:key outputs #:allow-other-keys)
122 (zero? (system* "./configure"
123 (string-append "--prefix="
124 (assoc-ref outputs "out"))
125 "--otr=1")))
126 %standard-phases))))
127 (synopsis "IRC to instant messaging gateway")
128 (description "BitlBee brings IM (instant messaging) to IRC clients, for
129people who have an IRC client running all the time and don't want to run an
130additional IM client. BitlBee currently supports XMPP/Jabber (including
131Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
132microblogging network (plus all other Twitter API compatible services like
133identi.ca and status.net).")
134 (home-page "http://www.bitlbee.org/")
135 (license (list gpl2+ bsd-2))))
136
b977cd2b
JL
137(define-public hexchat
138 (package
139 (name "hexchat")
17946534 140 (version "2.12.0")
b977cd2b
JL
141 (source (origin
142 (method url-fetch)
143 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
144 version ".tar.xz"))
145 (sha256
146 (base32
17946534 147 "17fncwza5r80z9r6j1lrh7h375hp4w6pay08zgnfc3qca6bjy1y2"))))
b977cd2b
JL
148 (build-system gnu-build-system)
149 (native-inputs `(("pkg-config" ,pkg-config)
150 ("intltool" ,intltool)))
151 (inputs `(("dbus-glib" ,dbus-glib)
152 ("dbus" ,dbus)
153 ("enchant" ,enchant)
154 ("glib:bin" ,glib "bin") ;need glib-genmarshal
155 ("gtk" ,gtk+-2)
156 ("libcanberra" ,libcanberra)
157 ("libnotify" ,libnotify)
158 ("openssl" ,openssl)
159 ("perl-xml-parser" ,perl-xml-parser) ;for addons
160 ("python-2" ,python-2))) ;for addons
161 (synopsis "Graphical IRC Client")
162 (description
163 "HexChat lets you connect to multiple IRC networks at once. The main window
164shows the list of currently connected networks and their channels, the current
165conversation and the list of users. It uses colors to differentiate between
166users and to highlight messages. It checks spelling using available
167dictionaries. HexChat can be extended with multiple addons.")
168 (home-page "http://hexchat.net/")
169 (license gpl2+)))
170
ea119a28
TUBK
171(define-public ngircd
172 (package
173 (name "ngircd")
174 (version "22")
175 (source (origin
176 (method url-fetch)
177 (uri (string-append "http://arthur.barton.de/pub/ngircd/ngircd-"
178 version ".tar.xz"))
179 (sha256
180 (base32
181 "17k3g9qd9d010czk5846qxvzkmw4fihv8l6m2a2287crbxm3xhd4"))
fc1adab1
AK
182 (patches (search-patches "ngircd-no-dns-in-tests.patch"
183 "ngircd-handle-zombies.patch"))))
ea119a28
TUBK
184 (build-system gnu-build-system)
185 ;; Needed for the test suite.
186 (native-inputs `(("procps" ,procps)
187 ("expect" ,expect)
188 ("inetutils" ,inetutils)))
189 ;; XXX Add libident, libwrap.
190 (inputs `(("zlib" ,zlib)
191 ("gnutls" ,gnutls)
192 ,@(if (string-suffix? "-linux"
193 (or (%current-target-system)
194 (%current-system)))
195 `(("linux-pam" ,linux-pam))
196 '())))
197 (arguments
198 `(#:configure-flags
199 '("--with-gnutls" "--with-iconv" "--enable-ipv6"
200 ,@(if (string-suffix? "-linux"
201 (or (%current-target-system)
202 (%current-system)))
203 '("--with-pam")
204 '()))
205 #:phases
206 ;; Necessary for the test suite.
207 (alist-cons-after
208 'configure 'post-configure
209 (lambda _
210 (substitute* "src/ngircd/Makefile"
9af288a6
TUBK
211 (("/bin/sh") (which "sh")))
212 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
213 ;; which fails arbitrarily.
214 (with-output-to-file "src/testsuite/getpid.sh"
215 (lambda ()
216 (display
217 (string-append
218 "#!" (which "sh") "\n"
219 "ps -C \"$1\" -o pid=\n"))))
220 ;; Our variant of getpid.sh does not work for interpreter names if a
221 ;; shebang script is run directly as "./foo", so patch cases where
222 ;; the test suite relies on this.
223 (substitute* "src/testsuite/start-server.sh"
224 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
225 ;; 'make' instead.
226 (("getpid.sh sh") "getpid.sh make")))
ea119a28
TUBK
227 %standard-phases)))
228 (home-page "http://ngircd.barton.de/")
229 (synopsis "Lightweight Internet Relay Chat server for small networks")
230 (description
231 "ngIRCd is a lightweight Internet Relay Chat server for small or private
232networks. It is easy to configure, can cope with dynamic IP addresses, and
233supports IPv6, SSL-protected connections as well as PAM for authentication.")
234 (license gpl2+)))
235
b1a2bc89
MW
236(define-public pidgin
237 (package
238 (name "pidgin")
239 (version "2.10.11")
240 (source
241 (origin
242 (method url-fetch)
243 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
244 version "/" name "-" version ".tar.bz2"))
245 (sha256
246 (base32
247 "01s0q30qrjlzj7kkz6f8lvrwsdd55a9yjh2xjjwyyxzw849j3bpj"))
fc1adab1 248 (patches (search-patches "pidgin-add-search-path.patch"))))
b1a2bc89
MW
249 (build-system glib-or-gtk-build-system)
250 (native-inputs
251 `(("pkg-config" ,pkg-config)
252 ("check" ,check)
253 ("intltool" ,intltool)
254 ("gconf" ,gconf)
255 ("python" ,python-2)
256 ("doxygen" ,doxygen)))
257 (inputs
258 `(("gtk+" ,gtk+-2)
259 ("libgcrypt" ,libgcrypt)
260 ("gnutls" ,gnutls)
261 ("cyrus-sasl" ,cyrus-sasl)
262 ("dbus" ,dbus)
263 ("dbus-glib" ,dbus-glib)
264 ("python2-dbus" ,python2-dbus)
265 ("libidn" ,libidn)
266 ("libltdl" ,libltdl)
267 ("libxml2" ,libxml2)
268 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
269 ;; TODO: farstream
270 ;; TODO: meanwhile
271 ;; TODO: network-manager
272 ;; TODO: gtkspell
273 ;; TODO: libxephyr
274 ;; TODO: libgadu
275 ("libxslt" ,libxslt)
276 ("avahi" ,avahi)
277 ("ncurses" ,ncurses)
278 ("sqlite" ,sqlite)
279 ("libice" ,libice)
280 ("libsm" ,libsm)
281 ("libxscrnsaver" ,libxscrnsaver)
282 ("startup-notification" ,startup-notification)))
283 (arguments
284 `(#:configure-flags
285 (list "--disable-gtkspell"
286 "--disable-tcl"
287 "--disable-meanwhile"
288 "--disable-nm" ; XXX remove when we have network-manager
289 "--disable-vv" ; XXX remove when we have farstream and gstreamer
290 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
291 "--enable-cyrus-sasl"
292 (string-append "--with-ncurses-headers="
293 (assoc-ref %build-inputs "ncurses")
294 "/include"))))
295 (native-search-paths
296 (list (search-path-specification
297 (variable "PURPLE_PLUGIN_PATH")
298 (files (list (string-append "lib/purple-"
299 (version-prefix version 1))
300 "lib/pidgin")))))
301 (home-page "http://www.pidgin.im/")
302 (synopsis "Graphical multi-protocol instant messaging client")
303 (description
304 "Pidgin is a modular instant messaging client that supports many popular
305chat protocols.")
306 (license
307 (list
308 gpl2+ ; Most of the code
309 lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
310 lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
311 ;; The following licenses cover the zephyr protocol plugin:
312 (non-copyleft
313 "file://libpurple/protocols/zephyr/mit-copyright.h"
314 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
315 (non-copyleft
316 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
317 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
318
0a143f67
MW
319(define-public pidgin-otr
320 (package
321 (name "pidgin-otr")
f9733422 322 (version "4.0.2")
0a143f67
MW
323 (source (origin
324 (method url-fetch)
325 (uri (string-append "https://otr.cypherpunks.ca/"
326 name "-" version ".tar.gz"))
327 (sha256
328 (base32
f9733422 329 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
0a143f67
MW
330 (build-system gnu-build-system)
331 (native-inputs
332 `(("pkg-config" ,pkg-config)
333 ("intltool" ,intltool)))
334 (inputs
335 `(("pidgin" ,pidgin)
336 ("libotr" ,libotr)
337 ("libgpg-error" ,libgpg-error)
338 ("libgcrypt" ,libgcrypt)
339 ("glib" ,glib)
340 ("gtk+" ,gtk+-2)))
341 (home-page "https://otr.cypherpunks.ca/")
342 (synopsis "Off-the-Record Messaging plugin for Pidgin")
343 (description
344 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
345messaging client. OTR (Off-the-Record) Messaging allows you to have private
346conversations over instant messaging by providing: (1) Encryption: No one else
347can read your instant messages. (2) Authentication: You are assured the
348correspondent is who you think it is. (3) Deniability: The messages you send
349do not have digital signatures that are checkable by a third party. Anyone
350can forge messages after a conversation to make them look like they came from
351you. However, during a conversation, your correspondent is assured the
352messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
353If you lose control of your private keys, no previous conversation is
354compromised.")
355 (license gpl2)))
356
a10052ac
DT
357(define-public znc
358 (package
359 (name "znc")
7b101353 360 (version "1.6.2")
a10052ac
DT
361 (source (origin
362 (method url-fetch)
eb2371bc 363 (uri (string-append "http://znc.in/releases/archive/znc-"
a10052ac
DT
364 version ".tar.gz"))
365 (sha256
366 (base32
7b101353 367 "14q5dyr5zg99hm6j6g1gilcn1zf7dskhxfpz3bnkyhy6q0kpgwgf"))))
a10052ac
DT
368 (build-system gnu-build-system)
369 (arguments
370 '(#:tests? #f ; tries to download GoogleTest with wget
371 #:configure-flags '("--enable-python"
372 "--enable-perl"
373 "--enable-cyrus")))
374 (native-inputs
375 `(("pkg-config" ,pkg-config)
376 ("perl" ,perl)
377 ("python" ,python)))
378 (inputs
379 `(("openssl" ,openssl)
380 ("zlib" ,zlib)
381 ("icu4c" ,icu4c)
382 ("cyrus-sasl" ,cyrus-sasl)))
383 (home-page "http://znc.in")
384 (synopsis "IRC network bouncer")
385 (description "ZNC is an IRC network bouncer or BNC. It can detach the
386client from the actual IRC server, and also from selected channels. Multiple
387clients from different locations can connect to a single ZNC account
388simultaneously and therefore appear under the same nickname on IRC.")
389 (license asl2.0)))
390
246bc76a
RW
391(define-public python-nbxmpp
392 (package
393 (name "python-nbxmpp")
394 (version "0.5.3")
395 (source
396 (origin
397 (method url-fetch)
398 (uri (string-append "https://pypi.python.org/packages/source/n/nbxmpp/"
399 "nbxmpp-" version ".tar.gz"))
400 (sha256
401 (base32
402 "0dcr786dyips1fdvgsn8yvpgcz5j7217fi05c29cfypdl8jnp6mp"))))
403 (build-system python-build-system)
404 ;; No tests included
405 (arguments `(#:tests? #f))
406 (home-page "http://python-nbxmpp.gajim.org")
407 (synopsis "Non-blocking Jabber/XMPP module")
408 (description
409 "The goal of this python library is to provide a way for Python
410applications to use Jabber/XMPP networks in a non-blocking way. This library
411was initially a fork of xmpppy, but is using non-blocking sockets.")
412 (license gpl3+)))
413
414(define-public python2-nbxmpp
415 (package-with-python2 python-nbxmpp))
416
1f321f87
RW
417(define-public gajim
418 (package
419 (name "gajim")
0c0207a9 420 (version "0.16.5")
1f321f87
RW
421 (source (origin
422 (method url-fetch)
423 (uri (string-append "https://gajim.org/downloads/"
424 (version-major+minor version)
425 "/gajim-" version ".tar.bz2"))
426 (sha256
427 (base32
0c0207a9 428 "14fhcqnkqygh91132dnf1idayj4r3iqbwb44sd3mxv20n6ribh55"))))
1f321f87
RW
429 (build-system gnu-build-system)
430 (arguments
0c0207a9
MW
431 `(;; The only check done by gajim-0.16.x is to check that the
432 ;; translations are up-to-date, and in 0.16.5 they are not, so
433 ;; "make check" fails. Therefore, we disable tests for now.
434 ;;
435 ;; XXX TODO Try re-enabling tests in gajim-0.16.6 or later.
436 ;;
437 #:tests? #f
438 #:phases
1f321f87
RW
439 (modify-phases %standard-phases
440 (add-after 'install 'wrap-program
441 (lambda* (#:key outputs #:allow-other-keys)
442 ;; Make sure all Python scripts run with the correct PYTHONPATH.
443 (let ((out (assoc-ref outputs "out"))
444 (path (getenv "PYTHONPATH")))
445 (for-each (lambda (name)
446 (let ((file (string-append out "/bin/" name)))
447 ;; Wrapping destroys identification of intended
448 ;; application, so we need to override "APP".
449 (substitute* file
450 (("APP=`basename \\$0`")
451 (string-append "APP=" name)))
452 (wrap-program file
453 `("PYTHONPATH" ":" prefix (,path)))))
454 '("gajim" "gajim-remote" "gajim-history-manager")))
455 #t)))))
456 (native-inputs
457 `(("intltool" ,intltool)))
458 (propagated-inputs
459 `(("python2-nbxmpp" ,python2-nbxmpp)
460 ("python2-pyopenssl" ,python2-pyopenssl)
461 ("python2-gnupg" ,python2-gnupg)))
462 (inputs
463 `(("python2-pygtk" ,python2-pygtk)
464 ("python" ,python-2)))
465 (home-page "https://gajim.org/")
466 (synopsis "Jabber (XMPP) client")
467 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
468Among its features are: a tabbed chat window and single window modes; support
469for group chat (with Multi-User Chat protocol), invitation, chat to group chat
470transformation; audio and video conferences; file transfer; TLS, GPG and
471end-to-end encryption support; XML console.")
472 (license gpl3+)))
473
7c706558 474;;; messaging.scm ends here