gnu: glade: Add catalog and module search paths.
[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>
b11af07a 6;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
e88745a6 7;;; Copyright © 2015, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
3c986a7d 8;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
bc1c995e 9;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
5cfec72f 10;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
13292ee5 11;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
a1da0fb2 12;;; Copyright © 2017, 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
d774fabe 13;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
d109b1e8 14;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
90eb705d 15;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
c2a601c9 16;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
31060bff 17;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
ba2fa414 18;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
638a108f 19;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
85ad4ffb 20;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
b40f4052 21;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
79edfcf2 22;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
93600aae 23;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
1a2e3d94 24;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
593ef98a 25;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
7cb3e9c3 26;;; Copyright © 2020 Mason Hock <chaosmonk@riseup.net>
7c706558
MW
27;;;
28;;; This file is part of GNU Guix.
29;;;
30;;; GNU Guix is free software; you can redistribute it and/or modify it
31;;; under the terms of the GNU General Public License as published by
32;;; the Free Software Foundation; either version 3 of the License, or (at
33;;; your option) any later version.
34;;;
35;;; GNU Guix is distributed in the hope that it will be useful, but
36;;; WITHOUT ANY WARRANTY; without even the implied warranty of
37;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38;;; GNU General Public License for more details.
39;;;
40;;; You should have received a copy of the GNU General Public License
41;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
42
43(define-module (gnu packages messaging)
8b3099cf 44 #:use-module (gnu packages)
661da251 45 #:use-module (gnu packages admin)
bc1c995e 46 #:use-module (gnu packages aidc)
cd4a232d 47 #:use-module (gnu packages aspell)
661da251 48 #:use-module (gnu packages audio)
b1a2bc89
MW
49 #:use-module (gnu packages autotools)
50 #:use-module (gnu packages avahi)
5b494618 51 #:use-module (gnu packages base)
661da251
TGR
52 #:use-module (gnu packages bash)
53 #:use-module (gnu packages bison)
44ddf0f1 54 #:use-module (gnu packages boost)
b1a2bc89 55 #:use-module (gnu packages check)
661da251 56 #:use-module (gnu packages compression)
57163f91 57 #:use-module (gnu packages cpp)
901c1aae 58 #:use-module (gnu packages crypto)
a829c650 59 #:use-module (gnu packages curl)
b1a2bc89
MW
60 #:use-module (gnu packages cyrus-sasl)
61 #:use-module (gnu packages databases)
99828fa7 62 #:use-module (gnu packages documentation)
b977cd2b 63 #:use-module (gnu packages enchant)
661da251 64 #:use-module (gnu packages fontutils)
593ef98a 65 #:use-module (gnu packages freedesktop)
ebfc2ecc 66 #:use-module (gnu packages gettext)
661da251 67 #:use-module (gnu packages glib)
b977cd2b 68 #:use-module (gnu packages gnome)
661da251 69 #:use-module (gnu packages gnupg)
403604c3 70 #:use-module (gnu packages gperf)
b977cd2b 71 #:use-module (gnu packages gtk)
661da251
TGR
72 #:use-module (gnu packages guile)
73 #:use-module (gnu packages icu4c)
61f81618 74 #:use-module (gnu packages image)
661da251 75 #:use-module (gnu packages less)
b977cd2b 76 #:use-module (gnu packages libcanberra)
b1a2bc89 77 #:use-module (gnu packages libidn)
661da251 78 #:use-module (gnu packages linux)
57163f91 79 #:use-module (gnu packages logging)
1ae27aac 80 #:use-module (gnu packages lua)
661da251 81 #:use-module (gnu packages man)
b40f4052 82 #:use-module (gnu packages markup)
dbcfefe5 83 #:use-module (gnu packages mpd)
b1a2bc89 84 #:use-module (gnu packages ncurses)
661da251
TGR
85 #:use-module (gnu packages networking)
86 #:use-module (gnu packages pcre)
87 #:use-module (gnu packages perl)
88 #:use-module (gnu packages photo)
403604c3 89 #:use-module (gnu packages php)
8b3099cf 90 #:use-module (gnu packages pkg-config)
f65fdd95 91 #:use-module (gnu packages protobuf)
8b3099cf 92 #:use-module (gnu packages python)
cc6f4912 93 #:use-module (gnu packages python-crypto)
f65fdd95 94 #:use-module (gnu packages python-web)
44d10b1f 95 #:use-module (gnu packages python-xyz)
661da251
TGR
96 #:use-module (gnu packages qt)
97 #:use-module (gnu packages readline)
dbcfefe5 98 #:use-module (gnu packages sphinx)
cd0322a3 99 #:use-module (gnu packages sqlite)
ea119a28 100 #:use-module (gnu packages tcl)
661da251 101 #:use-module (gnu packages texinfo)
61f81618 102 #:use-module (gnu packages textutils)
a10052ac 103 #:use-module (gnu packages tls)
901c1aae 104 #:use-module (gnu packages video)
ebfc2ecc 105 #:use-module (gnu packages web)
661da251 106 #:use-module (gnu packages xdisorg)
3b38d78e 107 #:use-module (gnu packages xiph)
661da251
TGR
108 #:use-module (gnu packages xml)
109 #:use-module (gnu packages xorg)
110 #:use-module (guix build-system cmake)
111 #:use-module (guix build-system glib-or-gtk)
112 #:use-module (guix build-system gnu)
113 #:use-module (guix build-system meson)
114 #:use-module (guix build-system perl)
115 #:use-module (guix build-system python)
34e31612 116 #:use-module (guix build-system qt)
435d8a83 117 #:use-module (guix build-system trivial)
661da251
TGR
118 #:use-module (guix download)
119 #:use-module (guix git-download)
e0aa5b5b 120 #:use-module (guix hg-download)
661da251
TGR
121 #:use-module ((guix licenses) #:prefix license:)
122 #:use-module (guix packages)
123 #:use-module (guix utils))
7c706558 124
dbcfefe5
RG
125(define-public poezio
126 (package
127 (name "poezio")
128 (version "0.13.1")
129 (source
130 (origin
131 (method git-fetch)
132 (uri
133 (git-reference
134 (url "https://lab.louiz.org/poezio/poezio.git")
135 (commit
136 (string-append "v" version))))
137 (file-name
138 (git-file-name name version))
139 (sha256
140 (base32 "041y61pcbdb86s04qwp8s1g6bp84yskc7vdizwpi2hz18y01x5fy"))))
141 (build-system python-build-system)
142 (arguments
143 `(#:phases
144 (modify-phases %standard-phases
145 (add-after 'unpack 'patch
146 (lambda _
147 (substitute* "setup.py"
148 (("'CC', 'cc'")
149 "'CC', 'gcc'"))
150 #t)))))
151 (native-inputs
152 `(("pkg-config" ,pkg-config)
153 ("python-setuptools" ,python-setuptools)
154 ("python-sphinx" ,python-sphinx)))
155 (inputs
156 `(("python-mpd2" ,python-mpd2)
157 ("python-potr" ,python-potr)
158 ("python-pyasn1" ,python-pyasn1)
159 ("python-pyasn1-modules" ,python-pyasn1-modules)
160 ("python-pygments" ,python-pygments)
161 ("python-pyinotify" ,python-pyinotify)
162 ;("python" ,python)
163 ("python-qrcode" ,python-qrcode)
164 ("python-slixmpp" ,python-slixmpp)))
165 (synopsis "Console Jabber/XMPP Client")
166 (description "Poezio is a free console XMPP client (the protocol on which
167the Jabber IM network is built).
168Its goal is to let you connect very easily (no account creation needed) to the
169network and join various chatrooms, immediately. It tries to look like the
170most famous IRC clients (weechat, irssi, etc). Many commands are identical and
171you won't be lost if you already know these clients. Configuration can be
172made in a configuration file or directly from the client.
173You'll find the light, fast, geeky and anonymous spirit of IRC while using a
174powerful, standard and open protocol.")
175 (home-page "https://poez.io/en/")
176 (license license:zlib)))
177
7c706558
MW
178(define-public libotr
179 (package
180 (name "libotr")
89e58e8e 181 (version "4.1.1")
7c706558
MW
182 (source (origin
183 (method url-fetch)
184 (uri (string-append "https://otr.cypherpunks.ca/libotr-"
185 version ".tar.gz"))
186 (sha256
89e58e8e 187 (base32
e3d3546e 188 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
fc1adab1 189 (patches (search-patches "libotr-test-auth-fix.patch"))))
7c706558
MW
190 (build-system gnu-build-system)
191 (propagated-inputs
192 `(("libgcrypt" ,libgcrypt))) ; libotr headers include gcrypt.h
193 (inputs `(("libgpg-error" ,libgpg-error)))
89e58e8e 194 (native-inputs `(("perl" ,perl))) ; for the test suite
7c706558
MW
195 (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
196 (description
197 "OTR allows you to have private conversations over instant messaging by
008b5257
MW
198providing: (1) Encryption: No one else can read your instant messages. (2)
199Authentication: You are assured the correspondent is who you think it is. (3)
200Deniability: The messages you send do not have digital signatures that are
201checkable by a third party. Anyone can forge messages after a conversation to
202make them look like they came from you. However, during a conversation, your
203correspondent is assured the messages he sees are authentic and
204unmodified. (4) Perfect forward secrecy: If you lose control of your private
205keys, no previous conversation is compromised.")
7c706558 206 (home-page "https://otr.cypherpunks.ca/")
29e83e1c 207 (license (list license:lgpl2.1 license:gpl2))))
7c706558 208
0d549f60
RH
209(define-public libsignal-protocol-c
210 (package
211 (name "libsignal-protocol-c")
05ca7a91 212 (version "2.3.2")
0d549f60 213 (source (origin
d739b8d8
EF
214 (method git-fetch)
215 (uri (git-reference
216 (url "https://github.com/WhisperSystems/libsignal-protocol-c")
217 (commit (string-append "v" version))))
218 (file-name (git-file-name name version))
0d549f60
RH
219 (sha256
220 (base32
d739b8d8 221 "1qj2w4csy6j9jg1jy66n1qwysx7hgjywk4n35hlqcnh1kpa14k3p"))))
0d549f60
RH
222 (arguments
223 `(;; Required for proper linking and for tests to run.
224 #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
225 (build-system cmake-build-system)
226 (inputs `( ;; Required for tests:
c695fb76
TGR
227 ("check" ,check)
228 ("openssl" ,openssl)))
229 (native-inputs `(("pkg-config" ,pkg-config)))
0d549f60
RH
230 (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
231 (synopsis "Implementation of a ratcheting forward secrecy protocol")
232 (description "libsignal-protocol-c is an implementation of a ratcheting
233forward secrecy protocol that works in synchronous and asynchronous
234messaging environments. It can be used with messaging software to provide
235end-to-end encryption.")
236 (license license:gpl3+)))
237
8b3099cf
MW
238(define-public bitlbee
239 (package
240 (name "bitlbee")
f9ea47a9 241 (version "3.6")
8b3099cf
MW
242 (source (origin
243 (method url-fetch)
95791189 244 (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
8b3099cf
MW
245 version ".tar.gz"))
246 (sha256
f9ea47a9 247 (base32 "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz"))))
8b3099cf
MW
248 (build-system gnu-build-system)
249 (native-inputs `(("pkg-config" ,pkg-config)
2a84b550
MB
250 ;; Note: Change to 'check' for versions > 3.6.
251 ("check" ,check-0.12)))
8b3099cf 252 (inputs `(("glib" ,glib)
fa40e4d4 253 ("libotr" ,libotr)
8b3099cf 254 ("gnutls" ,gnutls)
d7554047 255 ("python" ,python)
8b3099cf
MW
256 ("perl" ,perl)))
257 (arguments
dc1d3cde
KK
258 `(#:phases
259 (modify-phases %standard-phases
d7554047
TL
260 (add-before 'configure 'set-python
261 (lambda _ (setenv "PYTHON" (which "python3")) #t))
dc1d3cde
KK
262 (add-after 'install 'install-etc
263 (lambda* (#:key (make-flags '()) #:allow-other-keys)
bea06837 264 (apply invoke "make" "install-etc" make-flags)))
31060bff
PAR
265 (add-after 'install-etc 'install-lib
266 (lambda* (#:key (make-flags '()) #:allow-other-keys)
bea06837 267 (apply invoke "make" "install-dev" make-flags)))
dc1d3cde
KK
268 (replace 'configure
269 ;; bitlbee's configure script does not tolerate many of the
270 ;; variable settings that Guix would pass to it.
271 (lambda* (#:key outputs #:allow-other-keys)
bea06837
RW
272 (invoke "./configure"
273 (string-append "--prefix="
274 (assoc-ref outputs "out"))
275 "--otr=1"))))))
8b3099cf
MW
276 (synopsis "IRC to instant messaging gateway")
277 (description "BitlBee brings IM (instant messaging) to IRC clients, for
278people who have an IRC client running all the time and don't want to run an
279additional IM client. BitlBee currently supports XMPP/Jabber (including
280Google Talk), MSN Messenger, Yahoo! Messenger, AIM and ICQ, and the Twitter
281microblogging network (plus all other Twitter API compatible services like
282identi.ca and status.net).")
85ad4ffb 283 (home-page "https://www.bitlbee.org/")
29e83e1c 284 (license (list license:gpl2+ license:bsd-2))))
8b3099cf 285
8e6c9005
LC
286(define-public bitlbee-purple
287 ;; This variant uses libpurple, which provides support for more protocols at
288 ;; the expense of a much bigger closure.
289 (package/inherit bitlbee
290 (name "bitlbee-purple")
291 (synopsis "IRC to instant messaging gateway (using Pidgin's libpurple)")
292 (inputs `(("purple" ,pidgin)
293 ,@(package-inputs bitlbee)))
294 (arguments
295 (substitute-keyword-arguments (package-arguments bitlbee)
296 ((#:phases phases '%standard-phases)
297 `(modify-phases ,phases
298 (replace 'configure ;add "--purple=1"
299 (lambda* (#:key outputs #:allow-other-keys)
300 (invoke "./configure"
301 (string-append "--prefix="
302 (assoc-ref outputs "out"))
303 "--otr=1" "--purple=1")))))
304 ((#:tests? _ #t)
305 ;; XXX: Tests fail to link, and ./configure says that it's "supported
306 ;; on a best-effort basis" anyway.
307 #f)))))
308
b992bfea
PAR
309(define-public bitlbee-discord
310 (package
311 (name "bitlbee-discord")
886e9772 312 (version "0.4.2")
d1ef0e02
TGR
313 (source
314 (origin
315 (method git-fetch)
316 (uri (git-reference
b0e7b699 317 (url "https://github.com/sm00th/bitlbee-discord")
d1ef0e02
TGR
318 (commit version)))
319 (file-name (git-file-name name version))
320 (sha256
886e9772 321 (base32 "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f"))))
b992bfea
PAR
322 (build-system gnu-build-system)
323 (arguments
324 `(#:phases
325 (modify-phases %standard-phases
e6a24cd0 326 (add-after 'unpack 'patch-autogen
b992bfea
PAR
327 (lambda _
328 (let ((sh (which "sh")))
329 (substitute* "autogen.sh" (("/bin/sh") sh))
e6a24cd0
RW
330 (setenv "CONFIG_SHELL" sh))
331 #t))
b992bfea
PAR
332 (replace 'configure
333 (lambda* (#:key inputs outputs #:allow-other-keys)
334 (invoke "./configure"
335 (string-append "--with-plugindir="
336 (assoc-ref outputs "out")
337 "/lib/bitlbee/")))))))
338 (inputs `(("glib" ,glib)))
339 (native-inputs `(("pkg-config" ,pkg-config)
340 ("autoconf" ,autoconf)
341 ("automake" ,automake)
342 ("texinfo" ,texinfo)
343 ("libtool" ,libtool)
886e9772 344 ("bitlbee" ,bitlbee) ; needs bitlbee headers
b992bfea
PAR
345 ("bash" ,bash)))
346 (synopsis "Discord plugin for Bitlbee")
8e76ffef 347 (description "Bitlbee-discord is a plugin for Bitlbee which provides
b992bfea
PAR
348access to servers running the Discord protocol.")
349 (home-page "https://github.com/sm00th/bitlbee-discord/")
350 (license license:gpl2+)))
351
a17ab977
LC
352(define-public purple-mattermost
353 (package
354 (name "purple-mattermost")
355 (version "1.2")
356 (home-page "https://github.com/EionRobb/purple-mattermost")
357 (source (origin
358 (method git-fetch)
359 (uri (git-reference (url home-page)
360 (commit (string-append "v" version))))
361 (file-name (git-file-name name version))
362 (sha256
363 (base32
364 "0fm49iv58l09qpy8vkca3am642fxiwcrrh6ykimyc2mas210b5g2"))))
365 (build-system gnu-build-system)
366 (arguments
367 `(#:phases (modify-phases %standard-phases
368 (replace 'configure
369 (lambda* (#:key inputs outputs #:allow-other-keys)
370 ;; Adjust the makefile to install files in the right
371 ;; place.
372 (let ((out (assoc-ref outputs "out")))
373 (substitute* "Makefile"
374 (("MATTERMOST_DEST = .*")
375 (string-append "MATTERMOST_DEST = " out
376 "/lib/purple-2\n")) ;XXX: hardcoded
377 (("MATTERMOST_ICONS_DEST = .*")
378 (string-append "MATTERMOST_ICONS_DEST = "
379 out
380 "/share/pixmaps/pidgin/protocols\n")))
381 #t))))
382 #:make-flags (list "CC=gcc"
383 ,(string-append "PLUGIN_VERSION=" version))
384 #:tests? #f))
385 (inputs `(("glib" ,glib)
386 ("json-glib" ,json-glib)
387 ("discount" ,discount)
388 ("pidgin" ,pidgin)))
389 (native-inputs `(("pkg-config" ,pkg-config)))
390 (synopsis "Purple plug-in to access Mattermost instant messaging")
391 (description
392 "Purple-Mattermost is a plug-in for Purple, the instant messaging library
393used by Pidgin and Bitlbee, among others, to access
394@uref{https://mattermost.com/, Mattermost} servers.")
395 (license license:gpl3+)))
396
b977cd2b
JL
397(define-public hexchat
398 (package
399 (name "hexchat")
d774fabe 400 (version "2.14.3")
b977cd2b
JL
401 (source (origin
402 (method url-fetch)
403 (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
404 version ".tar.xz"))
405 (sha256
406 (base32
d774fabe 407 "10p829jm1r6kidkgf5lhqhyqc5mxdcq96q3zhadsckasvc9rs6lh"))))
c2a601c9
LF
408 (build-system meson-build-system)
409 (native-inputs `(("gettext" ,gettext-minimal)
9e21a1c8 410 ("glib:bin" ,glib "bin") ;need glib-genmarshal
c2a601c9 411 ("perl" ,perl)
74b86713 412 ("pkg-config" ,pkg-config)))
b977cd2b
JL
413 (inputs `(("dbus-glib" ,dbus-glib)
414 ("dbus" ,dbus)
415 ("enchant" ,enchant)
b977cd2b
JL
416 ("gtk" ,gtk+-2)
417 ("libcanberra" ,libcanberra)
418 ("libnotify" ,libnotify)
c2a601c9 419 ("libproxy" ,libproxy)
b977cd2b 420 ("openssl" ,openssl)
71af71dc
TGR
421
422 ;; Bindings for add-on scripts.
423 ("luajit" ,luajit)
424 ("perl-xml-parser" ,perl-xml-parser)
425 ("python-2" ,python-2)))
74b86713 426 (arguments
c2a601c9 427 `(#:phases
74b86713 428 (modify-phases %standard-phases
c2a601c9
LF
429 (add-after 'unpack 'skip-desktop-database-updates
430 (lambda _
431 ;; The build scripts update icon and desktop file databases when
432 ;; DESTDIR is not set. We can't update these databases from
433 ;; within the build chroot, but we also don't set DESTDIR. So, we
434 ;; just skip this code.
435 (substitute* "meson_post_install.py"
436 (("if 'DESTDIR' not in os.environ:")
437 "if False:"))
189be331 438 #t)))))
f255bec6 439 (synopsis "Graphical IRC client")
b977cd2b 440 (description
71af71dc
TGR
441 "HexChat lets you connect to multiple IRC networks at once. The main
442window shows the list of currently connected networks and their channels, the
443current conversation and the list of users. It uses colors to differentiate
444between users and to highlight messages. It checks spelling using available
b977cd2b 445dictionaries. HexChat can be extended with multiple addons.")
e02013b7 446 (home-page "https://hexchat.net/")
29e83e1c 447 (license license:gpl2+)))
b977cd2b 448
ea119a28
TUBK
449(define-public ngircd
450 (package
451 (name "ngircd")
36a0228e 452 (version "26")
ea119a28
TUBK
453 (source (origin
454 (method url-fetch)
6809d937 455 (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
ea119a28
TUBK
456 version ".tar.xz"))
457 (sha256
458 (base32
36a0228e 459 "1ijmv18fa648y7apxb9vp4j9iq6fxq850kz5v36rysaq614cdp2n"))
4fd95d91 460 (patches (search-patches "ngircd-handle-zombies.patch"))))
ea119a28
TUBK
461 (build-system gnu-build-system)
462 ;; Needed for the test suite.
463 (native-inputs `(("procps" ,procps)
464 ("expect" ,expect)
36a0228e
TGR
465 ("inetutils" ,inetutils)
466 ("openssl" ,openssl)))
8f3afba4 467 ;; XXX Add libident.
ea119a28 468 (inputs `(("zlib" ,zlib)
8f3afba4 469 ("libwrap" ,tcp-wrappers)
ea119a28
TUBK
470 ("gnutls" ,gnutls)
471 ,@(if (string-suffix? "-linux"
472 (or (%current-target-system)
473 (%current-system)))
474 `(("linux-pam" ,linux-pam))
475 '())))
476 (arguments
477 `(#:configure-flags
8f3afba4 478 '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
ea119a28
TUBK
479 ,@(if (string-suffix? "-linux"
480 (or (%current-target-system)
481 (%current-system)))
482 '("--with-pam")
483 '()))
484 #:phases
341ed63f
TGR
485 (modify-phases %standard-phases
486 ;; Necessary for the test suite.
487 (add-after 'configure 'post-configure
488 (lambda _
489 (substitute* "src/ngircd/Makefile"
490 (("/bin/sh") (which "sh")))
491 ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
492 ;; which fails arbitrarily.
493 (with-output-to-file "src/testsuite/getpid.sh"
494 (lambda ()
495 (display
496 (string-append
497 "#!" (which "sh") "\n"
498 "ps -C \"$1\" -o pid=\n"))))
499 ;; Our variant of getpid.sh does not match interpreter names
500 ;; when the script's shebang is invoked directly as "./foo".
501 ;; Patch cases where the test suite relies on this.
502 (substitute* "src/testsuite/start-server.sh"
503 ;; It runs 'getpid.sh sh' to test if it works at all. Run it on
504 ;; 'make' instead.
505 (("getpid.sh sh") "getpid.sh make")))))))
6809d937 506 (home-page "https://ngircd.barton.de/")
ea119a28
TUBK
507 (synopsis "Lightweight Internet Relay Chat server for small networks")
508 (description
07b7a665
TGR
509 "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
510or private networks. It is easy to configure, can cope with dynamic IP
511addresses, and supports IPv6, SSL-protected connections, as well as PAM for
512authentication.")
29e83e1c 513 (license license:gpl2+)))
ea119a28 514
b1a2bc89
MW
515(define-public pidgin
516 (package
517 (name "pidgin")
0fcb0e50 518 (version "2.13.0")
b1a2bc89
MW
519 (source
520 (origin
521 (method url-fetch)
522 (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
a4cf65c8 523 version "/pidgin-" version ".tar.bz2"))
b1a2bc89 524 (sha256
0fcb0e50 525 (base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7"))
44929817
TGR
526 (patches (search-patches "pidgin-add-search-path.patch"
527 ;; Remove the snippet and bootstrapping
528 ;; native-inputs together with this patch.
529 "pidgin-libnm.patch"))
530 (modules '((guix build utils)))
531 (snippet
532 '(begin
533 ;; Remove stale generated file after applying pidgin-libnm.patch.
534 (delete-file "configure")
535 #t))))
b1a2bc89
MW
536 (build-system glib-or-gtk-build-system)
537 (native-inputs
538 `(("pkg-config" ,pkg-config)
539 ("check" ,check)
540 ("intltool" ,intltool)
541 ("gconf" ,gconf)
542 ("python" ,python-2)
44929817
TGR
543 ("doxygen" ,doxygen)
544
545 ;; For bootstrapping after applying pidgin-libnm.patch.
546 ("autoconf" ,autoconf)
547 ("automake" ,automake)
548 ("libtool" ,libtool)))
b1a2bc89
MW
549 (inputs
550 `(("gtk+" ,gtk+-2)
551 ("libgcrypt" ,libgcrypt)
552 ("gnutls" ,gnutls)
553 ("cyrus-sasl" ,cyrus-sasl)
554 ("dbus" ,dbus)
555 ("dbus-glib" ,dbus-glib)
556 ("python2-dbus" ,python2-dbus)
557 ("libidn" ,libidn)
558 ("libltdl" ,libltdl)
559 ("libxml2" ,libxml2)
560 ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
561 ;; TODO: farstream
562 ;; TODO: meanwhile
b1a2bc89
MW
563 ;; TODO: gtkspell
564 ;; TODO: libxephyr
565 ;; TODO: libgadu
566 ("libxslt" ,libxslt)
567 ("avahi" ,avahi)
568 ("ncurses" ,ncurses)
569958ae 569 ("network-manager" ,network-manager)
b1a2bc89
MW
570 ("sqlite" ,sqlite)
571 ("libice" ,libice)
572 ("libsm" ,libsm)
573 ("libxscrnsaver" ,libxscrnsaver)
574 ("startup-notification" ,startup-notification)))
575 (arguments
576 `(#:configure-flags
577 (list "--disable-gtkspell"
578 "--disable-tcl"
579 "--disable-meanwhile"
b1a2bc89
MW
580 "--disable-vv" ; XXX remove when we have farstream and gstreamer
581 "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
582 "--enable-cyrus-sasl"
583 (string-append "--with-ncurses-headers="
584 (assoc-ref %build-inputs "ncurses")
585 "/include"))))
586 (native-search-paths
587 (list (search-path-specification
588 (variable "PURPLE_PLUGIN_PATH")
589 (files (list (string-append "lib/purple-"
9cf5f134 590 (version-major version))
b1a2bc89 591 "lib/pidgin")))))
dbe2dfa5 592 (home-page "https://www.pidgin.im/")
b1a2bc89
MW
593 (synopsis "Graphical multi-protocol instant messaging client")
594 (description
595 "Pidgin is a modular instant messaging client that supports many popular
596chat protocols.")
597 (license
598 (list
29e83e1c 599 license:gpl2+ ; Most of the code
600 license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
601 license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
b1a2bc89 602 ;; The following licenses cover the zephyr protocol plugin:
29e83e1c 603 (license:non-copyleft
b1a2bc89
MW
604 "file://libpurple/protocols/zephyr/mit-copyright.h"
605 "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
29e83e1c 606 (license:non-copyleft
b1a2bc89
MW
607 "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
608 "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
609
0a143f67
MW
610(define-public pidgin-otr
611 (package
612 (name "pidgin-otr")
f9733422 613 (version "4.0.2")
0a143f67
MW
614 (source (origin
615 (method url-fetch)
616 (uri (string-append "https://otr.cypherpunks.ca/"
617 name "-" version ".tar.gz"))
618 (sha256
619 (base32
f9733422 620 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
0a143f67
MW
621 (build-system gnu-build-system)
622 (native-inputs
623 `(("pkg-config" ,pkg-config)
624 ("intltool" ,intltool)))
625 (inputs
626 `(("pidgin" ,pidgin)
627 ("libotr" ,libotr)
628 ("libgpg-error" ,libgpg-error)
629 ("libgcrypt" ,libgcrypt)
630 ("glib" ,glib)
631 ("gtk+" ,gtk+-2)))
632 (home-page "https://otr.cypherpunks.ca/")
633 (synopsis "Off-the-Record Messaging plugin for Pidgin")
634 (description
635 "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin instant
636messaging client. OTR (Off-the-Record) Messaging allows you to have private
637conversations over instant messaging by providing: (1) Encryption: No one else
638can read your instant messages. (2) Authentication: You are assured the
639correspondent is who you think it is. (3) Deniability: The messages you send
640do not have digital signatures that are checkable by a third party. Anyone
641can forge messages after a conversation to make them look like they came from
642you. However, during a conversation, your correspondent is assured the
643messages he sees are authentic and unmodified. (4) Perfect forward secrecy:
644If you lose control of your private keys, no previous conversation is
645compromised.")
29e83e1c 646 (license license:gpl2)))
0a143f67 647
a10052ac
DT
648(define-public znc
649 (package
650 (name "znc")
042d7eb1 651 (version "1.8.2")
a10052ac
DT
652 (source (origin
653 (method url-fetch)
df3a4611 654 (uri (string-append "https://znc.in/releases/archive/znc-"
a10052ac
DT
655 version ".tar.gz"))
656 (sha256
657 (base32
042d7eb1 658 "03fyi0j44zcanj1rsdx93hkdskwfvhbywjiwd17f9q1a7yp8l8zz"))))
2b0f3293 659 (build-system cmake-build-system)
a10052ac 660 (arguments
2b0f3293
TGR
661 `(#:configure-flags
662 (list "-DWANT_CYRUS=ON"
44ddf0f1 663 "-DWANT_I18N=ON"
2b0f3293
TGR
664 "-DWANT_PERL=ON"
665 "-DWANT_PYTHON=ON")
666 #:phases
500fc65b
TGR
667 (modify-phases %standard-phases
668 (add-after 'unpack 'unpack-googletest
2b0f3293 669 ;; Copy the googletest sources to where the CMake build expects them.
500fc65b 670 (lambda* (#:key inputs #:allow-other-keys)
2b0f3293
TGR
671 (let ((source (assoc-ref inputs "googletest-source"))
672 (target "third_party/googletest"))
673 (mkdir-p target)
674 (copy-recursively source target)
675 #t))))))
a10052ac 676 (native-inputs
44ddf0f1
TGR
677 `(("boost" ,boost)
678 ("gettext" ,gettext-minimal)
679 ("googletest-source" ,(package-source googletest))
d7463e01 680 ("pkg-config" ,pkg-config)))
a10052ac 681 (inputs
d7463e01 682 `(("cyrus-sasl" ,cyrus-sasl)
a10052ac 683 ("icu4c" ,icu4c)
d7463e01
TGR
684 ("openssl" ,openssl)
685 ("perl" ,perl)
686 ("python" ,python)
687 ("zlib" ,zlib)))
204623bc 688 (home-page "https://wiki.znc.in/ZNC")
a10052ac 689 (synopsis "IRC network bouncer")
1a544482
TGR
690 (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}. It can
691detach the client from the actual IRC server, and also from selected channels.
692Multiple clients from different locations can connect to a single ZNC account
a10052ac 693simultaneously and therefore appear under the same nickname on IRC.")
29e83e1c 694 (license license:asl2.0)))
a10052ac 695
246bc76a
RW
696(define-public python-nbxmpp
697 (package
698 (name "python-nbxmpp")
bf98373f 699 (version "0.6.10")
246bc76a
RW
700 (source
701 (origin
702 (method url-fetch)
46cb089f 703 (uri (pypi-uri "nbxmpp" version))
246bc76a
RW
704 (sha256
705 (base32
bf98373f 706 "1vq89nhamciblyi5579bppnm4sb0zk5cg5hdipfpz174fxvl2wyd"))))
246bc76a 707 (build-system python-build-system)
46cb089f
TGR
708 (arguments
709 `(#:tests? #f)) ; no tests
710 (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
246bc76a
RW
711 (synopsis "Non-blocking Jabber/XMPP module")
712 (description
713 "The goal of this python library is to provide a way for Python
714applications to use Jabber/XMPP networks in a non-blocking way. This library
46cb089f 715was initially a fork of xmpppy, but uses non-blocking sockets.")
29e83e1c 716 (license license:gpl3+)))
246bc76a
RW
717
718(define-public python2-nbxmpp
719 (package-with-python2 python-nbxmpp))
720
1f321f87
RW
721(define-public gajim
722 (package
723 (name "gajim")
bdb372a6 724 (version "1.1.3")
1f321f87
RW
725 (source (origin
726 (method url-fetch)
727 (uri (string-append "https://gajim.org/downloads/"
728 (version-major+minor version)
729 "/gajim-" version ".tar.bz2"))
730 (sha256
731 (base32
bdb372a6 732 "0bzxwcpdd4ydh6d6mzpr0gxwhcb0x9ympk55fpvm1hcw9d28a716"))))
e2d8b4a8 733 (build-system python-build-system)
1f321f87 734 (arguments
5cfec72f 735 `(#:phases
1f321f87 736 (modify-phases %standard-phases
9e3644a8
CL
737 (add-after 'unpack 'add-plugin-dirs
738 (lambda _
739 (substitute* "gajim/common/configpaths.py"
a624c363
RW
740 (("_paths\\['PLUGINS_USER'\\]\\]")
741 "_paths['PLUGINS_USER']] + \
742([os.getenv('GAJIM_PLUGIN_PATH')] \
743if os.getenv('GAJIM_PLUGIN_PATH') \
744and Path(os.getenv('GAJIM_PLUGIN_PATH')).is_dir() \
745else [])"))
9e3644a8 746 #t))
5cfec72f
CL
747 (replace 'check
748 (lambda _
749 (invoke "python" "./setup.py" "test" "-s" "test.no_gui")))
e3a2dd55 750 (add-after 'install 'wrap-gi-typelib-path
0f6b6cb9 751 (lambda* (#:key outputs #:allow-other-keys)
e2d8b4a8
CL
752 (let ((out (assoc-ref outputs "out")))
753 (for-each
754 (lambda (name)
755 (let ((file (string-append out "/bin/" name))
756 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
757 (wrap-program file
343f5efb
RW
758 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
759 ;; For translations
760 `("XDG_DATA_DIRS" ":" prefix
761 (,(string-append (assoc-ref outputs "out") "/share"))))))
e2d8b4a8
CL
762 '("gajim" "gajim-remote" "gajim-history-manager")))
763 #t))
e2d8b4a8
CL
764 (add-after 'install 'install-icons
765 (lambda* (#:key inputs outputs #:allow-other-keys)
766 (let* ((out (assoc-ref outputs "out"))
767 (adwaita (string-append
768 (assoc-ref inputs "adwaita-icon-theme")
769 "/share/icons/Adwaita"))
770 (hicolor (string-append
771 (assoc-ref inputs "hicolor-icon-theme")
772 "/share/icons/hicolor"))
773 (icons (string-append
774 out "/lib/python"
775 ,(version-major+minor (package-version python))
776 "/site-packages/gajim/data/icons")))
777 (with-directory-excursion icons
778 (symlink adwaita "Adwaita")
779 (copy-recursively hicolor "hicolor")))
8584965b 780 #t))
e3a2dd55 781 (add-after 'install-icons 'wrap-gsettings-schema-dir
8584965b
RH
782 (lambda* (#:key inputs outputs #:allow-other-keys)
783 (wrap-program (string-append (assoc-ref outputs "out")
784 "/bin/gajim")
785 ;; For GtkFileChooserDialog.
786 `("GSETTINGS_SCHEMA_DIR" =
787 (,(string-append (assoc-ref inputs "gtk+")
60c5b444
CL
788 "/share/glib-2.0/schemas"))))
789 #t)))))
9e3644a8
CL
790 (native-search-paths
791 (list (search-path-specification
792 (variable "GAJIM_PLUGIN_PATH")
793 (separator #f) ;single entry
794 (files '("share/gajim/plugins")))
795 ;; Gajim needs to use the propagated inputs of its plugins.
796 (search-path-specification
797 (variable "PYTHONPATH")
798 (files (list (string-append
799 "lib/python"
abad22dd
LC
800
801 ;; FIXME: Cannot use this expression as it would
802 ;; introduce a circular dependency at the top level.
803 ;; (version-major+minor (package-version python))
834c8684 804 "3.8"
abad22dd 805
9e3644a8 806 "/site-packages"))))))
1f321f87 807 (native-inputs
e2d8b4a8 808 `(("intltool" ,intltool)
37a350ec 809 ("python-docutils" ,python-docutils)
ff337525 810 ("xorg-server" ,xorg-server-for-tests)))
51a0887d 811 (inputs
e2d8b4a8
CL
812 `(("adwaita-icon-theme" ,adwaita-icon-theme)
813 ("gnome-keyring" ,gnome-keyring)
814 ("gtk+" ,gtk+)
815 ("gtkspell3" ,gtkspell3)
816 ("hicolor-icon-theme" ,hicolor-icon-theme)
817 ("libsecret" ,libsecret)
992a4965 818 ("python-cssutils" ,python-cssutils)
e2d8b4a8 819 ("python-dbus" ,python-dbus)
e2d8b4a8 820 ("python-gnupg" ,python-gnupg)
992a4965 821 ("python-keyring" ,python-keyring)
e2d8b4a8
CL
822 ("python-nbxmpp" ,python-nbxmpp)
823 ("python-pillow" ,python-pillow)
992a4965 824 ("python-precis-i18n" ,python-precis-i18n)
e2d8b4a8
CL
825 ("python-pycairo" ,python-pycairo)
826 ("python-pygobject" ,python-pygobject)
827 ("python-pyopenssl" ,python-pyopenssl)
828 ("python-qrcode" ,python-qrcode)))
1f321f87
RW
829 (home-page "https://gajim.org/")
830 (synopsis "Jabber (XMPP) client")
831 (description "Gajim is a feature-rich and easy to use Jabber/XMPP client.
832Among its features are: a tabbed chat window and single window modes; support
833for group chat (with Multi-User Chat protocol), invitation, chat to group chat
834transformation; audio and video conferences; file transfer; TLS, GPG and
835end-to-end encryption support; XML console.")
d6465efa 836 (license license:gpl3)))
1f321f87 837
435d8a83
CL
838(define-public gajim-omemo
839 (package
840 (name "gajim-omemo")
7cb3e9c3 841 (version "2.7.7")
435d8a83
CL
842 (source (origin
843 (method url-fetch/zipbomb)
844 (uri (string-append
845 "https://ftp.gajim.org/plugins_releases/omemo_"
846 version ".zip"))
847 (sha256
848 (base32
7cb3e9c3 849 "17jl4blkq04ag3g0har6z1bmk36523d29s51g260wb1pywfb536h"))))
435d8a83
CL
850 (build-system trivial-build-system)
851 (arguments
852 `(#:modules ((guix build utils))
853 #:builder
854 (begin
855 (use-modules (guix build utils))
856 (let* ((out (assoc-ref %outputs "out"))
857 (share (in-vicinity out "share/gajim/plugins"))
858 (source (assoc-ref %build-inputs "source")))
859 (mkdir-p share)
860 (copy-recursively source share)
861 #t))))
862 (propagated-inputs
863 `(("python-axolotl" ,python-axolotl)))
864 (home-page
657b6072 865 "https://dev.gajim.org/gajim/gajim-plugins/-/wikis/OmemoGajimPlugin")
435d8a83
CL
866 (synopsis "Gajim OMEMO plugin")
867 (description
868 "This package provides the Gajim OMEMO plugin. OMEMO is an XMPP
869Extension Protocol (XEP) for secure multi-client end-to-end encryption based
870on Axolotl and PEP.")
871 (license license:gpl3+)))
872
50cb3c8d 873(define-public dino
a1da0fb2
AI
874 (package
875 (name "dino")
876 (version "0.1.0")
877 (source
878 (origin
879 (method url-fetch)
880 (uri (string-append "https://github.com/dino/dino/releases/download/v"
881 version "/dino-" version ".tar.gz"))
882 (sha256
883 (base32
884 "0dcq2jhpywgxrp9x1qqmrl2z50hazspqj547b9zz70apy3y4418h"))))
885 (build-system cmake-build-system)
886 (arguments
887 `(#:tests? #f
888 #:parallel-build? #f ; not supported
889 #:modules ((guix build cmake-build-system)
890 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
891 (guix build utils))
892 #:imported-modules (,@%gnu-build-system-modules
893 (guix build cmake-build-system)
894 (guix build glib-or-gtk-build-system))
895 #:phases
896 (modify-phases %standard-phases
897 (add-after 'install 'glib-or-gtk-wrap
898 (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
899 (inputs
900 `(("libgee" ,libgee)
901 ("libsignal-protocol-c" ,libsignal-protocol-c)
902 ("libgcrypt" ,libgcrypt)
903 ("libsoup" ,libsoup)
904 ("qrencode" ,qrencode)
fc58cb5b 905 ("sqlite" ,sqlite)
a1da0fb2
AI
906 ("gpgme" ,gpgme)
907 ("gtk+" ,gtk+)
908 ("glib-networking" ,glib-networking)
909 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
910 (native-inputs
911 `(("pkg-config" ,pkg-config)
912 ("glib" ,glib "bin")
913 ("vala" ,vala)
914 ("gettext" ,gettext-minimal)))
915 (home-page "https://dino.im")
916 (synopsis "Graphical Jabber (XMPP) client")
917 (description "Dino is a Jabber (XMPP) client which aims to fit well into
50cb3c8d 918a graphical desktop environment like GNOME.")
a1da0fb2 919 (license license:gpl3+)))
50cb3c8d 920
1ae27aac
RW
921(define-public prosody
922 (package
923 (name "prosody")
c688e314 924 (version "0.11.3")
1ae27aac
RW
925 (source (origin
926 (method url-fetch)
927 (uri (string-append "https://prosody.im/downloads/source/"
928 "prosody-" version ".tar.gz"))
929 (sha256
930 (base32
c688e314 931 "11xz4milv2962qf75vrdwsvd8sy2332nf69202rmvz5989pvvnng"))))
1ae27aac
RW
932 (build-system gnu-build-system)
933 (arguments
627e6d8c 934 `(#:tests? #f ;tests require "busted"
7f39e131 935 #:configure-flags (list "--no-example-certs")
1ae27aac
RW
936 #:modules ((ice-9 match)
937 (srfi srfi-1)
938 (guix build gnu-build-system)
939 (guix build utils))
940 #:phases
941 (modify-phases %standard-phases
942 (add-after 'unpack 'fix-configure-script
943 (lambda _
944 ;; The configure script aborts when it encounters unexpected
945 ;; arguments. Make it more tolerant.
946 (substitute* "configure"
947 (("exit 1") ""))
948 #t))
84bf2a2e
CL
949 (add-after 'unpack 'fix-makefile
950 (lambda _
627e6d8c 951 (substitute* "GNUmakefile"
84bf2a2e
CL
952 ;; prosodyctl needs to read the configuration file.
953 (("^INSTALLEDCONFIG =.*") "INSTALLEDCONFIG = /etc/prosody\n")
954 ;; prosodyctl needs a place to put auto-generated certificates.
955 (("^INSTALLEDDATA =.*") "INSTALLEDDATA = /var/lib/prosody\n"))
956 #t))
1ae27aac
RW
957 (add-after 'install 'wrap-programs
958 (lambda* (#:key inputs outputs #:allow-other-keys)
959 ;; Make sure all executables in "bin" find the required Lua
960 ;; modules at runtime.
961 (let* ((out (assoc-ref outputs "out"))
962 (bin (string-append out "/bin/"))
963 (deps (delete #f (map (match-lambda
964 ((label . directory)
965 (if (string-prefix? "lua" label)
966 directory #f)))
967 inputs)))
5b494618
CL
968 (lua-path (string-join
969 (map (lambda (path)
970 (string-append
627e6d8c
CL
971 path "/share/lua/5.2/?.lua;"
972 path "/share/lua/5.2/?/?.lua"))
5b494618
CL
973 (cons out deps))
974 ";"))
975 (lua-cpath (string-join
976 (map (lambda (path)
977 (string-append
627e6d8c
CL
978 path "/lib/lua/5.2/?.so;"
979 path "/lib/lua/5.2/?/?.so"))
5b494618
CL
980 (cons out deps))
981 ";"))
982 (openssl (assoc-ref inputs "openssl"))
983 (coreutils (assoc-ref inputs "coreutils"))
984 (path (map (lambda (dir)
985 (string-append dir "/bin"))
986 (list openssl coreutils))))
1ae27aac
RW
987 (for-each (lambda (file)
988 (wrap-program file
5b494618
CL
989 `("LUA_PATH" ";" = (,lua-path))
990 `("LUA_CPATH" ";" = (,lua-cpath))
991 `("PATH" ":" prefix ,path)))
1ae27aac
RW
992 (find-files bin ".*"))
993 #t))))))
994 (inputs
995 `(("libidn" ,libidn)
996 ("openssl" ,openssl)
627e6d8c
CL
997 ("lua" ,lua-5.2)
998 ("lua5.2-bitop" ,lua5.2-bitop)
999 ("lua5.2-expat" ,lua5.2-expat)
1000 ("lua5.2-socket" ,lua5.2-socket)
1001 ("lua5.2-filesystem" ,lua5.2-filesystem)
1002 ("lua5.2-sec" ,lua5.2-sec)))
1ae27aac
RW
1003 (home-page "https://prosody.im/")
1004 (synopsis "Jabber (XMPP) server")
1005 (description "Prosody is a modern XMPP communication server. It aims to
1006be easy to set up and configure, and efficient with system resources.
1007Additionally, for developers it aims to be easy to extend and give a flexible
1008system on which to rapidly develop added functionality, or prototype new
1009protocols.")
29e83e1c 1010 (license license:x11)))
1ae27aac 1011
e0aa5b5b
CL
1012(define-public prosody-http-upload
1013 (let ((changeset "765735bb590b")
1014 (revision "1"))
1015 (package
1016 (name "prosody-http-upload")
1017 (version (string-append "0-" revision "." (string-take changeset 7)))
1018 (source (origin
1019 (method hg-fetch)
1020 (uri (hg-reference
1021 (url "https://hg.prosody.im/prosody-modules/")
1022 (changeset changeset)))
1023 (file-name (string-append name "-" version "-checkout"))
1024 (sha256
1025 (base32
1026 "142wrcism70nf8ffahhd961cqg2pi1h7ic8adfs3zwh0j3pnf41f"))))
1027 (build-system trivial-build-system)
1028 (arguments
1029 '(#:modules ((guix build utils))
1030 #:builder
1031 (begin
1032 (use-modules (guix build utils))
1033 (let ((out (assoc-ref %outputs "out"))
1034 (source (assoc-ref %build-inputs "source")))
1035 (with-directory-excursion (in-vicinity source "mod_http_upload")
1036 (install-file "mod_http_upload.lua" out))
1037 #t))))
1038 (home-page "https://modules.prosody.im/mod_http_upload.html")
1039 (synopsis "XEP-0363: Allow clients to upload files over HTTP")
1040 (description "This module implements XEP-0363: it allows clients to
1041upload files over HTTP.")
1042 (license (package-license prosody)))))
1043
be1ce9fd
CL
1044(define-public prosody-smacks
1045 (let ((changeset "67f1d1f22625")
1046 (revision "1"))
1047 (package
1048 (name "prosody-smacks")
1049 (version (string-append "0-" revision "." (string-take changeset 7)))
1050 (source (origin
1051 (method hg-fetch)
1052 (uri (hg-reference
1053 (url "https://hg.prosody.im/prosody-modules/")
1054 (changeset changeset)))
1055 (file-name (string-append name "-" version "-checkout"))
1056 (sha256
1057 (base32
1058 "020ngpax30fgarah98yvlj0ni8rcdwq60if03a9hqdw8mic0nxxs"))))
1059 (build-system trivial-build-system)
1060 (arguments
1061 '(#:modules ((guix build utils))
1062 #:builder
1063 (begin
1064 (use-modules (guix build utils))
1065 (let ((out (assoc-ref %outputs "out"))
1066 (source (assoc-ref %build-inputs "source")))
1067 (with-directory-excursion (in-vicinity source "mod_smacks")
1068 (install-file "mod_smacks.lua" out))
1069 #t))))
1070 (home-page "https://modules.prosody.im/mod_smacks.html")
1071 (synopsis "XEP-0198: Reliability and fast reconnects for XMPP")
1072 (description "This module implements XEP-0198: when supported by both
1073the client and server, it can allow clients to resume a disconnected session,
1074and prevent message loss.")
1075 (license (package-license prosody)))))
1076
901c1aae 1077(define-public libtoxcore
aaf0e47f
RW
1078 (let ((revision "2")
1079 (commit "bf69b54f64003d160d759068f4816b2d9b2e1e21"))
901c1aae 1080 (package
1081 (name "libtoxcore")
1082 (version (string-append "0.0.0" "-"
1083 revision "."(string-take commit 7)))
1084 (source (origin
1085 (method git-fetch)
1086 (uri (git-reference
b0e7b699 1087 (url "https://github.com/irungentoo/toxcore")
901c1aae 1088 (commit commit)))
1089 (file-name (string-append name "-" version "-checkout"))
1090 (sha256
1091 (base32
aaf0e47f 1092 "11lqra4yd7v293cp286ynff5lqz1pprzg8vn3wq6vryj08g88zqb"))))
901c1aae 1093 (build-system gnu-build-system)
aaf0e47f 1094 (arguments `(#:tests? #f)) ; FIXME: tests hang, some fail.
901c1aae 1095 (native-inputs
1096 `(("autoconf" ,autoconf)
1097 ("automake" ,automake)
1098 ("libtool" ,libtool)
aaf0e47f 1099 ("check" ,check)
901c1aae 1100 ("pkg-config" ,pkg-config)))
1101 (inputs
1102 `(("libsodium" ,libsodium)
1103 ("opus" ,opus)
1104 ("libvpx" ,libvpx)))
901c1aae 1105 (synopsis "Library for the Tox encrypted messenger protocol")
1106 (description
1107 "C library implementation of the Tox encrypted messenger protocol.")
29e83e1c 1108 (license license:gpl3+)
901c1aae 1109 (home-page "https://tox.chat"))))
1110
0ed5554a 1111;; Some tox clients move to c-toxcore, which seems to be where all the
1112;; recent development happens. It is run by the same developers as toxcore,
1113;; forked into a group namespace.
1114(define-public c-toxcore
1115 (package
1116 (name "c-toxcore")
1a2e3d94 1117 (version "0.2.12")
0ed5554a 1118 (source
1119 (origin
60186836
RW
1120 (method git-fetch)
1121 (uri (git-reference
b0e7b699 1122 (url "https://github.com/TokTok/c-toxcore")
60186836
RW
1123 (commit (string-append "v" version))))
1124 (file-name (git-file-name name version))
0ed5554a 1125 (sha256
1126 (base32
1a2e3d94 1127 "0a6sqpm00d2rn0nviqfz4gh9ck1wzci6rxgmqmcyryl5ca19ffvp"))))
230bd4bb
RH
1128 (arguments
1129 `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable
1130 ; for now.
9840b8fa 1131 (build-system cmake-build-system)
0ed5554a 1132 (native-inputs
9840b8fa
RW
1133 `(("pkg-config" ,pkg-config)))
1134 (propagated-inputs
0ed5554a 1135 `(("libsodium" ,libsodium)
1136 ("opus" ,opus)
1137 ("libvpx" ,libvpx)))
9840b8fa 1138 (home-page "https://tox.chat")
0ed5554a 1139 (synopsis "Library for the Tox encrypted messenger protocol")
1140 (description
9840b8fa
RW
1141 "Official fork of the C library implementation of the Tox encrypted
1142messenger protocol.")
1143 (license license:gpl3+)))
0ed5554a 1144
3b38d78e
EE
1145(define-public utox
1146 (package
1147 (name "utox")
48c97c27 1148 (version "0.17.1")
3b38d78e
EE
1149 (source
1150 (origin
c11df2e8
RH
1151 (method git-fetch)
1152 (uri (git-reference
b0e7b699 1153 (url "https://github.com/uTox/uTox")
48c97c27 1154 (commit (string-append "v" version))
c11df2e8
RH
1155 (recursive? #t))) ;; Needed for 'minini' git submodule.
1156 (file-name (string-append name "-" version "-checkout"))
3b38d78e
EE
1157 (sha256
1158 (base32
48c97c27 1159 "17kwqw24iqljp2icih9k6ikx12gzr8zzqr8y5h35bg8m5s8pasq5"))))
c413c6ad 1160 (build-system cmake-build-system)
3b38d78e 1161 (arguments
c11df2e8
RH
1162 `(#:configure-flags '("-DENABLE_TESTS=on")
1163 #:phases
3b38d78e 1164 (modify-phases %standard-phases
907ab9e8
RH
1165 (add-before 'build 'patch-absolute-filename-libgtk-3
1166 (lambda* (#:key inputs outputs #:allow-other-keys)
c11df2e8 1167 (substitute* "../source/src/xlib/gtk.c"
907ab9e8
RH
1168 (("libgtk-3.so")
1169 (string-append (assoc-ref inputs "gtk+")
1170 "/lib/libgtk-3.so")))))
1171 (add-after 'install 'wrap-program
1172 (lambda* (#:key inputs outputs #:allow-other-keys)
1173 (wrap-program (string-append (assoc-ref outputs "out")
1174 "/bin/utox")
1175 ;; For GtkFileChooserDialog.
1176 `("GSETTINGS_SCHEMA_DIR" =
1177 (,(string-append (assoc-ref inputs "gtk+")
1178 "/share/glib-2.0/schemas")))))))))
3b38d78e
EE
1179 (inputs
1180 `(("dbus" ,dbus)
1181 ("filteraudio" ,filteraudio)
1182 ("fontconfig" ,fontconfig)
1183 ("freetype" ,freetype)
1184 ("libsodium" ,libsodium)
c413c6ad 1185 ("c-toxcore" ,c-toxcore)
907ab9e8 1186 ("gtk+" ,gtk+)
3b38d78e
EE
1187 ("libvpx" ,libvpx)
1188 ("libx11" ,libx11)
1189 ("libxext" ,libxext)
1190 ("libxrender" ,libxrender)
1191 ("openal" ,openal)
1192 ("v4l-utils" ,v4l-utils)))
1e0ea1d8
LF
1193 (native-inputs
1194 `(("check" ,check)
1195 ("pkg-config" ,pkg-config)))
3b38d78e 1196 (synopsis "Lightweight Tox client")
c27b31e8 1197 (description
1198 "Utox is a lightweight Tox client. Tox is a distributed and secure
3b38d78e
EE
1199instant messenger with audio and video chat capabilities.")
1200 (home-page "http://utox.org/")
29e83e1c 1201 (license license:gpl3)))
c413c6ad 1202
bc1c995e
AP
1203(define-public qtox
1204 (package
1205 (name "qtox")
bd89d898 1206 (version "1.17.2")
2eb67681 1207 (source (origin
e88745a6
EF
1208 (method url-fetch/tarbomb)
1209 (uri (string-append "https://github.com/qTox/qTox/releases"
1210 "/download/v" version
1211 "/v" version ".tar.gz"))
2eb67681
RW
1212 (sha256
1213 (base32
e88745a6 1214 "0fmr3a0apil3rl32247qv2pqslp3knpbj5vhprdq0ixsvifrlhmh"))
2eb67681
RW
1215 (file-name (string-append name "-" version ".tar.gz"))))
1216 (build-system cmake-build-system)
1217 (arguments
1218 '(#:phases
1219 (modify-phases %standard-phases
1220 (add-after 'unpack 'fix-reproducibility-issues
1221 (lambda _
1222 (substitute* "src/main.cpp"
1223 (("__DATE__") "\"\"")
1224 (("__TIME__") "\"\"")
1225 (("TIMESTAMP") "\"\""))
dab03baa 1226 #t))
bd89d898
RAM
1227 (add-after 'unpack 'disable-network-tests
1228 (lambda _
1229 ;; These tests require network access.
1230 (substitute* "cmake/Testing.cmake"
1231 (("auto_test\\(core core\\)") "# auto_test(core core)")
1232 (("auto_test\\(net bsu\\)") "# auto_test(net bsu)"))
1233 #t))
dab03baa
DNB
1234 ;; Ensure that icons are found at runtime.
1235 (add-after 'install 'wrap-executable
1236 (lambda* (#:key inputs outputs #:allow-other-keys)
1237 (let ((out (assoc-ref outputs "out")))
1238 (wrap-program (string-append out "/bin/qtox")
1239 `("QT_PLUGIN_PATH" prefix
1240 ,(list (string-append (assoc-ref inputs "qtsvg")
1241 "/lib/qt5/plugins/"))))))))))
bc1c995e 1242 (inputs
7a426eef 1243 `(("ffmpeg" ,ffmpeg)
dab03baa 1244 ("filteraudio" ,filteraudio)
bc1c995e
AP
1245 ("glib" ,glib)
1246 ("gtk+" ,gtk+-2)
1247 ("libsodium" ,libsodium)
2eb67681 1248 ("c-toxcore" ,c-toxcore)
bc1c995e
AP
1249 ("libvpx" ,libvpx)
1250 ("libxscrnsaver" ,libxscrnsaver)
1251 ("libx11" ,libx11)
3d7a1596
RH
1252 ("libexif" ,libexif)
1253 ("sqlite" ,sqlite)
bc1c995e
AP
1254 ("openal" ,openal)
1255 ("qrencode" ,qrencode)
2eb67681
RW
1256 ("qtbase" ,qtbase)
1257 ("qtsvg" ,qtsvg)
bc1c995e
AP
1258 ("sqlcipher" ,sqlcipher)))
1259 (native-inputs
1260 `(("pkg-config" ,pkg-config)
2eb67681 1261 ("qmake" ,qttools)))
bc1c995e
AP
1262 (home-page "https://qtox.github.io/")
1263 (synopsis "Tox chat client using Qt")
1264 (description "qTox is a Tox client that follows the Tox design
1265guidelines. It provides an easy to use application that allows you to
1266connect with friends and family without anyone else listening in.")
1267 (license license:gpl3+)))
3b38d78e 1268
aeca1c0e 1269(define-public pybitmessage
1270 (package
1271 (name "pybitmessage")
315ed91e 1272 (version "0.6.3.2")
aeca1c0e 1273 (source
1274 (origin
315ed91e
RW
1275 (method git-fetch)
1276 (uri (git-reference
b0e7b699 1277 (url "https://github.com/Bitmessage/PyBitmessage")
315ed91e
RW
1278 (commit version)))
1279 (file-name (string-append name "-" version "-checkout"))
aeca1c0e 1280 (sha256
1281 (base32
315ed91e 1282 "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35"))))
58b2835d 1283 (propagated-inputs
1284 ;; TODO:
1285 ;; Package "pyopencl", required in addition to numpy for OpenCL support.
1286 ;; Package "gst123", required in addition to alsa-utils and
1287 ;; mpg123 for sound support.
1288 `(("python2-msgpack" ,python2-msgpack)
1289 ("python2-pythondialog" ,python2-pythondialog)
aeca1c0e 1290 ("python2-pyqt-4" ,python2-pyqt-4)
1291 ("python2-sip" ,python2-sip)
1292 ("python2-pysqlite" ,python2-pysqlite)
1293 ("python2-pyopenssl" ,python2-pyopenssl)))
1294 (native-inputs
58b2835d 1295 `(("openssl" ,openssl)))
1296 (build-system python-build-system)
aeca1c0e 1297 (arguments
58b2835d 1298 `(#:modules ((guix build python-build-system)
1299 (guix build utils))
1300 #:tests? #f ;no test target
1301 #:python ,python-2
aeca1c0e 1302 #:phases
1303 (modify-phases %standard-phases
aeca1c0e 1304 (add-after 'unpack 'fix-unmatched-python-shebangs
1305 (lambda* (#:key inputs #:allow-other-keys)
1306 (substitute* "src/bitmessagemain.py"
1307 (("#!/usr/bin/env python2.7")
1308 (string-append "#!" (which "python"))))
1309 (substitute* "src/bitmessagecli.py"
1310 (("#!/usr/bin/env python2.7.x")
1311 (string-append "#!" (which "python"))))
1312 #t))
1313 (add-after 'unpack 'fix-depends
1314 (lambda* (#:key inputs #:allow-other-keys)
1315 (substitute* "src/depends.py"
1316 (("libcrypto.so")
1317 (string-append (assoc-ref inputs "openssl")
1318 "/lib/libcrypto.so")))
1319 #t))
1320 (add-after 'unpack 'fix-local-files-in-paths
1321 (lambda* (#:key outputs #:allow-other-keys)
1322 (substitute* "src/proofofwork.py"
1323 (("bitmsghash.so")
1324 (string-append (assoc-ref outputs "out")
1325 "/lib/bitmsghash.so")))
1326 #t))
1327 (add-after 'unpack 'fix-pyelliptic
1328 (lambda* (#:key inputs #:allow-other-keys)
1329 (substitute* "src/pyelliptic/openssl.py"
1330 (("libcrypto.so")
1331 (string-append (assoc-ref inputs "openssl")
1332 "/lib/libcrypto.so"))
1333 (("libssl.so")
1334 (string-append (assoc-ref inputs "openssl")
1335 "/lib/libssl.so")))
1336 #t))
58b2835d 1337 (add-after 'unpack 'noninteractive-build
1338 ;; This applies upstream commit 4c597d3f7cf9f83a763472aa165a1a4292019f20
1339 (lambda _
1340 (substitute* "setup.py"
1341 (("except NameError")
1342 "except EOFError, NameError"))
1343 #t))
1344 ;; XXX: python setup.py does not build and install bitmsghash,
1345 ;; without it PyBitmessage tries to compile it at first run
1346 ;; in the store, which due to obvious reasons fails. Do it
aeca1c0e 1347 ;; and place it in /lib.
58b2835d 1348 (add-after 'unpack 'build-and-install-bitmsghash
aeca1c0e 1349 (lambda* (#:key outputs #:allow-other-keys)
58b2835d 1350 (with-directory-excursion "src/bitmsghash"
1351 (system* "make")
1352 (install-file "bitmsghash.so"
1353 (string-append (assoc-ref outputs "out") "/lib")))
1354 #t)))))
aeca1c0e 1355 (license license:expat)
1356 (description
1357 "Distributed and trustless peer-to-peer communications protocol
1358for sending encrypted messages to one person or many subscribers.")
1359 (synopsis "Distributed peer-to-peer communication")
1360 (home-page "https://bitmessage.org/")))
1361
c788c5fe
JD
1362(define-public ytalk
1363 (package
1364 (name "ytalk")
1365 (version "3.3.0")
1366 (source
1367 (origin
1368 (method url-fetch)
1369 (uri (string-append "ftp://ftp.ourproject.org/pub/ytalk/ytalk-"
1370 version ".tar.gz"))
1371 (sha256
1372 (base32
1373 "1d3jhnj8rgzxyxjwfa22vh45qwzjvxw1qh8fz6b7nfkj3zvk9jvf"))))
1374 (build-system gnu-build-system)
1375 (inputs
1376 `(("ncurses" ,ncurses)))
898dc494 1377 (home-page "https://ytalk.ourproject.org")
c788c5fe
JD
1378 (synopsis "Multi-user chat program")
1379 (description "Ytalk is a replacement for the BSD talk program. Its main
1380advantage is the ability to communicate with any arbitrary number of users at
1381once. It supports both talk protocols (\"talk\" and \"ntalk\") and can communicate
1382with several different talk daemons at the same time.")
1383 (license license:gpl2+)))
1384
3973e137 1385(define-public gloox
1386 (package
1387 (name "gloox")
35199959 1388 (version "1.0.24")
3973e137 1389 (source
1390 (origin
1391 (method url-fetch)
1392 (uri (string-append "https://camaya.net/download/gloox-"
1393 version ".tar.bz2"))
1394 (sha256
35199959 1395 (base32 "1jgrd07qr9jvbb5hcmhrqz4w4lvwc51m30jls1fgxf1f5az6455f"))))
3973e137 1396 (build-system gnu-build-system)
1397 (inputs
1398 `(("libidn" ,libidn)
1399 ("gnutls" ,gnutls)
1400 ("zlib" ,zlib)))
1401 (native-inputs
1402 `(("pkg-config" ,pkg-config)))
1403 (synopsis "Portable high-level Jabber/XMPP library for C++")
1404 (description
1405 "gloox is a full-featured Jabber/XMPP client library,
1406written in ANSI C++. It makes writing spec-compliant clients easy
1407and allows for hassle-free integration of Jabber/XMPP functionality
1408into existing applications.")
1409 (home-page "https://camaya.net/gloox")
1410 (license license:gpl3)))
c788c5fe 1411
ebfc2ecc 1412(define-public perl-net-psyc
1413 (package
1414 (name "perl-net-psyc")
3fa013af 1415 (version "1.3")
ebfc2ecc 1416 (source
1417 (origin
1418 (method url-fetch)
85b9ae93 1419 (uri (string-append "https://perl.psyc.eu/"
ebfc2ecc 1420 "perlpsyc-" version ".zip"))
1421 (file-name (string-append name "-" version ".zip"))
1422 (sha256
1423 (base32
3fa013af 1424 "0vsjclglkwgbyd9m5ad642fyysxw2x725nhq4r2m9pvqaq6s5yf2"))))
ebfc2ecc 1425 (build-system perl-build-system)
3fa013af
RW
1426 (native-inputs
1427 `(("unzip" ,unzip)))
ebfc2ecc 1428 (inputs
1429 `(("perl-curses" ,perl-curses)
1430 ("perl-io-socket-ssl" ,perl-io-socket-ssl)))
1431 (arguments
1432 `(#:phases
1433 (modify-phases %standard-phases
1434 (delete 'configure) ; No configure script
1435 ;; There is a Makefile, but it does not install everything
1436 ;; (leaves out psycion) and says
1437 ;; "# Just to give you a rough idea". XXX: Fix it upstream.
1438 (replace 'build
3fa013af 1439 (lambda _ (invoke "make" "manuals")))
ebfc2ecc 1440 (replace 'install
1441 (lambda* (#:key outputs #:allow-other-keys)
1442 (let* ((out (assoc-ref outputs "out"))
1443 (doc (string-append out "/share/doc/perl-net-psyc"))
1444 (man1 (string-append out "/share/man/man1"))
1445 (man3 (string-append out "/share/man/man3"))
1446 (bin (string-append out "/bin"))
1447 (libpsyc (string-append out "/lib/psyc/ion"))
1448 (libperl (string-append out "/lib/perl5/site_perl/"
1449 ,(package-version perl))))
1450
1451 (copy-recursively "lib/perl5" libperl)
1452 (copy-recursively "lib/psycion" libpsyc)
1453 (copy-recursively "bin" bin)
1454 (install-file "cgi/psycpager" (string-append doc "/cgi"))
1455 (copy-recursively "contrib" (string-append doc "/contrib"))
1456 (copy-recursively "hooks" (string-append doc "/hooks"))
1457 (copy-recursively "sdj" (string-append doc "/sdj"))
1458 (install-file "README.txt" doc)
1459 (install-file "TODO.txt" doc)
1460 (copy-recursively "share/man/man1" man1)
1461 (copy-recursively "share/man/man3" man3)
1462 #t)))
1463 (add-after 'install 'wrap-programs
1464 (lambda* (#:key outputs #:allow-other-keys)
1465 ;; Make sure all executables in "bin" find the Perl modules
1466 ;; provided by this package at runtime.
1467 (let* ((out (assoc-ref outputs "out"))
1468 (bin (string-append out "/bin/"))
1469 (path (getenv "PERL5LIB")))
1470 (for-each (lambda (file)
1471 (wrap-program file
1472 `("PERL5LIB" ":" prefix (,path))))
1473 (find-files bin "\\.*$"))
1474 #t))))))
1475 (description
1476 "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
1477Gtk2 event loops. This package includes 12 applications and additional scripts:
85b9ae93 1478psycion (a @uref{https://about.psyc.eu,PSYC} chat client), remotor (a control console
ebfc2ecc 1479for @uref{https://torproject.org,tor} router) and many more.")
1480 (synopsis "Perl implementation of PSYC protocol")
85b9ae93 1481 (home-page "https://perl.psyc.eu")
ebfc2ecc 1482 (license (list license:gpl2
2f3108ad 1483 license:perl-license
ebfc2ecc 1484 ;; contrib/irssi-psyc.pl:
1485 license:public-domain
1486 ;; bin/psycplay states AGPL with no version:
1487 license:agpl3+))))
1488
1489(define-public libpsyc
1490 (package
1491 (name "libpsyc")
1492 (version "20160913")
1493 (source (origin
1494 (method url-fetch)
1495 (uri (string-append "http://www.psyced.org/files/"
1496 name "-" version ".tar.xz"))
1497 (sha256
1498 (base32
1499 "14q89fxap05ajkfn20rnhc6b1h4i3i2adyr7y6hs5zqwb2lcmc1p"))))
1500 (build-system gnu-build-system)
1501 (native-inputs
1502 `(("perl" ,perl)
1503 ("netcat" ,netcat)
1504 ("procps" ,procps)))
1505 (arguments
1506 `(#:make-flags
1507 (list "CC=gcc"
1508 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1509 #:phases
1510 (modify-phases %standard-phases
1511 ;; The rust bindings are the only ones in use, the lpc bindings
1512 ;; are in psyclpc. The other bindings are not used by anything,
1513 ;; the chances are high that the bindings do not even work,
1514 ;; therefore we do not include them.
1515 ;; TODO: Get a cargo build system in Guix.
1516 (delete 'configure)))) ; no configure script
85b9ae93 1517 (home-page "https://about.psyc.eu/libpsyc")
ebfc2ecc 1518 (description
1519 "@code{libpsyc} is a PSYC library in C which implements
1520core aspects of PSYC, useful for all kinds of clients and servers
1521including psyced.")
1522 (synopsis "PSYC library in C")
1523 (license license:agpl3+)))
1524
cf3678df 1525;; This commit removes the historic bundled pcre and makes psyclpc reproducible.
ebfc2ecc 1526(define-public psyclpc
1527 (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba")
1528 (revision "2"))
1529 (package
1530 (name "psyclpc")
1531 (version (string-append "20160821-" revision "." (string-take commit 7)))
1532 (source (origin
1533 (method git-fetch)
1534 (uri (git-reference
1535 (url "git://git.psyced.org/git/psyclpc")
1536 (commit commit)))
1537 (file-name (string-append name "-" version "-checkout"))
1538 (sha256
1539 (base32
1540 "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5"))))
1541 (build-system gnu-build-system)
1542 (arguments
1543 `(#:tests? #f ; There are no tests/checks.
1544 #:configure-flags
1545 ;; If you have questions about this part, look at
1546 ;; "src/settings/psyced" and the ebuild.
1547 (list
1548 "--enable-use-tls=yes"
1549 "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled.
1550 (string-append "--prefix="
1551 (assoc-ref %outputs "out"))
1552 ;; src/Makefile: Set MUD_LIB to the directory which contains
1553 ;; the mud data. defaults to MUD_LIB = @libdir@
1554 (string-append "--libdir="
1555 (assoc-ref %outputs "out")
1556 "/opt/psyced/world")
1557 (string-append "--bindir="
1558 (assoc-ref %outputs "out")
1559 "/opt/psyced/bin")
1560 ;; src/Makefile: Set ERQ_DIR to directory which contains the
1561 ;; stuff which ERQ can execute (hopefully) savely. Was formerly
1562 ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@
1563 (string-append "--libexecdir="
1564 (assoc-ref %outputs "out")
1565 "/opt/psyced/run"))
1566 #:phases
1567 (modify-phases %standard-phases
1568 (add-before 'configure 'chdir-to-src
1569 ;; We need to pass this as env variables
1570 ;; and manually change the directory.
1571 (lambda _
1572 (chdir "src")
1573 (setenv "CONFIG_SHELL" (which "sh"))
1574 (setenv "SHELL" (which "sh"))
1575 #t)))
1576 #:make-flags (list "install-all")))
1577 (inputs
1578 `(("zlib" ,zlib)
e7e315c0 1579 ("openssl" ,openssl-1.0)
ebfc2ecc 1580 ("pcre" ,pcre)))
1581 (native-inputs
1582 `(("pkg-config" ,pkg-config)
1583 ("bison" ,bison)
1584 ("gettext" ,gettext-minimal)
1585 ("help2man" ,help2man)
1586 ("autoconf" ,autoconf)
1587 ("automake" ,automake)))
1588 (home-page "http://lpc.psyc.eu/")
1589 (synopsis "psycLPC is a multi-user network server programming language")
1590 (description
1591 "LPC is a bytecode language, invented to specifically implement
1592multi user virtual environments on the internet. This technology is used for
1593MUDs and also the psyced implementation of the Protocol for SYnchronous
1594Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and
1595many bug fixes.")
1596 (license license:gpl2))))
1597
fdfb4b96 1598(define-public loudmouth
1599 (package
1600 (name "loudmouth")
1601 (version "1.5.3")
1602 (source
1603 (origin
1604 (method url-fetch)
1605 (uri (string-append "https://mcabber.com/files/loudmouth/"
1606 name "-" version ".tar.bz2"))
1607 (sha256
1608 (base32
1609 "0b6kd5gpndl9nzis3n6hcl0ldz74bnbiypqgqa1vgb0vrcar8cjl"))))
1610 (build-system gnu-build-system)
1611 (inputs
1612 `(("glib" ,glib)
1613 ("gnutls" ,gnutls)
1614 ("libidn" ,libidn)))
1615 (native-inputs
1616 `(("pkg-config" ,pkg-config)
1617 ("check" ,check)
1618 ("glib" ,glib "bin") ; gtester
1619 ("gtk-doc" ,gtk-doc)))
1620 (home-page "https://mcabber.com/")
1621 (description
1622 "Loudmouth is a lightweight and easy-to-use C library for programming
1623with the XMPP (formerly known as Jabber) protocol. It is designed to be
1624easy to get started with and yet extensible to let you do anything the XMPP
1625protocol allows.")
1626 (synopsis "Asynchronous XMPP library")
1627 ;; The files have LGPL2.0+ headers, but COPYING specifies LGPL2.1.
1628 (license license:lgpl2.0+)))
1629
cd4a232d 1630(define-public mcabber
1631 (package
1632 (name "mcabber")
dce464e9 1633 (version "1.1.1")
cd4a232d 1634 (source
1635 (origin
1636 (method url-fetch)
1637 (uri (string-append "https://mcabber.com/files/"
1638 name "-" version ".tar.bz2"))
1639 (sha256
dce464e9 1640 (base32 "0ngrcc8nzpzk4vw36ni3w073149zsi0yjh922xy9cy5a7srwx2fp"))))
cd4a232d 1641 (build-system gnu-build-system)
1642 (arguments
1643 '(#:configure-flags (list "--enable-otr"
1644 "--enable-aspell")))
1645 (inputs
1646 `(("gpgme" ,gpgme)
1647 ("libotr" ,libotr)
1648 ("aspell" ,aspell)
1649 ("libidn" ,libidn)
1650 ("glib" ,glib)
1651 ("ncurses" ,ncurses)
1652 ("loudmouth" ,loudmouth)))
1653 (native-inputs
1654 `(("pkg-config" ,pkg-config)))
1655 (home-page "https://mcabber.com")
1656 (description
1657 "Mcabber is a small XMPP (Jabber) console client, which includes features
1658such as SASL and TLS support, @dfn{Multi-User Chat} (MUC) support, logging,
1659command-completion, OpenPGP encryption, @dfn{Off-the-Record Messaging} (OTR)
1660support, and more.")
1661 (synopsis "Small XMPP console client")
1662 (license license:gpl2+)))
1663
c631233f
CL
1664(define-public freetalk
1665 (package
1666 (name "freetalk")
1667 (version "4.1")
1668 (source (origin
1669 (method url-fetch)
1670 (uri (string-append "mirror://gnu/freetalk/freetalk-"
1671 version ".tar.gz"))
1672 (sha256
1673 (base32
1674 "1rmrn7a1bb7vm26yaklrvx008a9qhwc32s57dwrlf40lv9gffwny"))))
1675 (build-system gnu-build-system)
1676 (arguments
1677 `(#:phases
1678 (modify-phases %standard-phases
c631233f
CL
1679 ;; For 'system' commands in Scheme code.
1680 (add-after 'install 'wrap-program
1681 (lambda* (#:key inputs outputs #:allow-other-keys)
1682 (let* ((out (assoc-ref outputs "out"))
1683 (bash (assoc-ref inputs "bash"))
1684 (coreutils (assoc-ref inputs "coreutils"))
1685 (less (assoc-ref inputs "less")))
1686 (wrap-program (string-append out "/bin/freetalk")
1687 `("PATH" ":" prefix
1688 ,(map (lambda (dir)
1689 (string-append dir "/bin"))
1690 (list bash coreutils less))))
1691 #t))))))
1692 (native-inputs
1693 `(("autoconf" ,autoconf)
1694 ("automake" ,automake)
1695 ("pkg-config" ,pkg-config)
1696 ("texinfo" ,texinfo)))
1697 (inputs
1698 `(("bash" ,bash)
1699 ("glib" ,glib)
1700 ("guile" ,guile-2.0)
1701 ("less" ,less)
1702 ("loudmouth" ,loudmouth)
1703 ("readline" ,readline)))
1704 (synopsis "Extensible console-based Jabber client")
1705 (description
1706 "GNU Freetalk is a command-line Jabber/XMPP chat client. It notably uses
1707the Readline library to handle input, so it features convenient navigation of
1708text as well as tab-completion of buddy names, commands and English words. It
1709is also scriptable and extensible via Guile.")
6fd52309 1710 (home-page "https://www.gnu.org/software/freetalk/")
c631233f
CL
1711 (license license:gpl3+)))
1712
13292ee5
MM
1713(define-public libmesode
1714 (package
1715 (name "libmesode")
6bf449e8 1716 (version "0.9.3")
13292ee5 1717 (source (origin
c60d5a25
TGR
1718 (method git-fetch)
1719 (uri (git-reference
b0e7b699 1720 (url "https://github.com/boothj5/libmesode")
c60d5a25
TGR
1721 (commit version)))
1722 (file-name (git-file-name name version))
13292ee5
MM
1723 (sha256
1724 (base32
6bf449e8 1725 "0xzfg1xx88cn36352nnjlb1p7xyw32yqkhjzq10px88iaaqz1vv0"))))
13292ee5 1726 (build-system gnu-build-system)
13292ee5
MM
1727 (inputs
1728 `(("expat" ,expat)
1729 ("openssl" ,openssl)))
1730 (native-inputs
1731 `(("autoconf" ,autoconf)
1732 ("automake" ,automake)
1733 ("libtool" ,libtool)
1734 ("pkg-config" ,pkg-config)))
1735 (synopsis "C library for writing XMPP clients")
1736 (description "Libmesode is a fork of libstrophe for use with Profanity
1737XMPP Client. In particular, libmesode provides extra TLS functionality such as
1738manual SSL certificate verification.")
1739 (home-page "https://github.com/boothj5/libmesode")
6bf449e8 1740 ;; Dual-licensed.
13292ee5
MM
1741 (license (list license:gpl3+ license:x11))))
1742
781d3b07
MM
1743(define-public libstrophe
1744 (package
1745 (name "libstrophe")
75d9d8af 1746 (version "0.9.3")
3368917c
TGR
1747 (source
1748 (origin
1749 (method git-fetch)
1750 (uri (git-reference
b0e7b699 1751 (url "https://github.com/strophe/libstrophe")
3368917c
TGR
1752 (commit version)))
1753 (file-name (git-file-name name version))
1754 (sha256
1755 (base32 "1g1l0w9z9hdy5ncdvd9097gi7k7783did6py5h9camlpb2fnk5mk"))))
781d3b07 1756 (build-system gnu-build-system)
781d3b07
MM
1757 (inputs
1758 `(("expat" ,expat)
1759 ("openssl" ,openssl)))
1760 (native-inputs
1761 `(("autoconf" ,autoconf)
1762 ("automake" ,automake)
1763 ("libtool" ,libtool)
1764 ("pkg-config" ,pkg-config)))
1765 (synopsis "C library for writing XMPP clients")
1766 (description "Libstrophe is a minimal XMPP library written in C. It has
1767almost no external dependencies, only an XML parsing library (expat or libxml
1768are both supported).")
1769 (home-page "http://strophe.im/libstrophe")
75d9d8af 1770 ;; Dual-licensed.
781d3b07
MM
1771 (license (list license:gpl3+ license:x11))))
1772
a829c650 1773(define-public profanity
71adb422
TLC
1774 (package
1775 (name "profanity")
d9dbab0b 1776 (version "0.9.5")
d257697d
RG
1777 (source
1778 (origin
1779 (method url-fetch)
1780 (uri
1781 (string-append "https://profanity-im.github.io/profanity-"
1782 version ".tar.gz"))
1783 (sha256
1784 (base32
1785 "00j9l9v62rz9hprgiy1vrz8v3v59ph18h8kskqxr31fgqvjv5xr3"))))
a3f6f27b 1786 (build-system glib-or-gtk-build-system)
6bb93af8 1787 (arguments
d257697d
RG
1788 `(#:configure-flags
1789 (list
1790 "--enable-notifications"
d0e85b80 1791 "--enable-python-plugins"
d257697d 1792 "--enable-c-plugins"
d0e85b80 1793 "--enable-plugins"
d257697d
RG
1794 "--enable-otr"
1795 "--enable-pgp"
1796 "--enable-omemo"
d0e85b80 1797 "--enable-icons-and-clipboard")))
d257697d
RG
1798 (native-inputs
1799 `(("autoconf" ,autoconf)
1800 ("autoconf-archive" ,autoconf-archive)
1801 ("automake" ,automake)
1802 ("cmocka" ,cmocka)
d257697d 1803 ("libtool" ,libtool)
d257697d 1804 ("pkg-config" ,pkg-config)))
71adb422
TLC
1805 (inputs
1806 `(("curl" ,curl)
1807 ("expat" ,expat)
1808 ("glib" ,glib)
1809 ("gpgme" ,gpgme)
ca7535dd 1810 ("gtk+" ,gtk+-2)
71adb422 1811 ("libmesode" ,libmesode)
ca7535dd 1812 ("libnotify" ,libnotify)
71adb422 1813 ("libotr" ,libotr)
ca7535dd 1814 ("libsignal-protocol-c" ,libsignal-protocol-c)
71adb422
TLC
1815 ("ncurses" ,ncurses)
1816 ("openssl" ,openssl)
d0e85b80 1817 ("python" ,python-wrapper)
d9dbab0b
TLC
1818 ("readline" ,readline)
1819 ("sqlite" ,sqlite)))
71adb422
TLC
1820 (synopsis "Console-based XMPP client")
1821 (description "Profanity is a console based XMPP client written in C
a829c650 1822using ncurses and libmesode, inspired by Irssi.")
3dfd73f0 1823 (home-page "https://profanity-im.github.io")
71adb422 1824 (license license:gpl3+)))
a829c650 1825
6fdbd86d
AI
1826(define-public libircclient
1827 (package
1828 (name "libircclient")
b619b7f6 1829 (version "1.10")
6fdbd86d
AI
1830 (source
1831 (origin
1832 (method url-fetch)
1833 (uri (string-append "mirror://sourceforge/libircclient/libircclient/"
1834 version "/libircclient-" version ".tar.gz"))
1835 (sha256
1836 (base32
b619b7f6 1837 "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv"))))
6fdbd86d
AI
1838 (build-system gnu-build-system)
1839 (inputs
1840 `(("openssl" ,openssl)))
1841 (arguments
1842 `(#:configure-flags
1843 (list (string-append "--libdir="
1844 (assoc-ref %outputs "out") "/lib")
1845 "--enable-shared"
1846 "--enable-ipv6"
1847 "--enable-openssl")
b619b7f6 1848 #:tests? #f)) ; no test suite
6fdbd86d
AI
1849 (home-page "https://www.ulduzsoft.com/libircclient/")
1850 (synopsis "Library implementing the client IRC protocol")
1851 (description "Libircclient is a library which implements the client IRC
1852protocol. It is designed to be small, fast, portable and compatible with the
1853RFC standards as well as non-standard but popular features. It can be used for
1854building the IRC clients and bots.")
1855 (license license:lgpl3+)))
1856
61f81618
TF
1857(define-public toxic
1858 (package
1859 (name "toxic")
1987f95f 1860 (version "0.8.3")
0c273c50
TGR
1861 (source
1862 (origin
1863 (method git-fetch)
1864 (uri (git-reference
b0e7b699 1865 (url "https://github.com/JFreegman/toxic")
0c273c50
TGR
1866 (commit (string-append "v" version))))
1867 (sha256
1987f95f 1868 (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
0c273c50 1869 (file-name (git-file-name name version))))
61f81618
TF
1870 (build-system gnu-build-system)
1871 (arguments
1987f95f 1872 `(#:tests? #f ; no tests
61f81618
TF
1873 #:make-flags
1874 (list
1875 "CC=gcc"
1876 (string-append "PREFIX="
1877 (assoc-ref %outputs "out")))
1878 #:phases
1879 (modify-phases %standard-phases
1880 (delete 'configure)
1881 (add-before 'build 'enable-python-scripting
1882 (lambda _
93600aae
MB
1883 ;; XXX: For compatibility with Python 3.8, adjust python3-config
1884 ;; invokation to include --embed; see
1885 ;; <https://github.com/JFreegman/toxic/issues/533>.
1886 (substitute* "cfg/checks/python.mk"
1887 (("python3-config --ldflags")
1888 "python3-config --ldflags --embed"))
61f81618
TF
1889 (setenv "ENABLE_PYTHON" "1")
1890 #t)))))
1891 (inputs
1892 `(("c-toxcore" ,c-toxcore)
1893 ("curl" ,curl)
1894 ("freealut" ,freealut)
1987f95f 1895 ("gdk-pixbuf" ,gdk-pixbuf) ; for libnotify.pc
61f81618
TF
1896 ("libconfig" ,libconfig)
1897 ("libnotify" ,libnotify)
1898 ("libpng" ,libpng)
1899 ("libvpx" ,libvpx)
1900 ("libx11" ,libx11)
1901 ("ncurses" ,ncurses)
1902 ("openal" ,openal)
1903 ("python" ,python)
1904 ("qrencode" ,qrencode)))
1905 (native-inputs
1906 `(("pkg-config" ,pkg-config)))
1907 (home-page "https://github.com/JFreegman/toxic")
1908 (synopsis "Tox chat client using ncurses")
1909 (description "Toxic is a console-based instant messaging client, using
1910c-toxcore and ncurses. It provides audio calls, sound and desktop
1911notifications, and Python scripting support.")
1912 (license license:gpl3+)))
1913
9a3da985
AI
1914(define-public libqmatrixclient
1915 (package
1916 (name "libqmatrixclient")
e9c6aed1 1917 (version "0.5.3.2")
9a3da985
AI
1918 (source
1919 (origin
c6b60d30
EF
1920 (method git-fetch)
1921 (uri (git-reference
e9c6aed1 1922 (url "https://github.com/quotient-im/libQuotient")
0395c533 1923 (commit version)))
c6b60d30 1924 (file-name (git-file-name name version))
9a3da985 1925 (sha256
e9c6aed1 1926 (base32 "0gkwr3yw6k2m0j8cc085b5p2q788rf5nhp1p5hc5d55pc7mci2qs"))))
9a3da985
AI
1927 (build-system cmake-build-system)
1928 (inputs
0395c533
TGR
1929 `(("qtbase" ,qtbase)
1930 ("qtmultimedia" ,qtmultimedia)))
9a3da985
AI
1931 (arguments
1932 `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON")
0395c533 1933 #:tests? #f)) ; no tests
9a3da985
AI
1934 (home-page "https://matrix.org/docs/projects/sdk/libqmatrixclient.html")
1935 (synopsis "Qt5 client library for the Matrix instant messaging protocol")
1936 (description "libqmatrixclient is a Qt5 library to write clients for the
1937Matrix instant messaging protocol. Quaternion is the reference client
1938implementation. Quaternion and libqmatrixclient together form the
1939QMatrixClient project.")
1940 (license license:lgpl2.1+)))
e81c952a 1941
57163f91 1942(define-public mtxclient
1943 (package
1944 (name "mtxclient")
c28c408e 1945 (version "0.3.1")
57163f91 1946 (source
1947 (origin
1948 (method git-fetch)
1949 (uri (git-reference
b0e7b699 1950 (url "https://github.com/Nheko-Reborn/mtxclient")
57163f91 1951 (commit (string-append "v" version))))
1952 (file-name (git-file-name name version))
1953 (sha256
c28c408e 1954 (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x"))))
57163f91 1955 (arguments
1956 `(#:configure-flags
1957 (list
1958 ;; Disable example binaries (not installed)
1959 "-DBUILD_LIB_EXAMPLES=OFF")
1960 #:phases
1961 (modify-phases %standard-phases
1962 (add-before 'configure 'disable-network-tests
1963 (lambda _
1964 (substitute* "CMakeLists.txt"
1f49f5c1 1965 (("add_test\\((BasicConnectivity|ClientAPI|MediaAPI|Encryption|Pushrules)")
57163f91 1966 "# add_test"))
1967 #t))
1968 (add-before 'configure 'set-home
1969 (lambda _
1970 ;; Tries to create package registry file
1971 ;; So, set HOME.
1972 (setenv "HOME" "/tmp")
1973 #t)))))
1974 (build-system cmake-build-system)
1975 (inputs
1976 `(("boost" ,boost)
1977 ("json-modern-cxx" ,json-modern-cxx)
1978 ("libolm" ,libolm)
1979 ("libsodium" ,libsodium)
1980 ("openssl" ,openssl)
1981 ("spdlog" ,spdlog)
1982 ("zlib" ,zlib)))
1983 (native-inputs
1984 `(("googletest" ,googletest)
1985 ("pkg-config" ,pkg-config)))
1986 (home-page "https://github.com/Nheko-Reborn/mtxclient")
1987 (synopsis "Client API library for the Matrix protocol")
1988 (description "@code{mtxclient} is a C++ library that implements client API
1989for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
1990 (license license:expat)))
1991
b40f4052 1992(define-public nheko
1993 (package
1994 (name "nheko")
77b5498f 1995 (version "0.7.2")
b40f4052 1996 (source
1997 (origin
1998 (method git-fetch)
1999 (uri (git-reference
b0e7b699 2000 (url "https://github.com/Nheko-Reborn/nheko")
b40f4052 2001 (commit (string-append "v" version))))
2002 (file-name (git-file-name name version))
2003 (sha256
77b5498f 2004 (base32 "1cbhgaf9klgxdirrxj571fqwspm0byl75c1xc40l727a6qswvp7s"))))
b40f4052 2005 (arguments
2006 `(#:tests? #f ;no test target
2007 #:configure-flags
2008 (list
2009 "-DCMAKE_BUILD_TYPE=Release"
2010 "-DCMAKE_CXX_FLAGS=-fpermissive")
2011 #:phases
2012 (modify-phases %standard-phases
2013 (add-after 'unpack 'remove-Werror
2014 (lambda _
2015 (substitute* "CMakeLists.txt"
2016 (("-Werror") ""))
2017 #t))
2018 (add-after 'unpack 'fix-determinism
2019 (lambda _
2020 ;; Make Qt deterministic.
2021 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
2022 #t)))))
2023 (build-system qt-build-system)
2024 (inputs
2025 `(("boost" ,boost)
2026 ("cmark" ,cmark)
2027 ("json-modern-cxx" ,json-modern-cxx)
2028 ("libolm" ,libolm)
2029 ("lmdb" ,lmdb)
2030 ("lmdbxx" ,lmdbxx)
2031 ("mtxclient" ,mtxclient)
2032 ("openssl" ,openssl)
2033 ("qtbase" ,qtbase)
76623b67
JB
2034 ("qtdeclarative" ,qtdeclarative)
2035 ("qtgraphicaleffects" ,qtgraphicaleffects)
b40f4052 2036 ("qtmultimedia" ,qtmultimedia)
76623b67
JB
2037 ("qtquickcontrols2" ,qtquickcontrols2)
2038 ("qtsvg" ,qtsvg)
b40f4052 2039 ("spdlog" ,spdlog)
2040 ("tweeny" ,tweeny)
2041 ("zlib" ,zlib)))
2042 (native-inputs
2043 `(("pkg-config" ,pkg-config)
2044 ("qtlinguist" ,qttools)))
2045 (home-page "https://github.com/Nheko-Reborn/nheko")
2046 (synopsis "Desktop client for Matrix using Qt and C++14")
2047 (description "@code{Nheko} want to provide a native desktop app for the
2048Matrix protocol that feels more like a mainstream chat app and less like an IRC
2049client.
2050
2051There is support for:
2052@itemize
2053@item E2E encryption (text messages only: attachments are currently sent unencrypted).
2054@item User registration.
2055@item Creating, joining & leaving rooms.
2056@item Sending & receiving invites.
2057@item Sending & receiving files and emoji.
2058@item Typing notifications.
2059@item Username auto-completion.
2060@item Message & mention notifications.
2061@item Redacting messages.
2062@item Read receipts.
2063@item Basic communities support.
2064@item Room switcher (@key{ctrl-K}).
2065@item Light, Dark & System themes.
2066@end itemize")
2067 (license license:gpl3+)))
2068
e81c952a
AI
2069(define-public quaternion
2070 (package
2071 (name "quaternion")
35d1ac7f 2072 (version "0.0.9.4e")
e81c952a
AI
2073 (source
2074 (origin
6f066db1
EF
2075 (method git-fetch)
2076 (uri (git-reference
35d1ac7f 2077 (url "https://github.com/quotient-im/Quaternion")
1e9b956e 2078 (commit version)))
6f066db1 2079 (file-name (git-file-name name version))
e81c952a 2080 (sha256
35d1ac7f 2081 (base32 "0hqhg7l6wpkdbzrdjvrbqymmahziri07ba0hvbii7dd2p0h248fv"))))
34e31612 2082 (build-system qt-build-system)
e81c952a
AI
2083 (inputs
2084 `(("libqmatrixclient" ,libqmatrixclient)
29739890 2085 ("qtbase" ,qtbase)
c7ac8e36 2086 ("qtdeclarative" ,qtdeclarative)
1e9b956e 2087 ("qtmultimedia" ,qtmultimedia)
c7ac8e36 2088 ("qtquickcontrols" ,qtquickcontrols)
f920a64a 2089 ("qtquickcontrols2" ,qtquickcontrols2)
c7ac8e36
AI
2090 ("qtsvg" ,qtsvg)
2091 ("qttools" ,qttools)))
e81c952a 2092 (arguments
34e31612 2093 `(#:tests? #f)) ; no tests
e81c952a
AI
2094 (home-page "https://matrix.org/docs/projects/client/quaternion.html")
2095 (synopsis "Graphical client for the Matrix instant messaging protocol")
2096 (description "Quaternion is a Qt5 desktop client for the Matrix instant
2097messaging protocol. It uses libqmatrixclient and is its reference client
8b660be1 2098implementation. Quaternion and libqmatrixclient together form the
e81c952a 2099QMatrixClient project.")
1e9b956e
TGR
2100 (license (list license:gpl3+ ; all source code
2101 license:lgpl3+)))) ; icons/breeze
e81c952a 2102
f65fdd95
TGR
2103(define-public hangups
2104 (package
2105 (name "hangups")
58833aec 2106 (version "0.4.11")
f65fdd95
TGR
2107 (source
2108 (origin
2109 (method url-fetch)
2110 (uri (pypi-uri "hangups" version))
2111 (sha256
58833aec 2112 (base32 "165lravvlsgkv6pp3vgg785ihycvs43qzqxw2d2yygrc6pbhqlyv"))))
f65fdd95
TGR
2113 (build-system python-build-system)
2114 (arguments
2115 `(#:phases
2116 (modify-phases %standard-phases
2117 (add-before 'build 'relax-dependencies
2118 ;; Relax overly strict package version specifications.
2119 (lambda _
2120 (substitute* "setup.py"
2121 (("==") ">="))
2122 #t)))))
2123 (propagated-inputs
2124 `(("python-aiohttp" ,python-aiohttp)
2125 ("python-appdirs" ,python-appdirs)
2126 ("python-async-timeout" ,python-async-timeout)
2127 ("python-configargparse" ,python-configargparse)
2128 ("python-mechanicalsoup" ,python-mechanicalsoup)
837547cb 2129 ("python-protobuf" ,python-protobuf-3.6)
f65fdd95
TGR
2130 ("python-readlike" ,python-readlike)
2131 ("python-reparser" ,python-reparser)
2132 ("python-requests" ,python-requests)
2133 ("python-urwid" ,python-urwid)))
4b27b09a
TGR
2134 (native-inputs
2135 `(("python-httpretty" ,python-httpretty)
2136 ("python-pytest" ,python-pytest)))
f65fdd95
TGR
2137 (home-page "https://hangups.readthedocs.io/")
2138 (synopsis "Instant messaging client for Google Hangouts")
2139 (description
2140 "Hangups is an instant messaging client for Google Hangouts. It includes
2141both a Python library and a reference client with a text-based user interface.
2142
2143Hangups is implements a reverse-engineered version of Hangouts' proprietary,
2144non-interoperable protocol, which allows it to support features like group
2145messaging that aren’t available to clients that connect over XMPP.")
2146 (license license:expat)))
2147
e9a04157
2148(define-public telegram-purple
2149 (package
2150 (name "telegram-purple")
c0fb663e 2151 (version "1.4.2")
e9a04157
2152 (home-page "https://github.com/majn/telegram-purple")
2153 (source (origin
2154 (method git-fetch)
2155 (uri (git-reference
2156 (url home-page)
2157 (commit (string-append "v" version))
2158 (recursive? #t)))
2159 (sha256
2160 (base32
c0fb663e 2161 "0imbzhhq9qbj6gvkckrnjhls2vvmmy8db7l6gsd7lng2pbfcn522"))
e9a04157
2162 (modules '((guix build utils)))
2163 (snippet
2164 '(begin
2165 (substitute* "Makefile.in"
2166 ;; By default these two directories point to Pidgin's own
2167 ;; prefix.
2168 (("^PLUGIN_DIR_PURPLE=.*")
2169 (string-append
2170 "exec_prefix := @exec_prefix@\n"
2171 "PLUGIN_DIR_PURPLE := @libdir@/purple-2\n"))
2172 (("^DATA_ROOT_DIR_PURPLE=.*")
2173 "DATA_ROOT_DIR_PURPLE := @datarootdir@\n")
2174
2175 ;; Honor sysconfdir instead of trying to write to /etc.
2176 (("DESTDIR\\)/etc/telegram-purple")
2177 "DESTDIR)@sysconfdir@/telegram-purple"))
2178 #t))
2179 (patches (search-patches "telegram-purple-adjust-test.patch"))
2180 (file-name (git-file-name name version))))
2181 (build-system gnu-build-system)
2182 (native-inputs
2183 `(("pkg-config" ,pkg-config)
79edfcf2 2184 ("gettext" ,gettext-minimal)
e9a04157
2185 ("which" ,which)))
2186 (inputs
2187 `(("pidgin" ,pidgin)
2188 ("libgcrypt" ,libgcrypt)
2189 ("libwebp" ,libwebp)
2190 ("glib" ,glib)
e9a04157
2191 ("gtk+" ,gtk+-2)
2192 ("zlib" ,zlib)))
2193 (arguments
2194 `(#:phases
2195 (modify-phases %standard-phases
2196 ;; We're using release tag for repository checkout - let's prepare
2197 ;; header defining GIT_COMMIT manually instead of running git to
2198 ;; identify version which is being compiled. Git repository
2199 ;; is removed anyway and only source code is kept.
2200 (add-after 'unpack 'prepare-commit.h
2201 (lambda _
2202 (with-output-to-file "./commit.h"
2203 (lambda ()
2204 (display
2205 (string-append "//generated by guix, use version instead of "
2206 "commit\n"
2207 "#ifndef GIT_COMMIT\n"
2208 "# define GIT_COMMIT \"v"
2209 ,version "\"\n"
2210 "#endif\n"))))
2211 #t))
2212 (add-before 'configure 'set-SHELL-variables
2213 ;; Set these environment variables so that 'tgl/configure' uses the
2214 ;; right shell and not /bin/sh.
2215 (lambda _
2216 (let ((bash (which "bash")))
2217 (setenv "SHELL" bash)
2218 (setenv "CONFIG_SHELL" bash)
2219 #t))))))
2220 (synopsis "Telegram messaging support for Pidgin")
2221 (description
2222 "Telegram-purple is a plugin for Libpurple, the communication library
2223used by the Pidgin instant messaging client, that adds support for the
2224Telegram messenger.")
2225
2226 ;; Code under tgl/ (the Telegram library) is LGPLv2.1+, but the plugin
2227 ;; itself is GPLv2+.
2228 (license license:gpl2+)))
2229
403604c3 2230(define-public tdlib
d3eef427 2231 (let ((commit "f45d80fe16f99d112d545b7cd74ce46342fe3437")
dcbfb3b8 2232 (revision "0")
d3eef427 2233 (version "1.6.6"))
403604c3
BG
2234 (package
2235 (name "tdlib")
2236 (version (git-version version revision commit))
2237 (source (origin
2238 (method git-fetch)
2239 (uri (git-reference
b0e7b699 2240 (url "https://github.com/tdlib/td")
403604c3
BG
2241 (commit commit)))
2242 (sha256
2243 (base32
d3eef427 2244 "1q8zw26mqhpdzvqbgc7fmn8rzwm5amb8m7s6impin4342wj7h6nr"))
403604c3
BG
2245 (file-name (git-file-name name version))))
2246 (build-system cmake-build-system)
2247 (arguments
2248 `(#:tests? #t
70848cd0
BG
2249 #:configure-flags
2250 (list "-DCMAKE_BUILD_TYPE=Release"
2251 "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work.
403604c3
BG
2252 #:phases
2253 (modify-phases %standard-phases
2254 (add-after 'unpack 'remove-failing-tests
2255 (lambda _
2256 (substitute* "test/CMakeLists.txt"
2257 ;; The test cases are compiled into a distinct binary
2258 ;; which uses mtproto.cpp to attempt to connect to
2259 ;; a remote server. Removing this file from the sources
2260 ;; list disables those specific test cases.
2261 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") ""))
2262 #t)))))
2263 (native-inputs
2264 `(("gperf" ,gperf)
2265 ("openssl" ,openssl)
2266 ("zlib" ,zlib)
2267 ("php" ,php)
2268 ("doxygen" ,doxygen)))
2269 (synopsis "Cross-platform library for building Telegram clients")
2270 (description "Tdlib is a cross-platform library for creating custom
2271Telegram clients following the official Telegram API. It can be easily used
2272from almost any programming language with a C-FFI and features first-class
2273support for high performance Telegram Bot creation.")
2274 (home-page "https://core.telegram.org/tdlib")
2275 (license license:boost1.0))))
2276
593ef98a
JB
2277(define-public purple-mm-sms
2278 (package
2279 (name "purple-mm-sms")
2280 (version "0.1.4")
2281 (source (origin
2282 (method git-fetch)
2283 (uri (git-reference
2284 (url "https://source.puri.sm/Librem5/purple-mm-sms.git")
2285 (commit (string-append "v" version))))
2286 (file-name (git-file-name name version))
2287 (sha256
2288 (base32
2289 "1daf7zl8bhhm1szkgxflpqql69f2w9i9nlgf1n4p1nynxifz1bim"))))
2290 (build-system gnu-build-system)
2291 (arguments
2292 `(#:make-flags
2293 (let ((out (assoc-ref %outputs "out")))
2294 ;; Fix hardcoded paths
2295 (list (string-append "PREFIX=" out)
2296 (string-append "PLUGIN_DIR_PURPLE=" out "/lib/purple-2")
2297 (string-append "DATA_ROOT_DIR_PURPLE=" out "/share")))
2298 #:tests? #f ; no tests
2299 #:phases
2300 (modify-phases %standard-phases
2301 (delete 'configure))))
2302 (native-inputs
2303 `(("glib:bin" ,glib "bin")
2304 ("pkg-config" ,pkg-config)))
2305 (inputs
2306 `(("modem-manager" ,modem-manager)
2307 ("pidgin" ,pidgin)))
2308 (synopsis "Libpurple plugin for SMS via ModemManager")
2309 (description "Plugin for libpurple to allow sending SMS using ModemManager.")
2310 (home-page "https://source.puri.sm/Librem5/purple-mm-sms")
2311 (license license:gpl2+)))
d2618623
JB
2312
2313(define-public chatty
2314 (package
2315 (name "chatty")
2316 (version "0.1.10")
2317 (source (origin
2318 (method git-fetch)
2319 (uri (git-reference
2320 (url "https://source.puri.sm/Librem5/chatty.git")
2321 (commit (string-append "v" version))))
2322 (file-name (git-file-name name version))
2323 (sha256
2324 (base32
2325 "0czvqwjzsb0rvmgrmbh97m1b35rnwl41j7q32z4fcqb7bschibql"))))
2326 (build-system meson-build-system)
2327 (arguments
2328 '(#:phases
2329 (modify-phases %standard-phases
2330 (add-after 'unpack 'skip-updating-desktop-database
2331 (lambda _
2332 (substitute* "meson.build"
2333 (("meson.add_install_script.*") ""))
2334 #t)))))
2335 (native-inputs
2336 `(("gettext" ,gettext-minimal)
2337 ("glib:bin" ,glib "bin")
2338 ("pkg-config" ,pkg-config)))
2339 (inputs
2340 `(("feedbackd" ,feedbackd)
2341 ("folks" ,folks)
2342 ("libgcrypt" ,libgcrypt)
2343 ("libgee" ,libgee)
a790dfe8 2344 ("libhandy" ,libhandy-0.0)
d2618623
JB
2345 ("pidgin" ,pidgin)
2346 ("purple-mm-sms" ,purple-mm-sms)
2347 ("sqlite" ,sqlite)))
2348 (propagated-inputs
2349 `(("adwaita-icon-theme" ,adwaita-icon-theme)
2350 ("evolution-data-server" ,evolution-data-server)))
2351 (synopsis "Mobile client for XMPP and SMS messaging")
2352 (description "Chatty is a chat program for XMPP and SMS. It works on mobile
2353as well as on desktop platforms. It's based on libpurple and ModemManager.")
2354 (home-page "https://source.puri.sm/Librem5/chatty")
2355 (license license:gpl3+)))
2356
c3bbaea7
DM
2357(define-public mosquitto
2358 (package
2359 (name "mosquitto")
2360 (version "1.6.12")
2361 (source
2362 (origin
2363 (method url-fetch)
2364 (uri (string-append "https://mosquitto.org/files/source/mosquitto-"
2365 version ".tar.gz"))
2366 (sha256
2367 (base32
2368 "1yq7y329baa1ly488rw125c3mvsnsa7kjkik602xv1xpkz8p73al"))))
2369 (build-system cmake-build-system)
2370 (inputs
2371 `(("openssl" ,openssl)))
2372 (synopsis "Message broker")
2373 (description "This package provides Eclipse Mosquitto, a message broker
2374that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto
2375is lightweight and is suitable for use on all devices from low power single
2376board computers to full servers.
2377
2378The MQTT protocol provides a lightweight method of carrying out messaging
2379using a publish/subscribe model. This makes it suitable for Internet of
2380Things messaging such as with low power sensors or mobile devices such
2381as phones, embedded computers or microcontrollers.")
2382 (home-page "https://mosquitto.org/")
2383 ;; Dual licensed.
2384 (license (list license:epl1.0 license:edl1.0))))
2385
7c706558 2386;;; messaging.scm ends here