irc.scm 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  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, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
  6. ;;; Copyright © 2016 Nikita <nikita@n0.is>
  7. ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
  8. ;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
  9. ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
  10. ;;; Copyright © 2020, 2021 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. ;;;
  15. ;;; This file is part of GNU Guix.
  16. ;;;
  17. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  18. ;;; under the terms of the GNU General Public License as published by
  19. ;;; the Free Software Foundation; either version 3 of the License, or (at
  20. ;;; your option) any later version.
  21. ;;;
  22. ;;; GNU Guix is distributed in the hope that it will be useful, but
  23. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  24. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  25. ;;; GNU General Public License for more details.
  26. ;;;
  27. ;;; You should have received a copy of the GNU General Public License
  28. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  29. (define-module (gnu packages irc)
  30. #:use-module ((guix licenses) #:prefix license:)
  31. #:use-module (guix download)
  32. #:use-module (guix git-download)
  33. #:use-module (guix utils)
  34. #:use-module (guix packages)
  35. #:use-module (guix utils)
  36. #:use-module (guix build-system cmake)
  37. #:use-module (guix build-system gnu)
  38. #:use-module (guix build-system meson)
  39. #:use-module (guix build-system python)
  40. #:use-module (guix build-system qt)
  41. #:use-module (gnu packages)
  42. #:use-module (gnu packages admin)
  43. #:use-module (gnu packages aspell)
  44. #:use-module (gnu packages autogen)
  45. #:use-module (gnu packages autotools)
  46. #:use-module (gnu packages base)
  47. #:use-module (gnu packages backup)
  48. #:use-module (gnu packages check)
  49. #:use-module (gnu packages compression)
  50. #:use-module (gnu packages curl)
  51. #:use-module (gnu packages cyrus-sasl)
  52. #:use-module (gnu packages databases)
  53. #:use-module (gnu packages file)
  54. #:use-module (gnu packages gettext)
  55. #:use-module (gnu packages geo)
  56. #:use-module (gnu packages glib)
  57. #:use-module (gnu packages gnome)
  58. #:use-module (gnu packages gnupg)
  59. #:use-module (gnu packages gtk)
  60. #:use-module (gnu packages guile)
  61. #:use-module (gnu packages lua)
  62. #:use-module (gnu packages lxqt)
  63. #:use-module (gnu packages ncurses)
  64. #:use-module (gnu packages openldap)
  65. #:use-module (gnu packages kde)
  66. #:use-module (gnu packages kde-frameworks)
  67. #:use-module (gnu packages password-utils)
  68. #:use-module (gnu packages pcre)
  69. #:use-module (gnu packages perl)
  70. #:use-module (gnu packages pkg-config)
  71. #:use-module (gnu packages python)
  72. #:use-module (gnu packages python-crypto)
  73. #:use-module (gnu packages python-xyz)
  74. #:use-module (gnu packages regex)
  75. #:use-module (gnu packages ruby)
  76. #:use-module (gnu packages sphinx)
  77. #:use-module (gnu packages sqlite)
  78. #:use-module (gnu packages qt)
  79. #:use-module (gnu packages tcl)
  80. #:use-module (gnu packages textutils)
  81. #:use-module (gnu packages time)
  82. #:use-module (gnu packages tls)
  83. #:use-module (gnu packages web)
  84. #:use-module (srfi srfi-1)
  85. #:use-module (srfi srfi-26))
  86. (define-public quassel
  87. (package
  88. (name "quassel")
  89. (version "0.13.1")
  90. (source
  91. (origin
  92. (method url-fetch)
  93. (uri (string-append "https://quassel-irc.org/pub/quassel-"
  94. version ".tar.bz2"))
  95. (sha256
  96. (base32
  97. "0mg8jydc70vlylppzich26q4s40kr78r3ysfyjwisfvlg2byxvs8"))
  98. (patches (search-patches "quassel-qt-514-compat.patch"))
  99. (modules '((guix build utils)))
  100. ;; We don't want to install the bundled inxi script.
  101. (snippet
  102. '(begin
  103. (delete-file "data/scripts/inxi")
  104. #t))))
  105. (build-system qt-build-system)
  106. (arguments
  107. ;; The three binaries are not mutually exlusive, and are all built
  108. ;; by default.
  109. '(#:configure-flags '(;;"-DWANT_QTCLIENT=OFF" ; 6.1 MiB
  110. ;;"-DWANT_CORE=OFF" ; 3.0 MiB
  111. ;;"-DWANT_MONO=OFF" ; 7.6 MiB
  112. "-DWITH_KDE=OFF" ; no to kde integration ...
  113. "-DWITH_BUNDLED_ICONS=ON" ; so we install bundled icons
  114. "-DWITH_OXYGEN_ICONS=ON" ; also the oxygen ones
  115. "-DWITH_WEBENGINE=OFF") ; we don't depend on qtwebengine
  116. #:phases
  117. (modify-phases %standard-phases
  118. (add-after 'unpack 'patch-inxi-reference
  119. (lambda* (#:key inputs #:allow-other-keys)
  120. (let ((inxi (search-input-file inputs "/bin/inxi")))
  121. (symlink inxi "data/scripts/inxi")
  122. #t))))
  123. #:tests? #f)) ; no test target
  124. (native-inputs
  125. `(("extra-cmake-modules" ,extra-cmake-modules)
  126. ("pkg-config" ,pkg-config)
  127. ("qttools" ,qttools)))
  128. (inputs
  129. `(("inxi" ,inxi-minimal)
  130. ("libdbusmenu-qt" ,libdbusmenu-qt)
  131. ("qca" ,qca)
  132. ("qtbase" ,qtbase-5)
  133. ("qtmultimedia" ,qtmultimedia)
  134. ("qtscript" ,qtscript)
  135. ("qtsvg" ,qtsvg)
  136. ("snorenotify" ,snorenotify)
  137. ("zlib" ,zlib)))
  138. (home-page "https://quassel-irc.org/")
  139. (synopsis "Distributed IRC client")
  140. (description "Quassel is a distributed IRC client, meaning that one or more
  141. clients can attach to and detach from the central core. It resembles the
  142. popular combination of screen and a text-based IRC client such as WeeChat or
  143. irssi, but graphical.")
  144. (license (list license:gpl2 license:gpl3)))) ;; dual licensed
  145. (define-public irssi
  146. (package
  147. (name "irssi")
  148. (version "1.2.3")
  149. (source (origin
  150. (method url-fetch)
  151. (uri (string-append "https://github.com/irssi/irssi/"
  152. "releases/download/" version "/irssi-"
  153. version ".tar.xz"))
  154. (sha256
  155. (base32
  156. "17vninwcdfxw39xl2q55qircckckjk2xlvkvlwgj5lhlxppvyix6"))))
  157. (build-system gnu-build-system)
  158. (arguments
  159. `(#:phases
  160. (modify-phases %standard-phases
  161. (replace 'configure
  162. (lambda* (#:key inputs outputs #:allow-other-keys)
  163. (let ((out (assoc-ref outputs "out")))
  164. (setenv "CONFIG_SHELL" (which "bash"))
  165. (invoke "./configure"
  166. (string-append "--prefix=" out)
  167. (string-append "--with-proxy")
  168. (string-append "--with-socks")
  169. (string-append "--with-bot")))))
  170. (add-before 'check 'set-home
  171. (lambda _
  172. (setenv "HOME" (getcwd)))))))
  173. (inputs
  174. `(("glib" ,glib)
  175. ("ncurses" ,ncurses)
  176. ("openssl" ,openssl)
  177. ("perl" ,perl)))
  178. (native-inputs
  179. `(("pkg-config" ,pkg-config)))
  180. (home-page "https://irssi.org/")
  181. (synopsis "Terminal-based IRC client")
  182. (description
  183. "Irssi is a terminal based IRC client for UNIX systems. It also supports
  184. SILC and ICB protocols via plugins.")
  185. (license license:gpl2+)))
  186. (define-public weechat
  187. (package
  188. (name "weechat")
  189. (version "3.2")
  190. (source (origin
  191. (method url-fetch)
  192. (uri (string-append "https://weechat.org/files/src/weechat-"
  193. version ".tar.xz"))
  194. (sha256
  195. (base32
  196. "1a47knznlm9f2f83d71s3c4fm50m6iq6iq1bvp4m61p8fkrsva1r"))))
  197. (build-system cmake-build-system)
  198. (native-inputs
  199. `(("gettext" ,gettext-minimal)
  200. ("pkg-config" ,pkg-config)
  201. ;; For tests.
  202. ("cpputest" ,cpputest)))
  203. (inputs
  204. `(("aspell" ,aspell)
  205. ("curl" ,curl)
  206. ("gnutls" ,gnutls)
  207. ("libgcrypt" ,libgcrypt "out")
  208. ("ncurses" ,ncurses)
  209. ("zlib" ,zlib)
  210. ;; Scripting language plug-ins.
  211. ("guile" ,guile-3.0)
  212. ("lua" ,lua-5.1)
  213. ("perl" ,perl)
  214. ("python" ,python)
  215. ("tcl" ,tcl)))
  216. (arguments
  217. `(#:configure-flags
  218. (list "-DENABLE_PHP=OFF"
  219. "-DENABLE_RUBY=OFF"
  220. "-DENABLE_TESTS=ON") ; ‘make test’ fails otherwise
  221. ;; Tests hang indefinitely on non-Intel platforms.
  222. #:tests? ,(if (any (cute string-prefix? <> (or (%current-target-system)
  223. (%current-system)))
  224. '("i686" "x86_64"))
  225. '#t '#f)))
  226. (synopsis "Extensible chat client")
  227. (description "WeeChat (Wee Enhanced Environment for Chat) is an
  228. @dfn{Internet Relay Chat} (IRC) client, which is designed to be light and fast.
  229. The client uses a curses frontend, and there are remote interfaces for Web,
  230. Qt, Android, and Emacs.
  231. Everything in WeeChat can be done with the keyboard, though it also supports
  232. using a mouse. It is customizable and extensible with plugins and scripts.")
  233. (home-page "https://www.weechat.org/")
  234. (license license:gpl3)))
  235. (define-public srain
  236. (package
  237. (name "srain")
  238. (version "1.2.3")
  239. (source
  240. (origin
  241. (method git-fetch)
  242. (uri (git-reference
  243. (url "https://github.com/SrainApp/srain")
  244. (commit version)))
  245. (file-name (git-file-name name version))
  246. (sha256
  247. (base32 "0rlpygcpacgcfjxw3brw99ad3rc7zs96p5c6rg6j79p6sy38lrfs"))))
  248. (build-system meson-build-system)
  249. (arguments
  250. `(#:tests? #f ;there are no tests
  251. #:glib-or-gtk? #t))
  252. (native-inputs
  253. `(("gettext" ,gettext-minimal)
  254. ("glib:bin" ,glib "bin")
  255. ("pkg-config" ,pkg-config)
  256. ("python" ,python-wrapper)
  257. ("python-sphinx" ,python-sphinx)))
  258. (inputs
  259. `(("glib-networking" ,glib-networking)
  260. ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
  261. ("gtk+" ,gtk+)
  262. ("libconfig" ,libconfig)
  263. ("libsecret" ,libsecret)
  264. ("libsoup" ,libsoup)
  265. ("openssl" ,openssl)))
  266. (home-page "https://srain.im")
  267. (synopsis "Modern IRC client written in GTK")
  268. (description
  269. "Srain is an IRC client written in GTK. It aims to be modern and easy to
  270. use while still remaining useful to power users. It also has partial support
  271. for the IRCv3 protocol.")
  272. (license license:gpl3+)))
  273. (define-public ircii
  274. (package
  275. (name "ircii")
  276. (version "20210314")
  277. (source (origin
  278. (method url-fetch)
  279. (uri (string-append "https://ircii.warped.com/"
  280. name "-" version ".tar.gz"))
  281. (sha256
  282. (base32
  283. "04jczayv1vdn21fcf5zkfaa98sy7d6ydrv2sns2i67gvya2z28j3"))))
  284. (build-system gnu-build-system)
  285. ;; TODO: We should package a small socks4/5 library/server to configure
  286. ;; ircii with socks client. `ghc-socks' pulls in lots of haskell, which
  287. ;; is too big.
  288. (arguments
  289. `(#:tests? #f
  290. #:configure-flags (list
  291. "--enable-ipv6"
  292. "--with-emacs-meta-keys"
  293. (string-append "--with-openssl="
  294. (assoc-ref %build-inputs "openssl")))
  295. #:phases
  296. (modify-phases %standard-phases
  297. (add-after 'unpack 'patch-bsdinstall-absolute-path-bins
  298. (lambda* (#:key inputs #:allow-other-keys)
  299. (substitute* "bsdinstall"
  300. (("/bin/strip") "strip")
  301. (("/bin/cp") "cp")
  302. (("/bin/chmod") "chmod")
  303. (("/etc/chown") "chown")
  304. (("/bin/chgrp") "chgrp")
  305. (("/bin/mkdir") "mkdir")
  306. (("/bin/rm") "rm")
  307. (("/bin/mv") "mv")))))))
  308. (inputs
  309. `(("ncurses" ,ncurses)
  310. ("openssl" ,openssl)))
  311. (native-inputs
  312. `(("pkg-config" ,pkg-config)
  313. ("perl" ,perl)))
  314. (home-page "http://www.eterna.com.au/ircii/")
  315. (synopsis "Terminal-based IRC and ICB client")
  316. (description
  317. "ircII is a terminal based IRC and ICB client for UNIX systems.")
  318. (license license:bsd-3)))
  319. (define-public ii
  320. (package
  321. (name "ii")
  322. (version "1.8")
  323. (source (origin
  324. (method url-fetch)
  325. (uri (string-append "http://dl.suckless.org/tools/"
  326. name "-" version ".tar.gz"))
  327. (sha256
  328. (base32
  329. "1lk8vjl7i8dcjh4jkg8h8bkapcbs465sy8g9c0chfqsywbmf3ndr"))))
  330. (build-system gnu-build-system)
  331. (arguments
  332. `(#:tests? #f ; no tests
  333. #:make-flags (list (string-append "PREFIX=" %output)
  334. ,(string-append "CC=" (cc-for-target)))
  335. #:phases
  336. (modify-phases %standard-phases
  337. (delete 'configure)))) ; no configure
  338. (home-page "https://tools.suckless.org/ii/")
  339. (synopsis "FIFO and file system based IRC client")
  340. (description
  341. "ii (Irc it) is a minimalist FIFO and file system based IRC client.")
  342. (license license:expat)))
  343. (define-public sic
  344. (package
  345. (name "sic")
  346. (version "1.2")
  347. (source (origin
  348. (method url-fetch)
  349. (uri (string-append "http://dl.suckless.org/tools/"
  350. name "-" version ".tar.gz"))
  351. (sha256
  352. (base32
  353. "11aiavxp44yayibc58bvimi8mrxvbw1plbci8cnbl4syk42zj1xc"))))
  354. (build-system gnu-build-system)
  355. (arguments
  356. `(#:tests? #f ; no tests
  357. #:make-flags (list ,(string-append "CC=" (cc-for-target))
  358. (string-append "PREFIX=" %output))
  359. #:phases
  360. (modify-phases %standard-phases
  361. (delete 'configure)))) ; no configure
  362. (home-page "https://tools.suckless.org/sic/")
  363. (synopsis "Simple IRC client")
  364. (description
  365. "sic is a simple IRC client, even more minimalistic than ii.")
  366. (license license:expat)))
  367. (define-public kirc
  368. (package
  369. (name "kirc")
  370. (version "0.2.7")
  371. (source (origin
  372. (method git-fetch)
  373. (uri (git-reference
  374. (url "https://github.com/mcpcpc/kirc")
  375. (commit version)))
  376. (file-name (git-file-name name version))
  377. (sha256
  378. (base32 "0phx00lr7ya8rx1hskv1wdwbq2vlihiqhnplqdvk1r3m23is7al9"))))
  379. (build-system gnu-build-system)
  380. (arguments
  381. `(#:tests? #f ; no tests
  382. #:make-flags
  383. (list (string-append "CC=" ,(cc-for-target))
  384. (string-append "PREFIX=" %output))
  385. #:phases
  386. (modify-phases %standard-phases
  387. (delete 'configure)))) ; No ./configure script
  388. (synopsis "IRC client written in POSIX C99")
  389. (description "Kirc is an Internet Relay Chat (IRC) client. It includes
  390. support for Simple Authentication and Security Layer (SASL), the
  391. client-to-client (CTCP) protocol, simple chat history logging, synchronous
  392. message handling, multi-channel joining at server connection, full support for
  393. all RFC 2812 commands, and customized color scheme definitions.")
  394. (home-page "http://kirc.io/index.html")
  395. (license license:expat)))
  396. (define-public limnoria
  397. (package
  398. (name "limnoria")
  399. (version "2019.11.22")
  400. (source
  401. (origin
  402. (method url-fetch)
  403. (uri (pypi-uri "limnoria" version))
  404. (sha256
  405. (base32 "0853xk1ps3v6lkmfx50wv56vynnzpl84v66hxnhl8i34zl36kk3c"))))
  406. (build-system python-build-system)
  407. (inputs
  408. `(("python-pytz" ,python-pytz)
  409. ("python-chardet" ,python-chardet)
  410. ("python-dateutil" ,python-dateutil)
  411. ("python-gnupg" ,python-gnupg)
  412. ("python-feedparser" ,python-feedparser)
  413. ("python-sqlalchemy" ,python-sqlalchemy)
  414. ("python-socksipy-branch" ,python-socksipy-branch)
  415. ("python-ecdsa" ,python-ecdsa)))
  416. (native-inputs
  417. `(("python-mock" ,python-mock)))
  418. ;; Despite the existence of a test folder there is no test phase.
  419. ;; We need to package https://github.com/ProgVal/irctest and write
  420. ;; our own testphase.
  421. (arguments
  422. `(#:tests? #f))
  423. (home-page "https://github.com/ProgVal/Limnoria")
  424. (synopsis "Modified version of Supybot (an IRC bot and framework)")
  425. (description
  426. "Modified version of Supybot with Python 3 and IRCv3 support,
  427. embedded web server, translations (fr, fi, it, hu, de), and many
  428. other enhancements and bug fixes.")
  429. (license license:bsd-3)))
  430. (define-public epic5
  431. (package
  432. (name "epic5")
  433. (version "2.0.1")
  434. (source (origin
  435. (method url-fetch)
  436. (uri (string-append "http://ftp.epicsol.org/pub/"
  437. "epic/EPIC5-PRODUCTION/"
  438. name "-" version ".tar.xz"))
  439. (sha256
  440. (base32
  441. "1ap73d5f4vccxjaaq249zh981z85106vvqmxfm4plvy76b40y9jm"))))
  442. (build-system gnu-build-system)
  443. (arguments
  444. `(#:test-target "test"
  445. #:phases
  446. (modify-phases %standard-phases
  447. (add-after 'unpack 'patch-perl
  448. (lambda _
  449. (substitute* "regress/crash-irc"
  450. (("perl5") (which "perl")))
  451. #t))
  452. (add-after 'unpack 'patch-bsdinstall
  453. ;; If we just remove /bin/ some part of the bsdinstall breaks.
  454. ;; Furthermore bsdinstalls has a reference to /etc/chmod here, which
  455. ;; means if we leave /etc/ in, install fails.
  456. (lambda _
  457. (substitute* "bsdinstall"
  458. (("/bin/strip") "strip")
  459. (("/bin/cp") "cp")
  460. (("/bin/chmod") "chmod")
  461. (("/bin/chgrp") "chgrp")
  462. (("/bin/mkdir") "mkdir")
  463. (("/bin/rm") "rm")
  464. (("/bin/mv") "mv")
  465. (("/etc/") ""))
  466. #t))
  467. (replace 'configure
  468. (lambda* (#:key outputs #:allow-other-keys)
  469. ;; The tarball uses a very old version of autconf. It does not
  470. ;; understand extra flags like `--enable-fast-install', so
  471. ;; we need to invoke it with just what it understands.
  472. (let ((out (assoc-ref outputs "out")))
  473. ;; 'configure' doesn't understand '--host'.
  474. ,@(if (%current-target-system)
  475. `((setenv "CHOST" ,(%current-target-system)))
  476. '())
  477. (setenv "CONFIG_SHELL" (which "bash"))
  478. (setenv "SHELL" (which "bash"))
  479. (invoke "./configure"
  480. (string-append "--prefix=" out)
  481. "--with-ipv6" "--with-libarchive"
  482. ;; We use libressl because openssl does not come
  483. ;; with the lib/libssl.a which is needed for epic5.
  484. ;; XXX: No matter which implementation is chosen,
  485. ;; epic5 fails to connect to tls ports of roundrobin
  486. ;; irc networks. This however is believed to be an
  487. ;; protocol issue at epic5 related to ircd.
  488. (string-append "--with-ssl="
  489. (assoc-ref %build-inputs "libressl"))
  490. (string-append "--with-tcl="
  491. (assoc-ref %build-inputs "tcl")
  492. "/lib/tclConfig.sh"))))))))
  493. (inputs
  494. `(("libressl" ,libressl)
  495. ("ncurses" ,ncurses)
  496. ("libarchive" ,libarchive) ; CHANGELOG: "Support for loading zip files"
  497. ("perl" ,perl)
  498. ("tcl" ,tcl)
  499. ("ruby" ,ruby)))
  500. (native-inputs
  501. `(("pkg-config" ,pkg-config)))
  502. (home-page "http://epicsol.org")
  503. (synopsis "Epic5 IRC Client")
  504. (description
  505. "EPIC is a IRC client that has been under active development for
  506. over 20 years. It is stable and mature, and offers an excellent ircII
  507. interface for those who are accustomed to the ircII way of doing things.")
  508. (license (list license:bsd-3
  509. license:isc
  510. license:bsd-4
  511. ;; The epic license is equal to the standard three-clause
  512. ;; BSD license except that you are not permitted to remove the
  513. ;; "Redistribution is permitted" clause of the license if you
  514. ;; distribute binaries.
  515. (license:non-copyleft "http://epicsol.org/copyright")))))
  516. (define-public inspircd
  517. (package
  518. (name "inspircd")
  519. (version "3.8.1")
  520. (source
  521. (origin
  522. (method git-fetch)
  523. (uri (git-reference
  524. (url "https://github.com/inspircd/inspircd")
  525. (commit (string-append "v" version))))
  526. (file-name (git-file-name name version))
  527. (sha256
  528. (base32 "1i30649dw84iscxa5as81g96f393mn1i883aq4za5ypdinr5x65g"))))
  529. (build-system gnu-build-system)
  530. (arguments
  531. `(#:configure-flags (map (lambda (module)
  532. (string-append "--enable-extras=" module))
  533. '("m_argon2.cpp"
  534. "m_geo_maxmind.cpp"
  535. "m_ldap.cpp"
  536. "m_mysql.cpp"
  537. "m_pgsql.cpp"
  538. "m_regex_pcre.cpp"
  539. "m_regex_posix.cpp"
  540. "m_regex_stdlib.cpp"
  541. "m_regex_re2.cpp"
  542. "m_regex_tre.cpp"
  543. "m_sqlite3.cpp"
  544. "m_ssl_gnutls.cpp"
  545. "m_ssl_openssl.cpp"
  546. "m_ssl_mbedtls.cpp"
  547. "m_sslrehashsignal.cpp"))
  548. #:tests? #f ; Figure out later.
  549. #:phases
  550. (modify-phases %standard-phases
  551. (add-before 'configure 'module-configure
  552. (lambda* (#:key configure-flags #:allow-other-keys)
  553. (apply invoke "./configure"
  554. configure-flags)
  555. #t))
  556. (replace 'configure
  557. (lambda* (#:key outputs #:allow-other-keys)
  558. (let* ((out (assoc-ref outputs "out"))
  559. (out-lib (string-append out "/lib/"))
  560. (out-bin (string-append out "/bin/"))
  561. (out-etc (string-append out "/etc/"))
  562. (name "inspircd"))
  563. (invoke "./configure"
  564. (string-append "--prefix=" out-lib name)
  565. (string-append "--binary-dir=" out-bin)
  566. (string-append "--module-dir=" out-lib name "/modules/")
  567. (string-append "--config-dir=" out-etc name)))
  568. #t)))))
  569. (native-inputs
  570. `(("pkg-config" ,pkg-config)))
  571. (inputs
  572. `(("argon2" ,argon2)
  573. ("gnutls" ,gnutls)
  574. ("libmaxminddb" ,libmaxminddb)
  575. ("mbedtls-apache" ,mbedtls-apache)
  576. ("mysql" ,mysql)
  577. ("openldap" ,openldap)
  578. ("openssl" ,openssl)
  579. ("pcre" ,pcre "bin")
  580. ("perl" ,perl)
  581. ("postgresql" ,postgresql)
  582. ("re2" ,re2)
  583. ("sqlite" ,sqlite)
  584. ("tre" ,tre)))
  585. (synopsis "Modular IRC server written in C++")
  586. (description "InspIRCd is a modular Internet Relay Chat
  587. server written in C++ for Unix-like operating systems.")
  588. (home-page "https://www.inspircd.org/")
  589. (license license:gpl2)))