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