mailmap: Update entries for Nikita.
[jackhill/guix/guix.git] / gnu / packages / irc.scm
CommitLineData
980f058d 1;;; GNU Guix --- Functional package management for GNU
27930f85 2;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
e288f007 3;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
cc6f4912 4;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
bee2c1a9 5;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
3c986a7d 6;;; Copyright © 2016 Nikita <nikita@n0.is>
507809be 7;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
70e9d7eb 8;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
7eea3afd 9;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
980f058d
EF
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages irc)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix download)
29 #:use-module (guix packages)
30 #:use-module (guix build-system cmake)
27930f85 31 #:use-module (guix build-system gnu)
6ad13b59 32 #:use-module (guix build-system python)
e288f007 33 #:use-module (gnu packages)
b52bcb24 34 #:use-module (gnu packages admin)
e288f007
EF
35 #:use-module (gnu packages aspell)
36 #:use-module (gnu packages autogen)
37 #:use-module (gnu packages autotools)
38 #:use-module (gnu packages base)
0c69a17e 39 #:use-module (gnu packages backup)
ac257f12 40 #:use-module (gnu packages check)
980f058d 41 #:use-module (gnu packages compression)
e288f007
EF
42 #:use-module (gnu packages curl)
43 #:use-module (gnu packages cyrus-sasl)
0c69a17e 44 #:use-module (gnu packages databases)
e288f007
EF
45 #:use-module (gnu packages file)
46 #:use-module (gnu packages gettext)
27930f85 47 #:use-module (gnu packages glib)
e288f007
EF
48 #:use-module (gnu packages gnupg)
49 #:use-module (gnu packages guile)
50 #:use-module (gnu packages lua)
27930f85 51 #:use-module (gnu packages ncurses)
980f058d
EF
52 #:use-module (gnu packages kde)
53 #:use-module (gnu packages kde-frameworks)
27930f85 54 #:use-module (gnu packages perl)
980f058d 55 #:use-module (gnu packages pkg-config)
e288f007 56 #:use-module (gnu packages python)
cc6f4912 57 #:use-module (gnu packages python-crypto)
44d10b1f 58 #:use-module (gnu packages python-xyz)
0c69a17e 59 #:use-module (gnu packages ruby)
27930f85 60 #:use-module (gnu packages qt)
e288f007 61 #:use-module (gnu packages tcl)
33dc54b0 62 #:use-module (gnu packages time)
6ad13b59 63 #:use-module (gnu packages tls)
6a069618
EF
64 #:use-module (gnu packages web)
65 #:use-module (srfi srfi-1)
66 #:use-module (srfi srfi-26))
980f058d
EF
67
68(define-public quassel
69 (package
70 (name "quassel")
3aeac37e 71 (version "0.13.1")
980f058d
EF
72 (source
73 (origin
74 (method url-fetch)
3aeac37e 75 (uri (string-append "https://quassel-irc.org/pub/quassel-"
980f058d
EF
76 version ".tar.bz2"))
77 (sha256
78 (base32
3aeac37e 79 "0mg8jydc70vlylppzich26q4s40kr78r3ysfyjwisfvlg2byxvs8"))
b82c63d0 80 (modules '((guix build utils)))
72dae072 81 ;; We don't want to install the bundled scripts.
b82c63d0
EF
82 (snippet
83 '(begin
84 (delete-file-recursively "data/scripts")
85 (substitute* "data/CMakeLists.txt"
68ddfb2e
EF
86 (("NOT WIN32") "WIN32"))
87 #t))))
980f058d
EF
88 (build-system cmake-build-system)
89 (arguments
90 ;; The three binaries are not mutually exlusive, and are all built
91 ;; by default.
4ad62876
EF
92 '(#:configure-flags '(;;"-DWANT_QTCLIENT=OFF" ; 6.1 MiB
93 ;;"-DWANT_CORE=OFF" ; 3.0 MiB
94 ;;"-DWANT_MONO=OFF" ; 7.6 MiB
b82c63d0 95 "-DWITH_KDE=OFF" ; no to kde integration ...
4ad62876
EF
96 "-DWITH_BUNDLED_ICONS=ON" ; so we install bundled icons
97 "-DWITH_OXYGEN_ICONS=ON" ; also the oxygen ones
98 "-DWITH_WEBENGINE=OFF") ; we don't depend on qtwebengine
b52bcb24
EF
99 #:phases
100 (modify-phases %standard-phases
101 (add-after 'unpack 'patch-inxi-reference
102 (lambda* (#:key inputs #:allow-other-keys)
103 (let ((inxi (string-append (assoc-ref inputs "inxi") "/bin/inxi")))
104 (substitute* "src/common/aliasmanager.cpp"
105 ((" inxi ") (string-append " " inxi " ")))
106 #t))))
980f058d 107 #:tests? #f)) ; no test target
b82c63d0 108 (native-inputs
980f058d 109 `(("extra-cmake-modules" ,extra-cmake-modules)
b82c63d0
EF
110 ("pkg-config" ,pkg-config)
111 ("qttools" ,qttools)))
112 (inputs
b52bcb24
EF
113 `(("inxi" ,inxi-minimal)
114 ("qca" ,qca)
c695fb76 115 ("qtbase" ,qtbase)
4ad62876 116 ("qtmultimedia" ,qtmultimedia)
0b166a75 117 ("qtscript" ,qtscript)
980f058d
EF
118 ("snorenotify" ,snorenotify)
119 ("zlib" ,zlib)))
5b292eac 120 (home-page "https://quassel-irc.org/")
980f058d
EF
121 (synopsis "Distributed IRC client")
122 (description "Quassel is a distributed IRC client, meaning that one or more
123clients can attach to and detach from the central core. It resembles the
124popular combination of screen and a text-based IRC client such as WeeChat or
125irssi, but graphical.")
126 (license (list license:gpl2 license:gpl3)))) ;; dual licensed
27930f85
EF
127
128(define-public irssi
129 (package
130 (name "irssi")
7eea3afd 131 (version "1.2.2")
27930f85 132 (source (origin
c954fe66
KK
133 (method url-fetch)
134 (uri (string-append "https://github.com/irssi/irssi/"
135 "releases/download/" version "/irssi-"
136 version ".tar.xz"))
137 (sha256
138 (base32
7eea3afd 139 "0y3mhnyr7x8ir8dlj83vbnchpfld28vdfni9yhpvls45j460c9v7"))))
27930f85
EF
140 (build-system gnu-build-system)
141 (arguments
142 `(#:phases
a61bd6a5
EF
143 (modify-phases %standard-phases
144 (replace 'configure
145 (lambda* (#:key inputs outputs #:allow-other-keys)
d9d23101 146 (let ((out (assoc-ref outputs "out")))
a61bd6a5 147 (setenv "CONFIG_SHELL" (which "bash"))
19621509
TGR
148 (invoke "./configure"
149 (string-append "--prefix=" out)
150 (string-append "--with-proxy")
151 (string-append "--with-socks")
7eea3afd
OP
152 (string-append "--with-bot")))))
153 (add-before 'check 'set-home
154 (lambda _
155 (setenv "HOME" (getcwd)))))))
27930f85
EF
156 (inputs
157 `(("glib" ,glib)
158 ("ncurses" ,ncurses)
d9d23101 159 ("openssl" ,openssl)
27930f85 160 ("perl" ,perl)))
d9d23101
MB
161 (native-inputs
162 `(("pkg-config" ,pkg-config)))
163 (home-page "https://irssi.org/")
27930f85
EF
164 (synopsis "Terminal-based IRC client")
165 (description
166 "Irssi is a terminal based IRC client for UNIX systems. It also supports
167SILC and ICB protocols via plugins.")
168 (license license:gpl2+)))
e288f007
EF
169
170(define-public weechat
171 (package
172 (name "weechat")
0b7a94cb 173 (version "2.8")
e288f007
EF
174 (source (origin
175 (method url-fetch)
10b91cca 176 (uri (string-append "https://weechat.org/files/src/weechat-"
f87b8e25 177 version ".tar.xz"))
e288f007
EF
178 (sha256
179 (base32
0b7a94cb 180 "1301lrb3xnm9dcw3av82rkqjzqxxwwhrq0p6i37h6fxdxnas4gjm"))))
709a3bb7 181 (build-system cmake-build-system)
00840ee0
TGR
182 (native-inputs
183 `(("gettext" ,gettext-minimal)
184 ("pkg-config" ,pkg-config)
185 ;; For tests.
186 ("cpputest" ,cpputest)))
6634b29f
EF
187 (inputs
188 `(("aspell" ,aspell)
189 ("curl" ,curl)
190 ("gnutls" ,gnutls)
191 ("libgcrypt" ,libgcrypt "out")
192 ("ncurses" ,ncurses)
193 ("zlib" ,zlib)
07c0110e 194
6634b29f 195 ;; Scripting language plug-ins.
0b7a94cb 196 ("guile" ,guile-3.0)
6634b29f
EF
197 ("lua" ,lua-5.1)
198 ("perl" ,perl)
199 ("python" ,python)
200 ("tcl" ,tcl)))
e288f007 201 (arguments
00840ee0 202 `(#:configure-flags
70e9d7eb
TGR
203 (list "-DENABLE_JAVASCRIPT=OFF"
204 "-DENABLE_PHP=OFF"
205 "-DENABLE_RUBY=OFF"
206 "-DENABLE_TESTS=ON") ; ‘make test’ fails otherwise
6a069618
EF
207 ;; Tests hang indefinately on non-Intel platforms.
208 #:tests? ,(if (any (cute string-prefix? <> (or (%current-target-system)
209 (%current-system)))
210 '("i686" "x86_64"))
211 '#t '#f)
00840ee0
TGR
212 #:phases
213 (modify-phases %standard-phases
214 (add-after 'unpack 'disable-failing-tests
215 ;; For reasons best left to the imagination, CppUTest cannot skip
216 ;; more than one single test... Resort to manual patching instead.
217 ;; See <https://cpputest.github.io/manual.html#command_line>.
218 (λ _
219 ;; Don't test plugin support for languages we don't enable.
220 (substitute* "tests/unit/test-plugins.cpp"
221 ((".*\\$\\{plugin.name\\} == (javascript|php|ruby)" all)
222 (string-append "// SKIP" all)))
223 (substitute* "tests/scripts/test-scripts.cpp"
9553a41d 224 ((".*\\{ \"(javascript|php|ruby)\", " all)
00840ee0 225 (string-append "// SKIP" all)))
07c0110e 226 #t)))))
e288f007
EF
227 (synopsis "Extensible chat client")
228 (description "WeeChat (Wee Enhanced Environment for Chat) is an
d65db1d5
TGR
229@dfn{Internet Relay Chat} (IRC) client, which is designed to be light and fast.
230The client uses a curses frontend, and there are remote interfaces for Web,
231Qt, Android, and Emacs.
232
233Everything in WeeChat can be done with the keyboard, though it also supports
234using a mouse. It is customizable and extensible with plugins and scripts.")
10b91cca 235 (home-page "https://www.weechat.org/")
e288f007 236 (license license:gpl3)))
c744f5c0 237
238(define-public ircii
239 (package
240 (name "ircii")
241 (version "20151120")
242 (source (origin
243 (method url-fetch)
244 (uri (string-append "https://ircii.warped.com/"
245 name "-" version ".tar.gz"))
246 (sha256
247 (base32
248 "178dc279f5j894qvp96dzz7c0jpryqlcqw5g0dc9yaxg9kgw1lqm"))))
249 (build-system gnu-build-system)
250 ;; TODO: We should package a small socks4/5 library/server to configure
251 ;; ircii with socks client. `ghc-socks' pulls in lots of haskell, which
252 ;; is too big.
253 (arguments
254 `(#:tests? #f
255 #:configure-flags (list
256 "--enable-ipv6"
257 "--with-emacs-meta-keys"
258 (string-append "--with-openssl="
259 (assoc-ref %build-inputs "openssl")))
260 #:phases
261 (modify-phases %standard-phases
262 (add-after 'unpack 'patch-bsdinstall-absolute-path-bins
263 (lambda* (#:key inputs #:allow-other-keys)
264 (substitute* "bsdinstall"
265 (("/bin/strip") "strip")
266 (("/bin/cp") "cp")
267 (("/bin/chmod") "chmod")
268 (("/etc/chown") "chown")
269 (("/bin/chgrp") "chgrp")
270 (("/bin/mkdir") "mkdir")
271 (("/bin/rm") "rm")
272 (("/bin/mv") "mv")))))))
273 (inputs
274 `(("ncurses" ,ncurses)
275 ("openssl" ,openssl)))
276 (native-inputs
277 `(("pkg-config" ,pkg-config)
278 ("perl" ,perl)))
279 (home-page "http://www.eterna.com.au/ircii/")
280 (synopsis "Terminal-based IRC and ICB client")
281 (description
282 "ircII is a terminal based IRC and ICB client for UNIX systems.")
283 (license license:bsd-3)))
99840fbb 284
285(define-public ii
286 (package
287 (name "ii")
e0dbead5 288 (version "1.8")
99840fbb 289 (source (origin
290 (method url-fetch)
291 (uri (string-append "http://dl.suckless.org/tools/"
292 name "-" version ".tar.gz"))
293 (sha256
294 (base32
e0dbead5 295 "1lk8vjl7i8dcjh4jkg8h8bkapcbs465sy8g9c0chfqsywbmf3ndr"))))
99840fbb 296 (build-system gnu-build-system)
297 (arguments
e0dbead5 298 `(#:tests? #f ; no tests
99840fbb 299 #:make-flags (list (string-append "PREFIX=" %output)
300 "CC=gcc")
301 #:phases
302 (modify-phases %standard-phases
e0dbead5 303 (delete 'configure)))) ; no configure
d035eaa3 304 (home-page "https://tools.suckless.org/ii/")
8f65585b 305 (synopsis "FIFO and file system based IRC client")
99840fbb 306 (description
8f65585b 307 "ii (Irc it) is a minimalist FIFO and file system based IRC client.")
99840fbb 308 (license license:expat)))
e4eb2134 309
310(define-public sic
311 (package
312 (name "sic")
313 (version "1.2")
314 (source (origin
315 (method url-fetch)
316 (uri (string-append "http://dl.suckless.org/tools/"
317 name "-" version ".tar.gz"))
318 (sha256
319 (base32
320 "11aiavxp44yayibc58bvimi8mrxvbw1plbci8cnbl4syk42zj1xc"))))
321 (build-system gnu-build-system)
322 (arguments
323 `(#:tests? #f ; no tests
324 #:make-flags (list "CC=gcc"
325 (string-append "PREFIX=" %output))
326 #:phases
327 (modify-phases %standard-phases
328 (delete 'configure)))) ; no configure
d035eaa3 329 (home-page "https://tools.suckless.org/sic/")
e4eb2134 330 (synopsis "Simple IRC client")
331 (description
332 "sic is a simple IRC client, even more minimalistic than ii.")
333 (license license:expat)))
6ad13b59 334
335(define-public limnoria
336 (package
337 (name "limnoria")
35258a9a 338 (version "2019.11.22")
6ad13b59 339 (source
340 (origin
341 (method url-fetch)
342 (uri (pypi-uri "limnoria" version))
343 (sha256
35258a9a 344 (base32 "0853xk1ps3v6lkmfx50wv56vynnzpl84v66hxnhl8i34zl36kk3c"))))
6ad13b59 345 (build-system python-build-system)
346 (inputs
347 `(("python-pytz" ,python-pytz)
348 ("python-chardet" ,python-chardet)
349 ("python-dateutil" ,python-dateutil)
350 ("python-gnupg" ,python-gnupg)
351 ("python-feedparser" ,python-feedparser)
352 ("python-sqlalchemy" ,python-sqlalchemy)
353 ("python-socksipy-branch" ,python-socksipy-branch)
354 ("python-ecdsa" ,python-ecdsa)))
355 (native-inputs
356 `(("python-mock" ,python-mock)))
357 ;; Despite the existence of a test folder there is no test phase.
358 ;; We need to package https://github.com/ProgVal/irctest and write
359 ;; our own testphase.
360 (arguments
361 `(#:tests? #f))
362 (home-page "https://github.com/ProgVal/Limnoria")
363 (synopsis "Modified version of Supybot (an IRC bot and framework)")
364 (description
365 "Modified version of Supybot with Python 3 and IRCv3 support,
366embedded web server, translations (fr, fi, it, hu, de), and many
367other enhancements and bug fixes.")
368 (license license:bsd-3)))
0c69a17e 369
370(define-public epic5
371 (package
372 (name "epic5")
373 (version "2.0.1")
374 (source (origin
375 (method url-fetch)
376 (uri (string-append "http://ftp.epicsol.org/pub/"
377 "epic/EPIC5-PRODUCTION/"
378 name "-" version ".tar.xz"))
379 (sha256
380 (base32
381 "1ap73d5f4vccxjaaq249zh981z85106vvqmxfm4plvy76b40y9jm"))))
382 (build-system gnu-build-system)
383 (arguments
384 `(#:test-target "test"
385 #:phases
386 (modify-phases %standard-phases
387 (add-after 'unpack 'patch-perl
388 (lambda _
389 (substitute* "regress/crash-irc"
390 (("perl5") (which "perl")))
391 #t))
392 (add-after 'unpack 'patch-bsdinstall
393 ;; If we just remove /bin/ some part of the bsdinstall breaks.
394 ;; Furthermore bsdinstalls has a reference to /etc/chmod here, which
395 ;; means if we leave /etc/ in, install fails.
396 (lambda _
397 (substitute* "bsdinstall"
398 (("/bin/strip") "strip")
399 (("/bin/cp") "cp")
400 (("/bin/chmod") "chmod")
401 (("/bin/chgrp") "chgrp")
402 (("/bin/mkdir") "mkdir")
403 (("/bin/rm") "rm")
404 (("/bin/mv") "mv")
405 (("/etc/") ""))
406 #t))
407 (replace 'configure
408 (lambda* (#:key outputs #:allow-other-keys)
409 ;; The tarball uses a very old version of autconf. It does not
410 ;; understand extra flags like `--enable-fast-install', so
411 ;; we need to invoke it with just what it understands.
412 (let ((out (assoc-ref outputs "out")))
413 ;; 'configure' doesn't understand '--host'.
414 ,@(if (%current-target-system)
415 `((setenv "CHOST" ,(%current-target-system)))
416 '())
417 (setenv "CONFIG_SHELL" (which "bash"))
418 (setenv "SHELL" (which "bash"))
5a13cf3d
TGR
419 (invoke "./configure"
420 (string-append "--prefix=" out)
421 "--with-ipv6" "--with-libarchive"
422 ;; We use libressl because openssl does not come
423 ;; with the lib/libssl.a which is needed for epic5.
424 ;; XXX: No matter which implementation is chosen,
425 ;; epic5 fails to connect to tls ports of roundrobin
426 ;; irc networks. This however is believed to be an
427 ;; protocol issue at epic5 related to ircd.
428 (string-append "--with-ssl="
429 (assoc-ref %build-inputs "libressl"))
430 (string-append "--with-tcl="
431 (assoc-ref %build-inputs "tcl")
432 "/lib/tclConfig.sh"))))))))
0c69a17e 433 (inputs
434 `(("libressl" ,libressl)
435 ("ncurses" ,ncurses)
436 ("libarchive" ,libarchive) ; CHANGELOG: "Support for loading zip files"
437 ("perl" ,perl)
438 ("tcl" ,tcl)
439 ("ruby" ,ruby)))
440 (native-inputs
441 `(("pkg-config" ,pkg-config)))
442 (home-page "http://epicsol.org")
443 (synopsis "Epic5 IRC Client")
444 (description
445 "EPIC is a IRC client that has been under active development for
446over 20 years. It is stable and mature, and offers an excellent ircII
447interface for those who are accustomed to the ircII way of doing things.")
448 (license (list license:bsd-3
449 license:isc
450 license:bsd-4
451 ;; The epic license is equal to the standard three-clause
452 ;; BSD license except that you are not permitted to remove the
453 ;; "Redistribution is permitted" clause of the license if you
454 ;; distribute binaries.
1975ec69 455 (license:non-copyleft "http://epicsol.org/copyright")))))