irc.scm 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
  3. ;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
  4. ;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
  5. ;;; Copyright © 2015-2023 Efraim Flashner <efraim@flashner.co.il>
  6. ;;; Copyright © 2016 Nikita <nikita@n0.is>
  7. ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
  8. ;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr>
  9. ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
  10. ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
  11. ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
  12. ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
  13. ;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
  14. ;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
  15. ;;; Copyright © 2022 jgart <jgart@dismail.de>
  16. ;;;
  17. ;;; This file is part of GNU Guix.
  18. ;;;
  19. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  20. ;;; under the terms of the GNU General Public License as published by
  21. ;;; the Free Software Foundation; either version 3 of the License, or (at
  22. ;;; your option) any later version.
  23. ;;;
  24. ;;; GNU Guix is distributed in the hope that it will be useful, but
  25. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  26. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  27. ;;; GNU General Public License for more details.
  28. ;;;
  29. ;;; You should have received a copy of the GNU General Public License
  30. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  31. (define-module (gnu packages irc)
  32. #:use-module (guix gexp)
  33. #:use-module ((guix licenses) #:prefix license:)
  34. #:use-module (guix download)
  35. #:use-module (guix git-download)
  36. #:use-module (guix utils)
  37. #:use-module (guix packages)
  38. #:use-module (guix utils)
  39. #:use-module (guix build-system cmake)
  40. #:use-module (guix build-system gnu)
  41. #:use-module (guix build-system go)
  42. #:use-module (guix build-system meson)
  43. #:use-module (guix build-system python)
  44. #:use-module (guix build-system qt)
  45. #:use-module (gnu packages)
  46. #:use-module (gnu packages admin)
  47. #:use-module (gnu packages aspell)
  48. #:use-module (gnu packages autogen)
  49. #:use-module (gnu packages autotools)
  50. #:use-module (gnu packages base)
  51. #:use-module (gnu packages backup)
  52. #:use-module (gnu packages boost)
  53. #:use-module (gnu packages check)
  54. #:use-module (gnu packages code)
  55. #:use-module (gnu packages compression)
  56. #:use-module (gnu packages curl)
  57. #:use-module (gnu packages cyrus-sasl)
  58. #:use-module (gnu packages databases)
  59. #:use-module (gnu packages file)
  60. #:use-module (gnu packages gettext)
  61. #:use-module (gnu packages geo)
  62. #:use-module (gnu packages glib)
  63. #:use-module (gnu packages gnome)
  64. #:use-module (gnu packages gnupg)
  65. #:use-module (gnu packages golang)
  66. #:use-module (gnu packages gtk)
  67. #:use-module (gnu packages guile)
  68. #:use-module (gnu packages lua)
  69. #:use-module (gnu packages lxqt)
  70. #:use-module (gnu packages man)
  71. #:use-module (gnu packages ncurses)
  72. #:use-module (gnu packages openldap)
  73. #:use-module (gnu packages kde)
  74. #:use-module (gnu packages kde-frameworks)
  75. #:use-module (gnu packages password-utils)
  76. #:use-module (gnu packages pcre)
  77. #:use-module (gnu packages perl)
  78. #:use-module (gnu packages pkg-config)
  79. #:use-module (gnu packages python)
  80. #:use-module (gnu packages python-crypto)
  81. #:use-module (gnu packages python-xyz)
  82. #:use-module (gnu packages regex)
  83. #:use-module (gnu packages ruby)
  84. #:use-module (gnu packages sphinx)
  85. #:use-module (gnu packages sqlite)
  86. #:use-module (gnu packages qt)
  87. #:use-module (gnu packages tcl)
  88. #:use-module (gnu packages textutils)
  89. #:use-module (gnu packages time)
  90. #:use-module (gnu packages tls)
  91. #:use-module (gnu packages web)
  92. #:use-module (srfi srfi-1)
  93. #:use-module (srfi srfi-26))
  94. (define-public quassel
  95. (package
  96. (name "quassel")
  97. (version "0.14.0")
  98. (source
  99. (origin
  100. (method url-fetch)
  101. (uri (string-append "https://quassel-irc.org/pub/quassel-"
  102. version ".tar.xz"))
  103. (sha256
  104. (base32
  105. "042fzssydvv35jjknziph8iyyjsyrsb2hp3d0ix0bqbagbrpf1q9"))
  106. (modules '((guix build utils)))
  107. ;; We don't want to install the bundled inxi script.
  108. (snippet
  109. '(begin
  110. (delete-file "data/scripts/inxi")))))
  111. (build-system qt-build-system)
  112. (arguments
  113. ;; The three binaries are not mutually exlusive, and are all built
  114. ;; by default.
  115. '(#:configure-flags '("-DBUILD_TESTING=ON"
  116. ;;"-DWANT_QTCLIENT=OFF"
  117. ;;"-DWANT_CORE=OFF"
  118. ;;"-DWANT_MONO=OFF"
  119. "-DWITH_KDE=OFF"
  120. "-DWITH_BUNDLED_ICONS=ON"
  121. "-DWITH_OXYGEN_ICONS=ON"
  122. ;; This disables link previews.
  123. "-DWITH_WEBENGINE=OFF")
  124. #:phases
  125. (modify-phases %standard-phases
  126. (add-after 'unpack 'patch-inxi-reference
  127. (lambda* (#:key inputs #:allow-other-keys)
  128. (let ((inxi (search-input-file inputs "/bin/inxi")))
  129. (symlink inxi "data/scripts/inxi")))))))
  130. (native-inputs
  131. (list extra-cmake-modules pkg-config qttools-5))
  132. (inputs
  133. (list boost
  134. inxi-minimal
  135. libdbusmenu-qt
  136. perl
  137. qca
  138. qtbase-5
  139. qtmultimedia-5
  140. qtscript
  141. qtsvg-5
  142. snorenotify
  143. sonnet
  144. zlib))
  145. (home-page "https://quassel-irc.org/")
  146. (synopsis "Distributed IRC client")
  147. (description "Quassel is a distributed IRC client, meaning that one or more
  148. clients can attach to and detach from the central core. It resembles the
  149. popular combination of screen and a text-based IRC client such as WeeChat or
  150. irssi, but graphical.")
  151. (license (list license:gpl2 license:gpl3)))) ;; dual licensed
  152. (define-public irssi
  153. (package
  154. (name "irssi")
  155. (version "1.4.4")
  156. (source (origin
  157. (method url-fetch)
  158. (uri (string-append "https://github.com/irssi/irssi/"
  159. "releases/download/" version "/irssi-"
  160. version ".tar.xz"))
  161. (sha256
  162. (base32
  163. "1bby23mn7318dmxf8aw9ahs6j4mbc0ilm4swji4m8ixiqz49xzpy"))))
  164. (build-system gnu-build-system)
  165. (arguments
  166. `(#:phases
  167. (modify-phases %standard-phases
  168. (replace 'configure
  169. (lambda* (#:key inputs outputs #:allow-other-keys)
  170. (let ((out (assoc-ref outputs "out")))
  171. (setenv "CONFIG_SHELL" (which "bash"))
  172. (invoke "./configure"
  173. (string-append "--prefix=" out)
  174. (string-append "--enable-true-color")
  175. (string-append "--with-proxy")
  176. (string-append "--with-socks")))))
  177. (add-before 'check 'set-home
  178. (lambda _
  179. (setenv "HOME" (getcwd)))))))
  180. (inputs
  181. (list glib ncurses openssl perl utf8proc))
  182. (native-inputs
  183. (list pkg-config))
  184. (home-page "https://irssi.org/")
  185. (synopsis "Extensible terminal-based IRC client")
  186. (description
  187. "Irssi is a text terminal-based @acronym{IRC, Internet relay chat} client.
  188. It is completely themable and extensible through Perl scripts, of which many
  189. have already been written by the community.
  190. Plug-ins add support for other protocols like @acronym{SILC, Secure Internet Live
  191. Conferencing} and @acronym{ICB, Internet Citizen's Band}.")
  192. (license license:gpl2+)))
  193. (define-public weechat
  194. (package
  195. (name "weechat")
  196. (version "3.8")
  197. (source (origin
  198. (method url-fetch)
  199. (uri (string-append "https://weechat.org/files/src/weechat-"
  200. version ".tar.xz"))
  201. (sha256
  202. (base32
  203. "0a5zfkqqdkya111rl2gpwlbfala0305qry9cdz2r1h7q0316bjzp"))))
  204. (build-system cmake-build-system)
  205. (outputs '("out" "doc"))
  206. (native-inputs
  207. `(("gettext-minimal" ,gettext-minimal)
  208. ("pkg-config" ,pkg-config)
  209. ,@(if (target-x86?)
  210. `(("ruby-asciidoctor" ,ruby-asciidoctor))
  211. '())))
  212. (inputs
  213. (list aspell
  214. curl
  215. gnutls
  216. libgcrypt
  217. ncurses
  218. zlib
  219. (list zstd "lib")
  220. ;; Scripting language plug-ins.
  221. guile-3.0
  222. lua-5.1
  223. perl
  224. python
  225. ruby
  226. tcl))
  227. (arguments
  228. `(#:configure-flags
  229. (list "-DENABLE_PHP=OFF"
  230. ,@(if (target-x86?)
  231. '("-DENABLE_MAN=ON"
  232. "-DENABLE_DOC=ON")
  233. '()))
  234. #:phases
  235. (modify-phases %standard-phases
  236. ,@(if (target-x86?)
  237. '((add-after 'install 'move-doc
  238. (lambda* (#:key outputs #:allow-other-keys)
  239. (let* ((out (assoc-ref outputs "out"))
  240. (doc (assoc-ref outputs "doc"))
  241. (from (string-append out "/share/doc/weechat"))
  242. (to (string-append doc "/share/doc/weechat")))
  243. (mkdir-p (string-append doc "/share/doc"))
  244. (rename-file from to)))))
  245. '()))))
  246. (synopsis "Extensible chat client")
  247. (description "WeeChat (Wee Enhanced Environment for Chat) is an
  248. @dfn{Internet Relay Chat} (IRC) client, which is designed to be light and fast.
  249. The client uses a curses frontend, and there are remote interfaces for Web,
  250. Qt, Android, and Emacs.
  251. Everything in WeeChat can be done with the keyboard, though it also supports
  252. using a mouse. It is customizable and extensible with plugins and scripts.")
  253. (home-page "https://weechat.org/")
  254. (license license:gpl3)))
  255. (define-public srain
  256. (package
  257. (name "srain")
  258. (version "1.5.0")
  259. (source
  260. (origin
  261. (method git-fetch)
  262. (uri (git-reference
  263. (url "https://github.com/SrainApp/srain")
  264. (commit version)))
  265. (file-name (git-file-name name version))
  266. (sha256
  267. (base32 "1qswvhx1s90jbsdx5znbc478v2ix3g0p6qm97cj7zzl0kx5kd780"))))
  268. (build-system meson-build-system)
  269. (arguments
  270. `(#:tests? #f ;there are no tests
  271. #:glib-or-gtk? #t))
  272. (native-inputs
  273. `(("gettext" ,gettext-minimal)
  274. ("glib:bin" ,glib "bin")
  275. ("pkg-config" ,pkg-config)
  276. ("python" ,python-wrapper)
  277. ("python-sphinx" ,python-sphinx)))
  278. (inputs
  279. (list glib-networking
  280. gsettings-desktop-schemas
  281. gtk+
  282. libconfig
  283. libsecret
  284. libsoup-minimal-2
  285. openssl))
  286. (home-page "https://srain.im")
  287. (synopsis "Modern IRC client written in GTK")
  288. (description
  289. "Srain is an IRC client written in GTK. It aims to be modern and easy to
  290. use while still remaining useful to power users. It also has partial support
  291. for the IRCv3 protocol.")
  292. (license license:gpl3+)))
  293. (define-public ircii
  294. (package
  295. (name "ircii")
  296. (version "20210314")
  297. (source (origin
  298. (method url-fetch)
  299. (uri (string-append "https://ircii.warped.com/"
  300. name "-" version ".tar.gz"))
  301. (sha256
  302. (base32
  303. "04jczayv1vdn21fcf5zkfaa98sy7d6ydrv2sns2i67gvya2z28j3"))))
  304. (build-system gnu-build-system)
  305. ;; TODO: We should package a small socks4/5 library/server to configure
  306. ;; ircii with socks client. `ghc-socks' pulls in lots of haskell, which
  307. ;; is too big.
  308. (arguments
  309. `(#:tests? #f
  310. #:configure-flags (list
  311. "--enable-ipv6"
  312. "--with-emacs-meta-keys"
  313. (string-append "--with-openssl="
  314. (assoc-ref %build-inputs "openssl")))
  315. #:phases
  316. (modify-phases %standard-phases
  317. (add-after 'unpack 'patch-bsdinstall-absolute-path-bins
  318. (lambda* (#:key inputs #:allow-other-keys)
  319. (substitute* "bsdinstall"
  320. (("/bin/strip") "strip")
  321. (("/bin/cp") "cp")
  322. (("/bin/chmod") "chmod")
  323. (("/etc/chown") "chown")
  324. (("/bin/chgrp") "chgrp")
  325. (("/bin/mkdir") "mkdir")
  326. (("/bin/rm") "rm")
  327. (("/bin/mv") "mv")))))))
  328. (inputs
  329. (list ncurses openssl))
  330. (native-inputs
  331. (list pkg-config perl))
  332. (home-page "http://www.eterna.com.au/ircii/")
  333. (synopsis "Terminal-based IRC and ICB client")
  334. (description
  335. "ircII is a terminal based IRC and ICB client for UNIX systems.")
  336. (license license:bsd-3)))
  337. (define-public catgirl
  338. (package
  339. (name "catgirl")
  340. (version "2.1")
  341. (source (origin
  342. (method url-fetch)
  343. (uri (string-append "https://git.causal.agency/catgirl/snapshot/"
  344. name "-" version ".tar.gz"))
  345. (sha256
  346. (base32
  347. "13pfphcfkdzqfb4x7w21xp6rnmg3ix9f39mpqmxxzg15ys1gp2x6"))))
  348. (build-system gnu-build-system)
  349. (arguments
  350. `(#:tests? #f ; no tests
  351. #:make-flags (list (string-append "PREFIX=" %output)
  352. ,(string-append "CC=" (cc-for-target)))))
  353. (native-inputs
  354. (list universal-ctags pkg-config))
  355. (inputs
  356. (list libressl ncurses))
  357. (home-page "https://git.causal.agency/catgirl")
  358. (synopsis "TLS-only terminal IRC client")
  359. (description
  360. "@command{catgirl} is a TLS-only terminal IRC client.
  361. Notable features include:
  362. @itemize
  363. @item Tab complete: most recently seen or mentioned nicks are completed first.
  364. Commas are inserted between multiple nicks.
  365. @item Prompt: the prompt clearly shows whether input will be interpreted as a
  366. command or sent as a message.
  367. @item Split scroll: keeps the latest messages in view while scrolling.
  368. @item URL detection: recent URLs from a particular user or matching a
  369. substring can be opened or copied.
  370. @item Nick coloring: color generation based on usernames remains stable across
  371. nick changes. Mentions of users in messages are colored.
  372. @item Topic diffing: the modified portion of a channel topic change is
  373. highlighted.
  374. @end itemize")
  375. (license license:gpl3+)))
  376. (define-public ii
  377. (package
  378. (name "ii")
  379. (version "2.0")
  380. (source (origin
  381. (method url-fetch)
  382. (uri (string-append "http://dl.suckless.org/tools/"
  383. name "-" version ".tar.gz"))
  384. (sha256
  385. (base32
  386. "0ns2wpzkk7qzhv7addgr0w5as0m7jwag5nxai2dr61wc436syrsg"))))
  387. (build-system gnu-build-system)
  388. (arguments
  389. (list #:tests? #f ; no tests
  390. #:make-flags
  391. #~(list (string-append "PREFIX=" #$output)
  392. (string-append "CC=" #$(cc-for-target)))
  393. #:phases
  394. #~(modify-phases %standard-phases
  395. (delete 'configure)))) ; no configure script
  396. (home-page "https://tools.suckless.org/ii/")
  397. (synopsis "FIFO and file system based IRC client")
  398. (description
  399. "ii (Irc it) is a minimalist FIFO and file system based IRC client.")
  400. (license license:expat)))
  401. (define-public sic
  402. (package
  403. (name "sic")
  404. (version "1.2")
  405. (source (origin
  406. (method url-fetch)
  407. (uri (string-append "http://dl.suckless.org/tools/"
  408. name "-" version ".tar.gz"))
  409. (sha256
  410. (base32
  411. "11aiavxp44yayibc58bvimi8mrxvbw1plbci8cnbl4syk42zj1xc"))))
  412. (build-system gnu-build-system)
  413. (arguments
  414. `(#:tests? #f ; no tests
  415. #:make-flags (list ,(string-append "CC=" (cc-for-target))
  416. (string-append "PREFIX=" %output))
  417. #:phases
  418. (modify-phases %standard-phases
  419. (delete 'configure)))) ; no configure
  420. (home-page "https://tools.suckless.org/sic/")
  421. (synopsis "Simple IRC client")
  422. (description
  423. "sic is a simple IRC client, even more minimalistic than ii.")
  424. (license license:expat)))
  425. (define-public kirc
  426. (package
  427. (name "kirc")
  428. (version "0.3.2")
  429. (source (origin
  430. (method git-fetch)
  431. (uri (git-reference
  432. (url "https://github.com/mcpcpc/kirc")
  433. (commit version)))
  434. (file-name (git-file-name name version))
  435. (sha256
  436. (base32 "1ighpinss3k6xyqk05wrs76wvp2ahhh0jkkg8h7bhg66b14fsws9"))))
  437. (build-system gnu-build-system)
  438. (arguments
  439. `(#:tests? #f ; no tests
  440. #:make-flags
  441. (list (string-append "CC=" ,(cc-for-target))
  442. (string-append "PREFIX=" %output))
  443. #:phases
  444. (modify-phases %standard-phases
  445. (delete 'configure)))) ; No ./configure script
  446. (synopsis "IRC client written in POSIX C99")
  447. (description "Kirc is an Internet Relay Chat (IRC) client. It includes
  448. support for Simple Authentication and Security Layer (SASL), the
  449. client-to-client (CTCP) protocol, simple chat history logging, synchronous
  450. message handling, multi-channel joining at server connection, full support for
  451. all RFC 2812 commands, and customized color scheme definitions.")
  452. (home-page "http://kirc.io/index.html")
  453. (license license:expat)))
  454. (define-public limnoria
  455. (package
  456. (name "limnoria")
  457. (version "2019.11.22")
  458. (source
  459. (origin
  460. (method url-fetch)
  461. (uri (pypi-uri "limnoria" version))
  462. (sha256
  463. (base32 "0853xk1ps3v6lkmfx50wv56vynnzpl84v66hxnhl8i34zl36kk3c"))))
  464. (build-system python-build-system)
  465. (inputs
  466. (list python-pytz
  467. python-chardet
  468. python-dateutil
  469. python-gnupg
  470. python-feedparser
  471. python-sqlalchemy
  472. python-socksipy-branch
  473. python-ecdsa))
  474. (native-inputs
  475. (list python-mock))
  476. ;; Despite the existence of a test folder there is no test phase.
  477. ;; We need to package https://github.com/ProgVal/irctest and write
  478. ;; our own testphase.
  479. (arguments
  480. `(#:tests? #f))
  481. (home-page "https://github.com/ProgVal/Limnoria")
  482. (synopsis "Modified version of Supybot (an IRC bot and framework)")
  483. (description
  484. "Modified version of Supybot with Python 3 and IRCv3 support,
  485. embedded web server, translations (fr, fi, it, hu, de), and many
  486. other enhancements and bug fixes.")
  487. (license license:bsd-3)))
  488. (define-public epic5
  489. (package
  490. (name "epic5")
  491. (version "2.0.1")
  492. (source (origin
  493. (method url-fetch)
  494. (uri (string-append "http://ftp.epicsol.org/pub/"
  495. "epic/EPIC5-PRODUCTION/"
  496. name "-" version ".tar.xz"))
  497. (sha256
  498. (base32
  499. "1ap73d5f4vccxjaaq249zh981z85106vvqmxfm4plvy76b40y9jm"))))
  500. (build-system gnu-build-system)
  501. (arguments
  502. `(#:test-target "test"
  503. #:phases
  504. (modify-phases %standard-phases
  505. (add-after 'unpack 'patch-perl
  506. (lambda _
  507. (substitute* "regress/crash-irc"
  508. (("perl5") (which "perl")))
  509. #t))
  510. (add-after 'unpack 'patch-bsdinstall
  511. ;; If we just remove /bin/ some part of the bsdinstall breaks.
  512. ;; Furthermore bsdinstalls has a reference to /etc/chmod here, which
  513. ;; means if we leave /etc/ in, install fails.
  514. (lambda _
  515. (substitute* "bsdinstall"
  516. (("/bin/strip") "strip")
  517. (("/bin/cp") "cp")
  518. (("/bin/chmod") "chmod")
  519. (("/bin/chgrp") "chgrp")
  520. (("/bin/mkdir") "mkdir")
  521. (("/bin/rm") "rm")
  522. (("/bin/mv") "mv")
  523. (("/etc/") ""))
  524. #t))
  525. (replace 'configure
  526. (lambda* (#:key outputs #:allow-other-keys)
  527. ;; The tarball uses a very old version of autconf. It does not
  528. ;; understand extra flags like `--enable-fast-install', so
  529. ;; we need to invoke it with just what it understands.
  530. (let ((out (assoc-ref outputs "out")))
  531. ;; 'configure' doesn't understand '--host'.
  532. ,@(if (%current-target-system)
  533. `((setenv "CHOST" ,(%current-target-system)))
  534. '())
  535. (setenv "CONFIG_SHELL" (which "bash"))
  536. (setenv "SHELL" (which "bash"))
  537. (invoke "./configure"
  538. (string-append "--prefix=" out)
  539. "--with-ipv6" "--with-libarchive"
  540. ;; We use libressl because openssl does not come
  541. ;; with the lib/libssl.a which is needed for epic5.
  542. ;; XXX: No matter which implementation is chosen,
  543. ;; epic5 fails to connect to tls ports of roundrobin
  544. ;; irc networks. This however is believed to be an
  545. ;; protocol issue at epic5 related to ircd.
  546. (string-append "--with-ssl="
  547. (assoc-ref %build-inputs "libressl"))
  548. (string-append "--with-tcl="
  549. (assoc-ref %build-inputs "tcl")
  550. "/lib/tclConfig.sh"))))))))
  551. (inputs
  552. (list libressl
  553. ncurses
  554. libarchive ; CHANGELOG: "Support for loading zip files"
  555. perl
  556. tcl
  557. ruby))
  558. (native-inputs
  559. (list pkg-config))
  560. (home-page "http://epicsol.org")
  561. (synopsis "Epic5 IRC Client")
  562. (description
  563. "EPIC is a IRC client that has been under active development for
  564. over 20 years. It is stable and mature, and offers an excellent ircII
  565. interface for those who are accustomed to the ircII way of doing things.")
  566. (license (list license:bsd-3
  567. license:isc
  568. license:bsd-4
  569. ;; The epic license is equal to the standard three-clause
  570. ;; BSD license except that you are not permitted to remove the
  571. ;; "Redistribution is permitted" clause of the license if you
  572. ;; distribute binaries.
  573. (license:non-copyleft "http://epicsol.org/copyright")))))
  574. (define-public go-gopkg-in-irc-v3
  575. (package
  576. (name "go-gopkg-in-irc-v3")
  577. (version "3.1.4")
  578. (source
  579. (origin
  580. (method git-fetch)
  581. (uri (git-reference
  582. (url "https://gopkg.in/irc.v3")
  583. (commit (string-append "v" version))))
  584. (file-name (git-file-name name version))
  585. (sha256
  586. (base32 "0f2vv947yf9ygy8ylwqkd9yshybfdsbsp9pffjyvm7l7rnq5da60"))))
  587. (build-system go-build-system)
  588. (arguments
  589. '(;; TODO 3 tests fail because of missing files
  590. ;; https://paste.sr.ht/~whereiseveryone/784d068887a65c1b869caa7d7c2077d28a2b2187
  591. #:tests? #f
  592. #:import-path "gopkg.in/irc.v3" #:unpack-path "gopkg.in/irc.v3"))
  593. (propagated-inputs
  594. `(("go-gopkg-in-yaml-v2" ,go-gopkg-in-yaml-v2)
  595. ("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)))
  596. (home-page "https://gopkg.in/irc.v3")
  597. (synopsis "Low-level IRC library for Go")
  598. (description "Package irc provides a simple IRC library meant as a
  599. building block for other projects.")
  600. (license license:expat)))
  601. (define-public chathistorysync
  602. (package
  603. (name "chathistorysync")
  604. (version "0.2.0")
  605. (source
  606. (origin
  607. (method git-fetch)
  608. (uri (git-reference
  609. (url "https://git.sr.ht/~emersion/chathistorysync")
  610. (commit (string-append "v" version))))
  611. (file-name (git-file-name name version))
  612. (sha256
  613. (base32 "03dxr178wnicggx0k95wvyzgyk4s4g0adbi2z0md517a5qd1lh23"))))
  614. (build-system go-build-system)
  615. (arguments
  616. (list #:import-path "git.sr.ht/~emersion/chathistorysync"
  617. #:install-source? #f ; chathistorysync is an end-user application.
  618. #:phases
  619. #~(modify-phases %standard-phases
  620. (add-after 'build 'doc
  621. (lambda _
  622. (with-directory-excursion
  623. "src/git.sr.ht/~emersion/chathistorysync"
  624. (invoke "sh" "-c"
  625. "scdoc <chathistorysync.1.scd >chathistorysync.1"))))
  626. (add-after 'install 'install-doc
  627. (lambda* (#:key outputs #:allow-other-keys)
  628. (let* ((out (assoc-ref outputs "out")))
  629. (with-directory-excursion
  630. "src/git.sr.ht/~emersion/chathistorysync"
  631. (install-file
  632. "chathistorysync.1"
  633. (string-append out "/share/man/man1")))))))))
  634. (inputs
  635. (list go-golang-org-x-sys
  636. go-golang-org-x-term
  637. go-golang-org-x-crypto
  638. go-gopkg-in-irc-v3))
  639. (native-inputs (list scdoc))
  640. (home-page "https://git.sr.ht/~emersion/chathistorysync")
  641. (synopsis "Synchronization tool for IRC chat history")
  642. (description
  643. "This package provides a synchronization tool for IRC chat history.")
  644. (license license:agpl3)))
  645. (define-public litterbox
  646. (package
  647. (name "litterbox")
  648. (version "1.9")
  649. (source
  650. (origin
  651. (method url-fetch)
  652. (uri (string-append "https://git.causal.agency/litterbox/snapshot/litterbox-"
  653. version ".tar.gz"))
  654. (sha256
  655. (base32 "1ag5x7h71pxjaaf4b561rwdqr05zzywkc0p3jf2yhg3lbjkjrc7z"))))
  656. (build-system gnu-build-system)
  657. (arguments
  658. `(#:tests? #f ; There are no tests.
  659. #:make-flags
  660. (list
  661. (string-append "CC=" ,(cc-for-target))
  662. (string-append "PREFIX=" %output))))
  663. (native-inputs
  664. (list pkg-config universal-ctags))
  665. (inputs
  666. (list libressl sqlite))
  667. (home-page "https://code.causal.agency/june/litterbox")
  668. (synopsis "TLS-only IRC logger")
  669. (description
  670. "@command{litterbox} is a TLS-only IRC logger. It logs
  671. events from IRC in a SQLite database, indexing messages for full-text
  672. search. It is intended for use with the IRC bouncer @command{pounce},
  673. but can also be used independently as a logging bot.")
  674. (license license:gpl3+)))
  675. (define-public inspircd
  676. (package
  677. (name "inspircd")
  678. (version "3.12.0")
  679. (source
  680. (origin
  681. (method git-fetch)
  682. (uri (git-reference
  683. (url "https://github.com/inspircd/inspircd")
  684. (commit (string-append "v" version))))
  685. (file-name (git-file-name name version))
  686. (sha256
  687. (base32 "0xlfs269iaw7dfryzl6vjzqsn2g4nqh6kpf5xfgk3zbjhqaczknx"))))
  688. (build-system gnu-build-system)
  689. (arguments
  690. (list #:configure-flags
  691. #~(map (lambda (module)
  692. (string-append "--enable-extras=" module))
  693. '("m_argon2.cpp"
  694. "m_geo_maxmind.cpp"
  695. "m_ldap.cpp"
  696. "m_mysql.cpp"
  697. "m_pgsql.cpp"
  698. "m_regex_pcre.cpp"
  699. "m_regex_posix.cpp"
  700. "m_regex_stdlib.cpp"
  701. "m_regex_re2.cpp"
  702. "m_regex_tre.cpp"
  703. "m_sqlite3.cpp"
  704. "m_ssl_gnutls.cpp"
  705. "m_ssl_openssl.cpp"
  706. "m_ssl_mbedtls.cpp"
  707. "m_sslrehashsignal.cpp"))
  708. #:tests? #f ; XXX figure out later
  709. #:phases
  710. #~(modify-phases %standard-phases
  711. (add-before 'configure 'module-configure
  712. (lambda* (#:key configure-flags #:allow-other-keys)
  713. (apply invoke "./configure"
  714. configure-flags)))
  715. (replace 'configure
  716. (lambda _
  717. (let ((lib (string-append #$output "/lib/"))
  718. (bin (string-append #$output "/bin/"))
  719. (etc (string-append #$output "/etc/"))
  720. (name "inspircd"))
  721. (invoke "./configure"
  722. (string-append "--prefix=" lib name)
  723. (string-append "--binary-dir=" bin)
  724. (string-append "--module-dir=" lib name "/modules/")
  725. (string-append "--config-dir=" etc name))))))))
  726. (native-inputs
  727. (list pkg-config))
  728. (inputs
  729. (list argon2
  730. gnutls
  731. libmaxminddb
  732. mbedtls-apache
  733. (list mariadb "dev")
  734. openldap
  735. openssl
  736. `(,pcre "bin")
  737. perl
  738. postgresql
  739. re2
  740. sqlite
  741. tre))
  742. (synopsis "Modular IRC server written in C++")
  743. (description "InspIRCd is a modular Internet Relay Chat
  744. server written in C++ for Unix-like operating systems.")
  745. (home-page "https://www.inspircd.org/")
  746. (license license:gpl2)))