messaging.scm 111 KB
Newer Older
Mark H Weaver's avatar
Mark H Weaver committed
1
;;; GNU Guix --- Functional package management for GNU
2
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
3
;;; Copyright © 2014, 2017 Julien Lepiller <julien@lepiller.eu>
4
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
5
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
6
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
7
;;; Copyright © 2015, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
nikita's avatar
nikita committed
8
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
Andy Patterson's avatar
Andy Patterson committed
9
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
10
;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
Mekeor Melire's avatar
Mekeor Melire committed
11
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
Arun Isaac's avatar
Arun Isaac committed
12
;;; Copyright © 2017, 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
13
;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
14
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
15
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
Leo Famulari's avatar
Leo Famulari committed
16
;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
17
;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
18
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
Brett Gilio's avatar
Brett Gilio committed
19
;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
20
;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
Nicolò's avatar
Nicolò committed
21
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
22
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
23
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
24
;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
jonsger's avatar
jonsger committed
25
;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
26
;;; Copyright © 2020 Mason Hock <chaosmonk@riseup.net>
27
;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
28
;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
29
;;; Copyright © 2020, 2021 Robert Karszniewicz <avoidr@posteo.de>
Giacomo Leidi's avatar
Giacomo Leidi committed
30
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
31
;;; Copyright © 2021 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Mark H Weaver's avatar
Mark H Weaver committed
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages messaging)
Mark H Weaver's avatar
Mark H Weaver committed
49
  #:use-module (gnu packages)
50
  #:use-module (gnu packages admin)
Andy Patterson's avatar
Andy Patterson committed
51
  #:use-module (gnu packages aidc)
ng0's avatar
ng0 committed
52
  #:use-module (gnu packages aspell)
53
  #:use-module (gnu packages audio)
Mark H Weaver's avatar
Mark H Weaver committed
54
55
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages avahi)
56
  #:use-module (gnu packages base)
57
58
  #:use-module (gnu packages bash)
  #:use-module (gnu packages bison)
59
  #:use-module (gnu packages boost)
Mark H Weaver's avatar
Mark H Weaver committed
60
  #:use-module (gnu packages check)
61
  #:use-module (gnu packages compression)
Nicolò's avatar
Nicolò committed
62
  #:use-module (gnu packages cpp)
ng0's avatar
ng0 committed
63
  #:use-module (gnu packages crypto)
Mekeor Melire's avatar
Mekeor Melire committed
64
  #:use-module (gnu packages curl)
Mark H Weaver's avatar
Mark H Weaver committed
65
66
  #:use-module (gnu packages cyrus-sasl)
  #:use-module (gnu packages databases)
Raghav Gururajan's avatar
Raghav Gururajan committed
67
  #:use-module (gnu packages docbook)
68
  #:use-module (gnu packages documentation)
Julien Lepiller's avatar
Julien Lepiller committed
69
  #:use-module (gnu packages enchant)
70
  #:use-module (gnu packages fontutils)
jonsger's avatar
jonsger committed
71
  #:use-module (gnu packages freedesktop)
72
  #:use-module (gnu packages gettext)
73
  #:use-module (gnu packages glib)
Julien Lepiller's avatar
Julien Lepiller committed
74
  #:use-module (gnu packages gnome)
75
  #:use-module (gnu packages gnupg)
Raghav Gururajan's avatar
Raghav Gururajan committed
76
  #:use-module (gnu packages golang)
Brett Gilio's avatar
Brett Gilio committed
77
  #:use-module (gnu packages gperf)
78
  #:use-module (gnu packages graphviz)
79
  #:use-module (gnu packages gstreamer)
Julien Lepiller's avatar
Julien Lepiller committed
80
  #:use-module (gnu packages gtk)
81
82
  #:use-module (gnu packages guile)
  #:use-module (gnu packages icu4c)
Theodoros Foradis's avatar
Theodoros Foradis committed
83
  #:use-module (gnu packages image)
Raghav Gururajan's avatar
Raghav Gururajan committed
84
  #:use-module (gnu packages kde)
85
  #:use-module (gnu packages kerberos)
86
  #:use-module (gnu packages less)
Julien Lepiller's avatar
Julien Lepiller committed
87
  #:use-module (gnu packages libcanberra)
Mark H Weaver's avatar
Mark H Weaver committed
88
  #:use-module (gnu packages libidn)
Raghav Gururajan's avatar
Raghav Gururajan committed
89
  #:use-module (gnu packages libreoffice)
90
  #:use-module (gnu packages linux)
Nicolò's avatar
Nicolò committed
91
  #:use-module (gnu packages logging)
Ricardo Wurmus's avatar
Ricardo Wurmus committed
92
  #:use-module (gnu packages lua)
93
  #:use-module (gnu packages man)
Nicolò's avatar
Nicolò committed
94
  #:use-module (gnu packages markup)
Giacomo Leidi's avatar
Giacomo Leidi committed
95
  #:use-module (gnu packages matrix)
96
  #:use-module (gnu packages mono)
Raghav Gururajan's avatar
Raghav Gururajan committed
97
  #:use-module (gnu packages mpd)
Mark H Weaver's avatar
Mark H Weaver committed
98
  #:use-module (gnu packages ncurses)
99
  #:use-module (gnu packages networking)
100
  #:use-module (gnu packages nss)
101
102
103
  #:use-module (gnu packages pcre)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages photo)
Brett Gilio's avatar
Brett Gilio committed
104
  #:use-module (gnu packages php)
Mark H Weaver's avatar
Mark H Weaver committed
105
  #:use-module (gnu packages pkg-config)
Tobias Geerinckx-Rice's avatar
Tobias Geerinckx-Rice committed
106
  #:use-module (gnu packages protobuf)
Mark H Weaver's avatar
Mark H Weaver committed
107
  #:use-module (gnu packages python)
Giacomo Leidi's avatar
Giacomo Leidi committed
108
  #:use-module (gnu packages python-check)
109
  #:use-module (gnu packages python-crypto)
Tobias Geerinckx-Rice's avatar
Tobias Geerinckx-Rice committed
110
  #:use-module (gnu packages python-web)
111
  #:use-module (gnu packages python-xyz)
112
113
  #:use-module (gnu packages qt)
  #:use-module (gnu packages readline)
Raghav Gururajan's avatar
Raghav Gururajan committed
114
  #:use-module (gnu packages ruby)
Raghav Gururajan's avatar
Raghav Gururajan committed
115
  #:use-module (gnu packages sphinx)
116
  #:use-module (gnu packages sqlite)
117
  #:use-module (gnu packages tcl)
118
  #:use-module (gnu packages texinfo)
Theodoros Foradis's avatar
Theodoros Foradis committed
119
  #:use-module (gnu packages textutils)
David Thompson's avatar
David Thompson committed
120
  #:use-module (gnu packages tls)
ng0's avatar
ng0 committed
121
  #:use-module (gnu packages video)
122
  #:use-module (gnu packages web)
123
  #:use-module (gnu packages xdisorg)
Erik Edrosa's avatar
Erik Edrosa committed
124
  #:use-module (gnu packages xiph)
125
126
127
  #:use-module (gnu packages xml)
  #:use-module (gnu packages xorg)
  #:use-module (guix build-system cmake)
128
  #:use-module (guix build-system go)
129
130
131
132
133
  #:use-module (guix build-system glib-or-gtk)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system meson)
  #:use-module (guix build-system perl)
  #:use-module (guix build-system python)
134
  #:use-module (guix build-system qt)
Clément Lassieur's avatar
Clément Lassieur committed
135
  #:use-module (guix build-system trivial)
136
137
  #:use-module (guix download)
  #:use-module (guix git-download)
138
  #:use-module (guix hg-download)
139
140
141
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix utils))
Mark H Weaver's avatar
Mark H Weaver committed
142

Raghav Gururajan's avatar
Raghav Gururajan committed
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
(define-public omemo-wget
  (package
    (name "omemo-wget")
    (version "0.3.0")
    (source
     (origin
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/roobre/omemo-wget")
         (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0s3vfaicw5xbjl9yiyr4ckrzhzqbvfh1w2ih1igavlfpgw4v7kva"))))
    (build-system go-build-system)
    (arguments
     `(#:import-path "github.com/roobre/omemo-wget"
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch
           (lambda* (#:key inputs #:allow-other-keys)
             (let* ((xdg-utils (assoc-ref inputs "xdg-utils"))
                    (xdg-open (string-append xdg-utils "/bin/xdg-open")))
               (substitute* (find-files "." "\\.go$")
                 ;; Correct the import path of 'aesgcm' package.
                 (("roob\\.re/omemo-wget/aesgcm")
                  "github.com/roobre/omemo-wget/aesgcm")
                 ;; Use absolute path of 'xdg-open' program.
                 (("xdg-open") xdg-open))))))))
    (inputs
     `(("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
       ("xdg-utils" ,xdg-utils)))
    (home-page "https://roob.re/omemo-wget")
    (synopsis "Program to download and decrypt @code{aesgcm://} URLs")
    (description "OMEMO-wget is a tool to handle cryptographic URLs, generated
by @acronym{OMEMO, OMEMO Multi-End Message and Object Encryption}, during
XMPP-based sessions.")
    (license license:lgpl3+)))

Raghav Gururajan's avatar
Raghav Gururajan committed
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
(define-public psi
  (package
    (name "psi")
    (version "1.5")
    (source
     (origin
       (method url-fetch)
       (uri
        (string-append "mirror://sourceforge/psi/Psi/"
                       version "/psi-" version ".tar.xz"))
       (modules '((guix build utils)))
       (snippet
        `(begin
           (delete-file-recursively "3rdparty")))
       (sha256
        (base32 "1dxmm1d1zr0pfs51lba732ipm6hm2357jlfb934lvarzsh7karri"))))
    (build-system qt-build-system)
    (arguments
     `(#:tests? #f                      ; No target
       #:configure-flags
       (list
        "-DUSE_ENCHANT=ON"
        "-DUSE_CCACHE=OFF")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-cmake
           (lambda _
             (substitute* "cmake/modules/FindHunspell.cmake"
               (("hunspell-1.6")
                "hunspell-1.7"))
             #t)))))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("python" ,python-wrapper)
       ("ruby" ,ruby)))
    (inputs
     `(("aspell" ,aspell)
       ("enchant" ,enchant-1.6)
       ("hunspell" ,hunspell)
       ("libidn" ,libidn)
       ("qca" ,qca)
Maxim's avatar
Maxim committed
223
       ("qtbase" ,qtbase-5)
Raghav Gururajan's avatar
Raghav Gururajan committed
224
225
226
227
228
229
230
231
232
233
234
235
236
237
       ("qtmultimedia" ,qtmultimedia)
       ("qtsvg" ,qtsvg)
       ("qtwebkit" ,qtwebkit)
       ("qtx11extras" ,qtx11extras)
       ("x11" ,libx11)
       ("xext" ,libxext)
       ("xcb" ,libxcb)
       ("zlib" ,zlib)))
    (synopsis "Qt-based XMPP Client")
    (description "Psi is a capable XMPP client aimed at experienced users.
Its design goals are simplicity and stability.")
    (home-page "https://psi-im.org")
    (license license:gpl2+)))

Raghav Gururajan's avatar
Raghav Gururajan committed
238
239
240
(define-public libgnt
  (package
    (name "libgnt")
241
    (version "2.14.1")
Raghav Gururajan's avatar
Raghav Gururajan committed
242
243
244
245
246
247
248
    (source
     (origin
       (method url-fetch)
       (uri
        (string-append "mirror://sourceforge/pidgin/libgnt/"
                       version "/libgnt-" version ".tar.xz"))
       (sha256
249
        (base32 "1n2bxg0ignn53c08cp69pj4sdg53kwlqn23rincyjmpr327fdhsy"))))
Raghav Gururajan's avatar
Raghav Gururajan committed
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
    (build-system meson-build-system)
    (outputs '("out" "doc"))
    (arguments
     `(#:glib-or-gtk? #t     ; To wrap binaries and/or compile schemas
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-ncurses-path
           (lambda* (#:key inputs #:allow-other-keys)
             (substitute* "meson.build"
               (("'/usr'")
                (string-append "'"
                               (assoc-ref inputs "ncurses")
                               "'")))
             #t))
         (add-before 'configure 'patch-docbook-xml
           (lambda* (#:key inputs #:allow-other-keys)
             (with-directory-excursion "doc"
               (substitute* "libgnt-docs.xml"
                 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
                  (string-append (assoc-ref inputs "docbook-xml")
                                 "/xml/dtd/docbook/"))))
             #t))
         (add-after 'install 'move-doc
           (lambda* (#:key outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
                    (doc (assoc-ref outputs "doc")))
               (mkdir-p (string-append doc "/share"))
               (rename-file
                (string-append out "/share/gtk-doc")
                (string-append doc "/share/gtk-doc"))
               #t))))))
    (native-inputs
     `(("docbook-xml" ,docbook-xml-4.1.2)
       ("glib:bin" ,glib "bin")
       ("gobject-introspection" ,gobject-introspection)
       ("gtk-doc" ,gtk-doc)
       ("pkg-config" ,pkg-config)))
    (inputs
     `(("ncurses" ,ncurses)))
    (propagated-inputs
     `(("glib" ,glib)
       ("libxml" ,libxml2)
       ("python" ,python-2)))
    (synopsis "GLib Ncurses Toolkit")
    (description "GNT is an ncurses toolkit for creating text-mode graphical
user interfaces in a fast and easy way.  It is based on GLib and ncurses.")
    (home-page "https://keep.imfreedom.org/libgnt/libgnt")
    (license license:gpl2+)))

Raghav Gururajan's avatar
Raghav Gururajan committed
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
(define-public libgadu
  (package
    (name "libgadu")
    (version "1.12.2")
    (source
     (origin
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/wojtekka/libgadu.git")
         (commit version)))
       (file-name
        (git-file-name name version))
       (sha256
        (base32 "1s16cripy5w9k12534qb012iwc5m9qcjyrywgsziyn3kl3i0aa8h"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       (list
        "--disable-static")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch-shebangs
           (lambda* (#:key inputs #:allow-other-keys)
             (substitute* "protobufgen.sh"
               (("/bin/sh")
                (string-append (assoc-ref inputs "bash")
                               "/bin/sh")))
             #t)))))
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("bash" ,bash)
       ("doxygen" ,doxygen)
       ("libtool" ,libtool)
       ("perl" ,perl)
       ("pkg-config" ,pkg-config)))
    (inputs
     `(("curl" ,curl)
       ("expat" ,expat)
       ("libprotobuf-c" ,protobuf-c)
       ("libxml" ,libxml2)
       ("openssl" ,openssl)
       ("zlib" ,zlib)))
    (propagated-inputs
     `(("gnutls" ,gnutls)))
    (synopsis "Library for handling the protocol of Gadu-Gadu")
    (description "LibGadu is library for handling Gadu-Gadu instant messenger
protocol.  The library is written in C and aims to be operating system and
environment independent.")
    (home-page "https://libgadu.net/index.en.html")
    (license license:lgpl2.1+)))

Raghav Gururajan's avatar
Raghav Gururajan committed
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
(define-public silc-toolkit
  (package
    (name "silc-toolkit")
    (version "1.1.12")
    (source
     (origin
       (method url-fetch)
       (uri
        (string-append "mirror://sourceforge/silc/silc/toolkit/sources/silc-toolkit-"
                       version ".tar.gz"))
       (sha256
        (base32 "0mnvf9n7qriadg0p7a8qmvcayhnns2g9fhmcymavlm0v8xrky33y"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
       (list
        "--disable-static"
        "--enable-ipv6"
        "--enable-stack-trace")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'trigger-bootstrap
           (lambda _
             (delete-file "configure")
             (delete-file "Makefile.in")
             #t)))))
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("libtool" ,libtool)
       ("perl" ,perl)
       ("pkg-config" ,pkg-config)))
    (synopsis "SILC ToolKit")
    (description "SILC (Secure Internet Live Conferencing) is a modern and secure
conferencing protocol.  It provides all the common conferencing services like
private messages, instant messages, channels and groups, and video and audio
conferencing.")
    (home-page "https://silc.github.io/info")
    (license
     ;; Dual-licensed
     (list
      license:gpl2+
      license:bsd-2))))

Raghav Gururajan's avatar
Raghav Gururajan committed
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
(define-public meanwhile
  (package
    (name "meanwhile")
    (version "1.1.1")
    (source
     (origin
       (method git-fetch)
       (uri
        (git-reference
         (url "https://github.com/obriencj/meanwhile.git")
         (commit
          (string-append "v" version))))
       (file-name
        (git-file-name name version))
       (sha256
        (base32 "1k1gvmx1ikm0y1mdmm495rzkb00pl170jfaf2dy0n5aiiknkk7q3"))))
    (build-system glib-or-gtk-build-system)
    (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("doxygen" ,doxygen)
       ("libtool" ,libtool)
       ("pkg-config" ,pkg-config)))
    (propagated-inputs
     `(("glib" ,glib)))
    (synopsis "Library for Lotus Instant Messaging")
    (description "Meanwhile is a library for connecting to a LIM (Lotus Instant
Messaging, formerly Lotus Sametime, formerly VPBuddy) community.  It uses a
protocol based in part off of the IMPP draft(*1), and in part off of traces of
TCP sessions from existing clients.")
    (home-page "https://github.com/obriencj/meanwhile")
    (license license:lgpl3)))

Raghav Gururajan's avatar
Raghav Gururajan committed
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
(define-public poezio
  (package
    (name "poezio")
    (version "0.13.1")
    (source
     (origin
       (method git-fetch)
       (uri
        (git-reference
         (url "https://lab.louiz.org/poezio/poezio.git")
         (commit
          (string-append "v" version))))
       (file-name
        (git-file-name name version))
       (sha256
        (base32 "041y61pcbdb86s04qwp8s1g6bp84yskc7vdizwpi2hz18y01x5fy"))))
    (build-system python-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'patch
           (lambda _
             (substitute* "setup.py"
               (("'CC', 'cc'")
                "'CC', 'gcc'"))
             #t)))))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("python-setuptools" ,python-setuptools)
       ("python-sphinx" ,python-sphinx)))
    (inputs
     `(("python-mpd2" ,python-mpd2)
       ("python-potr" ,python-potr)
       ("python-pyasn1" ,python-pyasn1)
       ("python-pyasn1-modules" ,python-pyasn1-modules)
       ("python-pygments" ,python-pygments)
       ("python-pyinotify" ,python-pyinotify)
       ;("python" ,python)
       ("python-qrcode" ,python-qrcode)
       ("python-slixmpp" ,python-slixmpp)))
    (synopsis "Console Jabber/XMPP Client")
    (description "Poezio is a free console XMPP client (the protocol on which
the Jabber IM network is built).
Its goal is to let you connect very easily (no account creation needed) to the
network and join various chatrooms, immediately.  It tries to look like the
most famous IRC clients (weechat, irssi, etc).  Many commands are identical and
you won't be lost if you already know these clients.  Configuration can be
made in a configuration file or directly from the client.
You'll find the light, fast, geeky and anonymous spirit of IRC while using a
powerful, standard and open protocol.")
    (home-page "https://poez.io/en/")
    (license license:zlib)))

Mark H Weaver's avatar
Mark H Weaver committed
482
483
484
(define-public libotr
  (package
    (name "libotr")
485
    (version "4.1.1")
486
487
488
489
490
491
492
493
494
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://otr.cypherpunks.ca/libotr-"
                           version ".tar.gz"))
       (sha256
        (base32 "1x8rliydhbibmzwdbyr7pd7n87m2jmxnqkpvaalnf4154hj1hfwb"))
       (patches
        (search-patches "libotr-test-auth-fix.patch"))))
Mark H Weaver's avatar
Mark H Weaver committed
495
    (build-system gnu-build-system)
496
497
498
499
    (native-inputs
     `(("perl" ,perl)))                 ; for the test suite
    (inputs
     `(("libgpg-error" ,libgpg-error)))
Mark H Weaver's avatar
Mark H Weaver committed
500
    (propagated-inputs
501
     `(("libgcrypt" ,libgcrypt)))    ; libotr headers include gcrypt.h
Mark H Weaver's avatar
Mark H Weaver committed
502
    (synopsis "Off-the-Record (OTR) Messaging Library and Toolkit")
503
504
505
506
507
508
509
510
511
    (description "OTR allows you to have private conversations over instant
messaging by providing: (1) Encryption: No one else can read your instant
messages.  (2) Authentication: You are assured the correspondent is who you
think it is.  (3) Deniability: The messages you send do not have digital
signatures that are checkable by a third party.  Anyone can forge messages
after a conversation to make them look like they came from you.  However,
during a conversation, your correspondent is assured the messages he sees are
authentic and unmodified.  (4) Perfect forward secrecy: If you lose control of
your private keys, no previous conversation is compromised.")
Mark H Weaver's avatar
Mark H Weaver committed
512
    (home-page "https://otr.cypherpunks.ca/")
513
514
    (license
     (list
515
516
517
518
      ;; Library
      license:lgpl2.1+
      ;; Others
      license:gpl2+))))
Mark H Weaver's avatar
Mark H Weaver committed
519

520
521
522
(define-public libsignal-protocol-c
  (package
  (name "libsignal-protocol-c")
523
  (version "2.3.3")
524
  (source (origin
525
526
527
528
529
           (method git-fetch)
           (uri (git-reference
                  (url "https://github.com/WhisperSystems/libsignal-protocol-c")
                  (commit (string-append "v" version))))
           (file-name (git-file-name name version))
530
531
           (sha256
            (base32
532
             "0z5p03vk15i6h870azfjgyfgxhv31q2vq6rfhnybrnkxq2wqzwhk"))))
533
534
535
536
537
  (arguments
   `(;; Required for proper linking and for tests to run.
     #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
  (build-system cmake-build-system)
  (inputs `( ;; Required for tests:
538
539
540
            ("check" ,check)
            ("openssl" ,openssl)))
  (native-inputs `(("pkg-config" ,pkg-config)))
541
542
543
544
545
546
547
548
  (home-page "https://github.com/WhisperSystems/libsignal-protocol-c")
  (synopsis "Implementation of a ratcheting forward secrecy protocol")
  (description "libsignal-protocol-c is an implementation of a ratcheting
forward secrecy protocol that works in synchronous and asynchronous
messaging environments.  It can be used with messaging software to provide
end-to-end encryption.")
  (license license:gpl3+)))

Mark H Weaver's avatar
Mark H Weaver committed
549
550
551
(define-public bitlbee
  (package
    (name "bitlbee")
Timotej Lazar's avatar
Timotej Lazar committed
552
    (version "3.6")
Mark H Weaver's avatar
Mark H Weaver committed
553
554
    (source (origin
              (method url-fetch)
Mark H Weaver's avatar
Mark H Weaver committed
555
              (uri (string-append "https://get.bitlbee.org/src/bitlbee-"
Mark H Weaver's avatar
Mark H Weaver committed
556
557
                                  version ".tar.gz"))
              (sha256
Timotej Lazar's avatar
Timotej Lazar committed
558
               (base32 "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz"))))
Mark H Weaver's avatar
Mark H Weaver committed
559
560
    (build-system gnu-build-system)
    (native-inputs `(("pkg-config" ,pkg-config)
561
562
                     ;; Note: Change to 'check' for versions > 3.6.
                     ("check" ,check-0.12)))
Mark H Weaver's avatar
Mark H Weaver committed
563
    (inputs `(("glib" ,glib)
564
              ("libotr" ,libotr)
Mark H Weaver's avatar
Mark H Weaver committed
565
              ("gnutls" ,gnutls)
Timotej Lazar's avatar
Timotej Lazar committed
566
              ("python" ,python)
Mark H Weaver's avatar
Mark H Weaver committed
567
568
              ("perl" ,perl)))
    (arguments
Kei Kebreau's avatar
Kei Kebreau committed
569
570
     `(#:phases
       (modify-phases %standard-phases
Timotej Lazar's avatar
Timotej Lazar committed
571
572
         (add-before 'configure 'set-python
           (lambda _ (setenv "PYTHON" (which "python3")) #t))
Kei Kebreau's avatar
Kei Kebreau committed
573
574
         (add-after 'install 'install-etc
           (lambda* (#:key (make-flags '()) #:allow-other-keys)
Ricardo Wurmus's avatar
Ricardo Wurmus committed
575
             (apply invoke "make" "install-etc" make-flags)))
576
577
         (add-after 'install-etc 'install-lib
           (lambda* (#:key (make-flags '()) #:allow-other-keys)
Ricardo Wurmus's avatar
Ricardo Wurmus committed
578
             (apply invoke "make" "install-dev" make-flags)))
Kei Kebreau's avatar
Kei Kebreau committed
579
580
581
582
         (replace 'configure
           ;; bitlbee's configure script does not tolerate many of the
           ;; variable settings that Guix would pass to it.
           (lambda* (#:key outputs #:allow-other-keys)
Ricardo Wurmus's avatar
Ricardo Wurmus committed
583
584
585
586
             (invoke "./configure"
                     (string-append "--prefix="
                                    (assoc-ref outputs "out"))
                     "--otr=1"))))))
Mark H Weaver's avatar
Mark H Weaver committed
587
588
589
590
591
592
593
    (synopsis "IRC to instant messaging gateway")
    (description "BitlBee brings IM (instant messaging) to IRC clients, for
people who have an IRC client running all the time and don't want to run an
additional IM client.  BitlBee currently supports XMPP/Jabber (including
Google Talk), MSN Messenger, Yahoo!  Messenger, AIM and ICQ, and the Twitter
microblogging network (plus all other Twitter API compatible services like
identi.ca and status.net).")
594
    (home-page "https://www.bitlbee.org/")
ng0's avatar
ng0 committed
595
    (license (list license:gpl2+ license:bsd-2))))
Mark H Weaver's avatar
Mark H Weaver committed
596

Ludovic Courtès's avatar
Ludovic Courtès committed
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
(define-public bitlbee-purple
  ;; This variant uses libpurple, which provides support for more protocols at
  ;; the expense of a much bigger closure.
  (package/inherit bitlbee
    (name "bitlbee-purple")
    (synopsis "IRC to instant messaging gateway (using Pidgin's libpurple)")
    (inputs `(("purple" ,pidgin)
              ,@(package-inputs bitlbee)))
    (arguments
     (substitute-keyword-arguments (package-arguments bitlbee)
       ((#:phases phases '%standard-phases)
        `(modify-phases ,phases
           (replace 'configure                    ;add "--purple=1"
             (lambda* (#:key outputs #:allow-other-keys)
               (invoke "./configure"
                       (string-append "--prefix="
                                      (assoc-ref outputs "out"))
                       "--otr=1" "--purple=1")))))
       ((#:tests? _ #t)
        ;; XXX: Tests fail to link, and ./configure says that it's "supported
        ;; on a best-effort basis" anyway.
        #f)))))

620
621
622
(define-public bitlbee-discord
  (package
    (name "bitlbee-discord")
Maxim's avatar
Maxim committed
623
    (version "0.4.3")
624
625
626
627
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
628
             (url "https://github.com/sm00th/bitlbee-discord")
629
630
631
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
Maxim's avatar
Maxim committed
632
        (base32 "00qgdvrp7hv02n0ns685igp810zxmv3adsama8601122al6x041n"))))
633
634
    (build-system gnu-build-system)
    (arguments
635
636
637
638
639
     `(#:configure-flags
       (let ((out (assoc-ref %outputs "out")))
         (list (string-append "--with-bdatadir=" out "/share/bitlbee/")
               (string-append "--with-plugindir=" out "/lib/bitlbee/")))
       #:phases
640
       (modify-phases %standard-phases
641
         (add-after 'unpack 'patch-autogen
642
643
644
           (lambda _
             (let ((sh (which "sh")))
               (substitute* "autogen.sh" (("/bin/sh") sh))
645
               (setenv "CONFIG_SHELL" sh)))))))
646
647
648
649
650
651
    (inputs `(("glib" ,glib)))
    (native-inputs `(("pkg-config" ,pkg-config)
                     ("autoconf" ,autoconf)
                     ("automake" ,automake)
                     ("texinfo" ,texinfo)
                     ("libtool" ,libtool)
652
                     ("bitlbee" ,bitlbee) ; needs bitlbee headers
653
654
                     ("bash" ,bash)))
    (synopsis "Discord plugin for Bitlbee")
655
    (description "Bitlbee-discord is a plugin for Bitlbee which provides
656
657
658
659
access to servers running the Discord protocol.")
    (home-page "https://github.com/sm00th/bitlbee-discord/")
    (license license:gpl2+)))

Ludovic Courtès's avatar
Ludovic Courtès committed
660
(define-public purple-mattermost
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
  ;; The latest release (1.2) only supports Mattermost's /api/v3.  Choose a
  ;; commit that supports /api/v4.
  (let ((commit "158ce2052af9aaf3d1f6f045f0cfba276e0e91cf")
        (revision "0"))
    (package
      (name "purple-mattermost")
      (version (git-version "1.2" revision commit))
      (home-page "https://github.com/EionRobb/purple-mattermost")
      (source (origin
                (method git-fetch)
                (uri (git-reference (url home-page)
                                    (commit commit)))
                (file-name (git-file-name name version))
                (sha256
                 (base32
                  "1481zm20pnfq52ncg7hxayjq8cw3a6yh9m4jm1m5s8chsq04015l"))))
      (build-system gnu-build-system)
      (arguments
       `(#:phases (modify-phases %standard-phases
                    (replace 'configure
                      (lambda* (#:key inputs outputs #:allow-other-keys)
                        ;; Adjust the makefile to install files in the right
                        ;; place.
                        (let ((out (assoc-ref outputs "out")))
                          (substitute* "Makefile"
                            (("MATTERMOST_DEST = .*")
                             (string-append "MATTERMOST_DEST = " out
                                            "/lib/purple-2\n")) ;XXX: hardcoded
                            (("MATTERMOST_ICONS_DEST = .*")
                             (string-append "MATTERMOST_ICONS_DEST = "
                                            out
                                            "/share/pixmaps/pidgin/protocols\n")))
                          #t))))
         #:make-flags (list "CC=gcc"
                            ,(string-append "PLUGIN_VERSION=" version))
         #:tests? #f))
      (inputs `(("glib" ,glib)
                ("json-glib" ,json-glib)
                ("discount" ,discount)
                ("pidgin" ,pidgin)))
      (native-inputs `(("pkg-config" ,pkg-config)))
      (synopsis "Purple plug-in to access Mattermost instant messaging")
      (description
       "Purple-Mattermost is a plug-in for Purple, the instant messaging library
Ludovic Courtès's avatar
Ludovic Courtès committed
705
706
used by Pidgin and Bitlbee, among others, to access
@uref{https://mattermost.com/, Mattermost} servers.")
707
      (license license:gpl3+))))
Ludovic Courtès's avatar
Ludovic Courtès committed
708

Julien Lepiller's avatar
Julien Lepiller committed
709
710
711
(define-public hexchat
  (package
    (name "hexchat")
712
    (version "2.14.3")
Julien Lepiller's avatar
Julien Lepiller committed
713
714
715
716
    (source (origin
              (method url-fetch)
              (uri (string-append "https://dl.hexchat.net/hexchat/hexchat-"
                                  version ".tar.xz"))
717
              (patches (search-patches "hexchat-add-libera-chat.patch"))
Julien Lepiller's avatar
Julien Lepiller committed
718
719
              (sha256
               (base32
720
                "10p829jm1r6kidkgf5lhqhyqc5mxdcq96q3zhadsckasvc9rs6lh"))))
Leo Famulari's avatar
Leo Famulari committed
721
722
    (build-system meson-build-system)
    (native-inputs `(("gettext" ,gettext-minimal)
Efraim Flashner's avatar
Efraim Flashner committed
723
                     ("glib:bin" ,glib "bin")       ;need glib-genmarshal
Leo Famulari's avatar
Leo Famulari committed
724
                     ("perl" ,perl)
725
                     ("pkg-config" ,pkg-config)))
Julien Lepiller's avatar
Julien Lepiller committed
726
727
728
729
730
731
    (inputs `(("dbus-glib" ,dbus-glib)
              ("dbus" ,dbus)
              ("enchant" ,enchant)
              ("gtk" ,gtk+-2)
              ("libcanberra" ,libcanberra)
              ("libnotify" ,libnotify)
Leo Famulari's avatar
Leo Famulari committed
732
              ("libproxy" ,libproxy)
Julien Lepiller's avatar
Julien Lepiller committed
733
              ("openssl" ,openssl)
734
735
736
737
738

              ;; Bindings for add-on scripts.
              ("luajit" ,luajit)
              ("perl-xml-parser" ,perl-xml-parser)
              ("python-2" ,python-2)))
739
    (arguments
Leo Famulari's avatar
Leo Famulari committed
740
     `(#:phases
741
       (modify-phases %standard-phases
Leo Famulari's avatar
Leo Famulari committed
742
743
744
745
746
747
748
749
750
         (add-after 'unpack 'skip-desktop-database-updates
           (lambda _
             ;; The build scripts update icon and desktop file databases when
             ;; DESTDIR is not set.  We can't update these databases from
             ;; within the build chroot, but we also don't set DESTDIR.  So, we
             ;; just skip this code.
             (substitute* "meson_post_install.py"
               (("if 'DESTDIR' not in os.environ:")
                 "if False:"))
751
             #t)))))
752
    (synopsis "Graphical IRC client")
Julien Lepiller's avatar
Julien Lepiller committed
753
    (description
754
755
756
757
     "HexChat lets you connect to multiple IRC networks at once.  The main
window shows the list of currently connected networks and their channels, the
current conversation and the list of users.  It uses colors to differentiate
between users and to highlight messages.  It checks spelling using available
Julien Lepiller's avatar
Julien Lepiller committed
758
dictionaries.  HexChat can be extended with multiple addons.")
759
    (home-page "https://hexchat.net/")
ng0's avatar
ng0 committed
760
    (license license:gpl2+)))
Julien Lepiller's avatar
Julien Lepiller committed
761

762
763
764
(define-public ngircd
  (package
    (name "ngircd")
765
    (version "26.1")
766
767
    (source (origin
              (method url-fetch)
768
              (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
769
770
771
                                  version ".tar.xz"))
              (sha256
               (base32
772
                "0m32v0c7mq96rshws4h6d0pi4bm0hynfzx3x01mgrxh9c396zham"))
773
              (patches (search-patches "ngircd-handle-zombies.patch"))))
774
775
776
777
    (build-system gnu-build-system)
    ;; Needed for the test suite.
    (native-inputs `(("procps" ,procps)
                     ("expect" ,expect)
778
779
                     ("inetutils" ,inetutils)
                     ("openssl" ,openssl)))
780
    ;; XXX Add libident.
781
    (inputs `(("zlib" ,zlib)
782
              ("libwrap" ,tcp-wrappers)
783
784
785
786
787
788
789
790
              ("gnutls" ,gnutls)
              ,@(if (string-suffix? "-linux"
                                    (or (%current-target-system)
                                        (%current-system)))
                    `(("linux-pam" ,linux-pam))
                    '())))
    (arguments
     `(#:configure-flags
791
       '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"
792
793
794
795
796
797
         ,@(if (string-suffix? "-linux"
                               (or (%current-target-system)
                                   (%current-system)))
               '("--with-pam")
               '()))
       #:phases
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
       (modify-phases %standard-phases
         ;; Necessary for the test suite.
         (add-after 'configure 'post-configure
           (lambda _
             (substitute* "src/ngircd/Makefile"
               (("/bin/sh") (which "sh")))
             ;; The default getpid.sh does a sloppy grep over 'ps -ax' output,
             ;; which fails arbitrarily.
             (with-output-to-file "src/testsuite/getpid.sh"
               (lambda ()
                 (display
                  (string-append
                   "#!" (which "sh") "\n"
                   "ps -C \"$1\" -o pid=\n"))))
             ;; Our variant of getpid.sh does not match interpreter names
             ;; when the script's shebang is invoked directly as "./foo".
             ;; Patch cases where the test suite relies on this.
             (substitute* "src/testsuite/start-server.sh"
               ;; It runs 'getpid.sh sh' to test if it works at all.  Run it on
               ;; 'make' instead.
               (("getpid.sh sh") "getpid.sh make")))))))
819
    (home-page "https://ngircd.barton.de/")
820
821
    (synopsis "Lightweight Internet Relay Chat server for small networks")
    (description
822
823
824
825
     "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small
or private networks.  It is easy to configure, can cope with dynamic IP
addresses, and supports IPv6, SSL-protected connections, as well as PAM for
authentication.")
ng0's avatar
ng0 committed
826
    (license license:gpl2+)))
827

Mark H Weaver's avatar
Mark H Weaver committed
828
829
830
(define-public pidgin
  (package
    (name "pidgin")
831
    (version "2.14.5")
Mark H Weaver's avatar
Mark H Weaver committed
832
833
834
    (source
     (origin
       (method url-fetch)
835
836
       (uri
        (string-append "mirror://sourceforge/pidgin/Pidgin/"
837
                       version "/pidgin-" version ".tar.gz"))
Mark H Weaver's avatar
Mark H Weaver committed
838
       (sha256
839
        (base32 "12llip3r8126gph82r638xjv2v2rg34qgggn1nbwfmc3s7halimr"))
840
       (patches
841
        (search-patches "pidgin-add-search-path.patch"))
842
843
844
       (modules '((guix build utils)))
       (snippet
        '(begin
845
           ;; Remove stale generated file after applying patches.
846
847
           (delete-file "configure")
           #t))))
Mark H Weaver's avatar
Mark H Weaver committed
848
849
    (build-system glib-or-gtk-build-system)
    (native-inputs
850
851
852
     `(("autoconf" ,autoconf) ;; For bootstrap
       ("automake" ,automake) ;; For bootstrap
       ("check" ,check)
853
       ("dot" ,graphviz)
Mark H Weaver's avatar
Mark H Weaver committed
854
       ("gconf" ,gconf)
855
856
       ("intltool" ,intltool)
       ("libtool" ,libtool) ;; For bootstrap
857
       ("pkg-config" ,pkg-config)))
Mark H Weaver's avatar
Mark H Weaver committed
858
    (inputs
859
     `(("avahi" ,avahi)
Mark H Weaver's avatar
Mark H Weaver committed
860
861
862
       ("cyrus-sasl" ,cyrus-sasl)
       ("dbus" ,dbus)
       ("dbus-glib" ,dbus-glib)
863
       ;; ("evolution-data-server" ,evolution-data-server)
864
       ("farstream" ,farstream)
865
       ("gnutls" ,gnutls)
866
       ("gstreamer" ,gstreamer)
867
       ;; ("gtkspell2" ,gtkspell2)
868
       ("libgadu" ,libgadu)
869
       ("libgcrypt" ,libgcrypt)
870
       ("libgnt" ,libgnt)
871
       ("libice" ,libice)
Mark H Weaver's avatar
Mark H Weaver committed
872
873
       ("libidn" ,libidn)
       ("libltdl" ,libltdl)
874
       ("libsm" ,libsm)
875
876
       ("libx11" ,libx11)
       ("libxext" ,libxext)
Mark H Weaver's avatar
Mark H Weaver committed
877
       ("libxml2" ,libxml2)
878
       ("libxscrnsaver" ,libxscrnsaver)
Mark H Weaver's avatar
Mark H Weaver committed
879
       ("libxslt" ,libxslt)
880
       ;; ("libzephyr" ,libzephyr)
881
       ("meanwhile" ,meanwhile)
882
       ("mono" ,mono)
Mark H Weaver's avatar
Mark H Weaver committed
883
       ("ncurses" ,ncurses)
884
       ("network-manager" ,network-manager)
885
886
887
888
889
       ("nspr" ,nspr)
       ("nss" ,nss)
       ("pango" ,pango)
       ("perl" ,perl)
       ("python" ,python-2)
890
       ("python2-dbus" ,python2-dbus)
891
       ("silc" ,silc-toolkit)
Mark H Weaver's avatar
Mark H Weaver committed
892
       ("sqlite" ,sqlite)
893
       ("startup-notification" ,startup-notification)
894
895
       ("tcl" ,tcl)
       ("tk" ,tk)))
896
    (propagated-inputs
897
898
     `(("glib" ,glib)
       ("gtk+" ,gtk+-2)))
Mark H Weaver's avatar
Mark H Weaver committed
899
900
    (arguments
     `(#:configure-flags
901
       (list
902
903
904
        (string-append "CFLAGS=-I"
                       (assoc-ref %build-inputs "gst-plugins-base")
                       "/include/gstreamer-1.0")
905
        "--disable-gtkspell"
906
        "--disable-gevolution"
Raghav Gururajan's avatar
Raghav Gururajan committed
907
        "--enable-cap"
908
        "--enable-mono"
909
910
911
        "--enable-cyrus-sasl"
        (string-append "--with-ncurses-headers="
                       (assoc-ref %build-inputs "ncurses")
912
913
914
                       "/include")
        (string-append "--with-tclconfig="
                       (assoc-ref %build-inputs "tcl")
915
916
917
                       "/lib")
        (string-append "--with-tkconfig="
                       (assoc-ref %build-inputs "tk")
918
                       "/lib"))))
Mark H Weaver's avatar
Mark H Weaver committed
919
    (native-search-paths
920
921
922
923
924
925
926
927
     (list
      (search-path-specification
       (variable "PURPLE_PLUGIN_PATH")
       (files
        (list
         (string-append "lib/purple-"
                        (version-major version))
         "lib/pidgin")))))
928
    (home-page "https://www.pidgin.im/")
Mark H Weaver's avatar
Mark H Weaver committed
929
    (synopsis "Graphical multi-protocol instant messaging client")
930
931
    (description "Pidgin is a modular instant messaging client that supports
many popular chat protocols.")
Mark H Weaver's avatar
Mark H Weaver committed
932
933
    (license
     (list
934
935
      license:gpl2+   ; Most of the code
      license:lgpl2.1 ; GG protocol plugin (libpurple/protocols/gg/lib)
ng0's avatar
ng0 committed
936
      license:lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
Mark H Weaver's avatar
Mark H Weaver committed
937
      ;; The following licenses cover the zephyr protocol plugin:
ng0's avatar
ng0 committed
938
      (license:non-copyleft
Mark H Weaver's avatar
Mark H Weaver committed
939
940
       "file://libpurple/protocols/zephyr/mit-copyright.h"
       "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
ng0's avatar
ng0 committed
941
      (license:non-copyleft
Mark H Weaver's avatar
Mark H Weaver committed
942
943
944
       "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
       "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))

Mark H Weaver's avatar
Mark H Weaver committed
945
946
947
(define-public pidgin-otr
  (package
    (name "pidgin-otr")
948
    (version "4.0.2")
949
950
951
952
953
954
955
956
    (source
     (origin
       (method url-fetch)
       (uri
        (string-append "https://otr.cypherpunks.ca/"
                       name "-" version ".tar.gz"))
       (sha256
        (base32 "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl"))))
Mark H Weaver's avatar
Mark H Weaver committed
957
958
    (build-system gnu-build-system)
    (native-inputs
959
960
     `(("gettext" ,gettext-minimal)
       ("intltool" ,intltool)
961
       ("pkg-config" ,pkg-config)))
Mark H Weaver's avatar
Mark H Weaver committed
962
    (inputs
963
964
     `(("glib" ,glib)
       ("gtk+" ,gtk+-2)
Mark H Weaver's avatar
Mark H Weaver committed
965
       ("libgcrypt" ,libgcrypt)
966
967
       ("libgpg-error" ,libgpg-error)
       ("libotr" ,libotr)
968
       ("perl" ,perl)
969
       ("pidgin" ,pidgin)))
Mark H Weaver's avatar
Mark H Weaver committed
970
971
    (home-page "https://otr.cypherpunks.ca/")
    (synopsis "Off-the-Record Messaging plugin for Pidgin")
972
973
974
975
976
977
    (description "Pidgin-OTR is a plugin that adds support for OTR to the Pidgin
instant messaging client.  OTR (Off-the-Record) Messaging allows you to have
private conversations over instant messaging by providing: (1) Encryption: No
one else can read your instant messages.  (2) Authentication: You are assured
the correspondent is who you think it is.  (3) Deniability: The messages you
send do not have digital signatures that are checkable by a third party.  Anyone
Mark H Weaver's avatar
Mark H Weaver committed
978
can forge messages after a conversation to make them look like they came from
979
980
981
you.  However, during a conversation, your correspondent is assured the messages
he sees are authentic and unmodified.  (4) Perfect forward secrecy: If you lose
control of your private keys, no previous conversation is compromised.")
982
    (license license:gpl2+)))
Mark H Weaver's avatar
Mark H Weaver committed
983

David Thompson's avatar
David Thompson committed
984
985
986
(define-public znc
  (package
    (name "znc")
987
    (version "1.8.2")
David Thompson's avatar
David Thompson committed
988
989
    (source (origin
              (method url-fetch)
Timotej Lazar's avatar
Timotej Lazar committed
990
              (uri (string-append "https://znc.in/releases/archive/znc-"
David Thompson's avatar
David Thompson committed
991
992
993
                                  version ".tar.gz"))
              (sha256
               (base32
994
                "03fyi0j44zcanj1rsdx93hkdskwfvhbywjiwd17f9q1a7yp8l8zz"))))
995
    (build-system cmake-build-system)
David Thompson's avatar
David Thompson committed
996
    (arguments
997
998
     `(#:configure-flags
       (list "-DWANT_CYRUS=ON"
999
             "-DWANT_I18N=ON"
1000
1001
1002
             "-DWANT_PERL=ON"
             "-DWANT_PYTHON=ON")
       #:phases
1003
1004
       (modify-phases %standard-phases
         (add-after 'unpack 'unpack-googletest
1005
           ;; Copy the googletest sources to where the CMake build expects them.
1006
           (lambda* (#:key inputs #:allow-other-keys)
1007
1008
1009
1010
1011
             (let ((source (assoc-ref inputs "googletest-source"))
                   (target "third_party/googletest"))
               (mkdir-p target)
               (copy-recursively source target)
               #t))))))
David Thompson's avatar
David Thompson committed
1012
    (native-inputs
1013
1014
1015
     `(("boost" ,boost)
       ("gettext" ,gettext-minimal)
       ("googletest-source" ,(package-source googletest))
1016
       ("pkg-config" ,pkg-config)))
David Thompson's avatar
David Thompson committed
1017
    (inputs
1018
     `(("cyrus-sasl" ,cyrus-sasl)
David Thompson's avatar
David Thompson committed
1019
       ("icu4c" ,icu4c)
1020
1021
1022
1023
       ("openssl" ,openssl)
       ("perl" ,perl)
       ("python" ,python)
       ("zlib" ,zlib)))
Efraim Flashner's avatar
Efraim Flashner committed
1024
    (home-page "https://wiki.znc.in/ZNC")
David Thompson's avatar
David Thompson committed
1025
    (synopsis "IRC network bouncer")
1026
1027
1028
    (description "ZNC is an @dfn{IRC network bouncer} or @dfn{BNC}.  It can
detach the client from the actual IRC server, and also from selected channels.
Multiple clients from different locations can connect to a single ZNC account
David Thompson's avatar
David Thompson committed
1029
simultaneously and therefore appear under the same nickname on IRC.")
ng0's avatar
ng0 committed
1030
    (license license:asl2.0)))
David Thompson's avatar
David Thompson committed
1031

Ricardo Wurmus's avatar
Ricardo Wurmus committed
1032
1033
1034
(define-public python-nbxmpp
  (package
    (name "python-nbxmpp")
1035
    (version "2.0.2")
Ricardo Wurmus's avatar
Ricardo Wurmus committed
1036
1037
1038
    (source
     (origin
       (method url-fetch)
1039
1040
       (uri
        (pypi-uri "nbxmpp" version))
Ricardo Wurmus's avatar
Ricardo Wurmus committed
1041
       (sha256
1042
        (base32 "1482fva70i01w60fk70c0fhqmqgzi1fb4xflllz2v6c8mdqkd1m3"))))
Ricardo Wurmus's avatar
Ricardo Wurmus committed
1043
    (build-system python-build-system)
1044
1045
1046
1047
1048
1049
    (native-inputs
     `(("glib:bin" ,glib "bin")))
    (inputs
     `(("glib" ,glib)
       ("glib-networking" ,glib-networking)
       ("libsoup" ,libsoup)
1050
       ("python-gssapi" ,python-gssapi)
1051
1052
1053
       ("python-idna" ,python-idna)
       ("python-precis-i18n" ,python-precis-i18n)
       ("python-pygobject" ,python-pygobject)))
1054
1055
1056
1057
    (synopsis "Non-blocking XMPP Module")
    (description "Python-nbxmpp is a Python library that provides a way for
Python applications to use the XMPP network.  This library was initially a fork
of xmpppy.")
1058
    (home-page "https://dev.gajim.org/gajim/python-nbxmpp")
ng0's avatar
ng0 committed
1059
    (license license:gpl3+)))
Ricardo Wurmus's avatar
Ricardo Wurmus committed
1060

Ricardo Wurmus's avatar
Ricardo Wurmus committed
1061
1062
1063
(define-public gajim
  (package
    (name "gajim")
1064
    (version "1.3.2")
1065
1066
1067
1068
1069
1070
    (source
     (origin
       (method url-fetch)
       (uri
        (string-append "https://gajim.org/downloads/"
                       (version-major+minor version)
1071
                       "/gajim-" version ".tar.gz"))
1072
       (sha256
1073
        (base32 "1vjzv8zg9s393xw81klcgbkn4h6j2blzla9iil5kqfrw7wmldskh"))
1074
       (patches (search-patches "gajim-honour-GAJIM_PLUGIN_PATH.patch"))))
1075
    (build-system python-build-system)
Ricardo Wurmus's avatar
Ricardo Wurmus committed
1076
    (arguments
1077
1078
1079
1080
1081
1082
1083
1084
1085
     `(#:imported-modules
       (,@%python-build-system-modules
        (guix build glib-or-gtk-build-system))
       #:modules
       ((guix build python-build-system)
        ((guix build glib-or-gtk-build-system)
         #:prefix glib-or-gtk:)
        (guix build utils))
       #:phases
Ricardo Wurmus's avatar
Ricardo Wurmus committed
1086
       (modify-phases %standard-phases
1087
1088
         (add-after 'unpack 'disable-failing-tests
           (lambda _
1089
1090
1091
             ;; ModuleNotFoundError: No module named 'gajim.gui.emoji_data'
             ;; https://dev.gajim.org/gajim/gajim/-/issues/10478
             (delete-file "test/lib/gajim_mocks.py")
1092
1093
             (delete-file "test/unit/test_gui_interface.py")
             #t))
1094
1095
         (replace 'check
           (lambda _
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
             ;; Tests require a running X server.
             (system "Xvfb :1 +extension GLX &")
             (setenv "DISPLAY" ":1")
             ;; For missing '/etc/machine-id'.
             (setenv "DBUS_FATAL_WARNINGS" "0")
             (invoke "dbus-launch" "python" "./setup.py" "test")
             #t))
         (add-after 'install 'glib-or-gtk-compile-schemas
           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
         (add-after 'install 'glib-or-gtk-wrap
           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
         (add-after 'install 'wrap-env
Arun Isaac's avatar
Arun Isaac committed
1108
           (lambda* (#:key outputs #:allow-other-keys)
1109
1110
1111
1112
             (let ((out (assoc-ref outputs "out")))
               (for-each
                (lambda (name)
                  (let ((file (string-append out "/bin/" name))
1113
                        (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
1114
1115
                        (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
                    (wrap-program file
1116
1117
                      `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
                      `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
1118
                '("gajim" "gajim-remote" "gajim-history-manager")))
1119
             #t)))))
1120
    (native-search-paths
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
     (list
      (search-path-specification
       (variable "GAJIM_PLUGIN_PATH")
       (separator #f)                   ;single entry
       (files
        (list
         "share/gajim/plugins")))
      ;; Gajim needs to use the propagated inputs of its plugins.
      (search-path-specification
       (variable "PYTHONPATH")
       (files
        (list
         (string-append
          "lib/python"
          ;; FIXME: Cannot use this expression as it would
          ;; introduce a circular dependency at the top level.
          ;; (version-major+minor (package-version python))
          "3.8"
          "/site-packages"))))))
Ricardo Wurmus's avatar
Ricardo Wurmus committed
1140
    (native-inputs
1141
1142
1143
1144
1145
1146
     `(("gettext" ,gettext-minimal)
       ("glib:bin" ,glib "bin")
       ("gobject-introspection" ,gobject-introspection)
       ("gtk+:bin" ,gtk+ "bin")
       ("python-distutils-extra" ,python-distutils-extra)
       ("python-setuptools" ,python-setuptools)
1147
       ("xorg-server" ,xorg-server-for-tests)))
1148
    (inputs
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
     `(("avahi" ,avahi)
       ("dbus" ,dbus)
       ("farstream" ,farstream)
       ("geoclue" ,geoclue)
       ("glib" ,glib)
       ("glib-networking" ,glib-networking)
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
       ("gsound",gsound)
       ("gspell" ,gspell)
       ("gstreamer" ,gstreamer)
       ("gst-plugins-base" ,gst-plugins-base)
1160
       ("gtk+" ,gtk+)