gnu: perl-lwp-protocol-https: Uncomment perl-mozilla-ca input.
[jackhill/guix/guix.git] / gnu / packages / guile-xyz.scm
CommitLineData
0791437f 1;;; GNU Guix --- Functional package management for GNU
f918a8d9 2;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
0791437f
RW
3;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
5;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
76171095 6;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
0791437f 7;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
a52aa7fd 8;;; Copyright © 2016, 2019, 2020 Eraim Flashner <efraim@flashner.co.il>
0791437f
RW
9;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
10;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
11;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
bdf2dd79 12;;; Copyright © 2016, 2019 Jan Nieuwenhuizen <janneke@gnu.org>
0791437f
RW
13;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
14;;; Copyright © 2017 David Thompson <davet@gnu.org>
f6145358 15;;; Copyright © 2017, 2018, 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
0791437f 16;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
3c986a7d 17;;; Copyright © 2017 Nikita <nikita@n0.is>
0791437f
RW
18;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
19;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
69bb61f1 20;;; Copyright © 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
0791437f
RW
21;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
22;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
cd81199c 23;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
be789065 24;;; Copyright © 2019, 2020 Amar Singh <nly@disroot.org>
f9ec89f4 25;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
3c566eba 26;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
8ffc20ef 27;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
b7e1e556 28;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
c08f235b 29;;; Copyright © 2020 Julien Lepiler <julien@lepiller.eu>
3a71dac0 30;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
d282a82c 31;;; Copyright © 2020 Masaya Tojo <masaya@tojo.tokyo>
c984b70c 32;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com>
a987f128 33;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
d22d129d 34;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
f53c1005 35;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net>
0791437f
RW
36;;;
37;;; This file is part of GNU Guix.
38;;;
39;;; GNU Guix is free software; you can redistribute it and/or modify it
40;;; under the terms of the GNU General Public License as published by
41;;; the Free Software Foundation; either version 3 of the License, or (at
42;;; your option) any later version.
43;;;
44;;; GNU Guix is distributed in the hope that it will be useful, but
45;;; WITHOUT ANY WARRANTY; without even the implied warranty of
46;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47;;; GNU General Public License for more details.
48;;;
49;;; You should have received a copy of the GNU General Public License
50;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
51
52(define-module (gnu packages guile-xyz)
53 #:use-module ((guix licenses) #:prefix license:)
54 #:use-module (gnu packages)
7ff157c1 55 #:use-module (gnu packages algebra)
0791437f
RW
56 #:use-module (gnu packages aspell)
57 #:use-module (gnu packages autotools)
465a951c 58 #:use-module (gnu packages avahi)
0791437f
RW
59 #:use-module (gnu packages base)
60 #:use-module (gnu packages bash)
61 #:use-module (gnu packages compression)
f53c1005 62 #:use-module (gnu packages crypto)
406ef442 63 #:use-module (gnu packages databases)
0791437f 64 #:use-module (gnu packages disk)
15218d4e 65 #:use-module (gnu packages emacs)
5531782d 66 #:use-module (gnu packages emacs-xyz)
0791437f
RW
67 #:use-module (gnu packages gawk)
68 #:use-module (gnu packages gettext)
69 #:use-module (gnu packages gl)
bdf2dd79 70 #:use-module (gnu packages glib)
5531782d 71 #:use-module (gnu packages gnome)
e8c2da41 72 #:use-module (gnu packages gnupg)
0791437f 73 #:use-module (gnu packages gperf)
a987f128 74 #:use-module (gnu packages gstreamer)
bdf2dd79 75 #:use-module (gnu packages gtk)
0791437f
RW
76 #:use-module (gnu packages guile)
77 #:use-module (gnu packages hurd)
78 #:use-module (gnu packages image)
d1a3a8e1 79 #:use-module (gnu packages imagemagick)
0791437f
RW
80 #:use-module (gnu packages libffi)
81 #:use-module (gnu packages libunistring)
82 #:use-module (gnu packages linux)
83 #:use-module (gnu packages man)
84 #:use-module (gnu packages maths)
85 #:use-module (gnu packages multiprecision)
86 #:use-module (gnu packages ncurses)
87 #:use-module (gnu packages networking)
f0de9544 88 #:use-module (gnu packages noweb)
1a37fd1e 89 #:use-module (gnu packages nss)
e8c2da41 90 #:use-module (gnu packages password-utils)
406ef442 91 #:use-module (gnu packages perl)
0791437f
RW
92 #:use-module (gnu packages pkg-config)
93 #:use-module (gnu packages python)
94 #:use-module (gnu packages readline)
95 #:use-module (gnu packages sdl)
69bb61f1 96 #:use-module (gnu packages search)
0791437f
RW
97 #:use-module (gnu packages slang)
98 #:use-module (gnu packages sqlite)
69bb61f1 99 #:use-module (gnu packages swig)
f0de9544 100 #:use-module (gnu packages tex)
0791437f
RW
101 #:use-module (gnu packages texinfo)
102 #:use-module (gnu packages tls)
103 #:use-module (gnu packages version-control)
bdf2dd79 104 #:use-module (gnu packages webkit)
0791437f
RW
105 #:use-module (gnu packages xdisorg)
106 #:use-module (gnu packages xorg)
107 #:use-module (guix packages)
108 #:use-module (guix download)
109 #:use-module (guix git-download)
dec4b3aa 110 #:use-module (guix hg-download)
e4ef0d7c 111 #:use-module (guix build-system glib-or-gtk)
0791437f
RW
112 #:use-module (guix build-system gnu)
113 #:use-module (guix build-system guile)
114 #:use-module (guix utils)
115 #:use-module (ice-9 match)
116 #:use-module ((srfi srfi-1) #:select (alist-delete)))
117
118(define-public artanis
1a37fd1e
RW
119 (package
120 (name "artanis")
121 (version "0.4.1")
122 (source (origin
123 (method url-fetch)
124 (uri (string-append "mirror://gnu/artanis/artanis-"
125 version ".tar.gz"))
126 (sha256
127 (base32
128 "0nnmdfx5xwcc3kck64var7msz7g3qk817d7bv9l159nkmic0v9w4"))
129 (modules '((guix build utils)))
130 (snippet
131 '(begin
132 ;; Unbundle guile-redis and guile-json
133 (delete-file-recursively "artanis/third-party/json.scm")
134 (delete-file-recursively "artanis/third-party/json")
135 (delete-file-recursively "artanis/third-party/redis.scm")
136 (delete-file-recursively "artanis/third-party/redis")
137 (substitute* '("artanis/artanis.scm"
138 "artanis/lpc.scm"
139 "artanis/oht.scm")
140 (("(#:use-module \\()artanis third-party (json\\))" _
141 use-module json)
142 (string-append use-module json)))
143 (substitute* '("artanis/lpc.scm"
144 "artanis/session.scm")
145 (("(#:use-module \\()artanis third-party (redis\\))" _
146 use-module redis)
147 (string-append use-module redis)))
148 (substitute* "artanis/oht.scm"
149 (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)"
150 _ pre json-string post)
151 (string-append pre
152 "scm" json-string
153 post)))
154 (substitute* "artanis/artanis.scm"
155 (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+")
156 ""))
157 #t))))
158 (build-system gnu-build-system)
159 (inputs
160 `(("guile" ,guile-2.2)
161 ("nss" ,nss)))
162 ;; FIXME the bundled csv contains one more exported procedure
163 ;; (sxml->csv-string) than guile-csv. The author is maintainer of both
164 ;; projects.
165 ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
166 (propagated-inputs
d282a82c 167 `(("guile-json" ,guile-json-1) ; This ia already using guile-2.2.
a7a8337b 168 ("guile-readline" ,guile2.2-readline)
d282a82c 169 ("guile-redis" ,guile2.2-redis)))
1a37fd1e
RW
170 (native-inputs
171 `(("bash" ,bash) ;for the `source' builtin
172 ("pkgconfig" ,pkg-config)
173 ("util-linux" ,util-linux))) ;for the `script' command
174 (arguments
175 '(#:make-flags
176 ;; TODO: The documentation must be built with the `docs' target.
177 (let* ((out (assoc-ref %outputs "out"))
178 (scm (string-append out "/share/guile/site/2.2"))
179 (go (string-append out "/lib/guile/2.2/site-ccache")))
180 ;; Don't use (%site-dir) for site paths.
181 (list (string-append "MOD_PATH=" scm)
182 (string-append "MOD_COMPILED_PATH=" go)))
183 #:test-target "test"
184 #:phases
185 (modify-phases %standard-phases
186 (add-after 'unpack 'patch-site-dir
187 (lambda* (#:key outputs #:allow-other-keys)
188 (substitute* "artanis/commands/help.scm"
189 (("\\(%site-dir\\)")
190 (string-append "\""
191 (assoc-ref outputs "out")
192 "/share/guile/site/2.2\"")))))
193 (add-after 'unpack 'patch-reference-to-libnss
194 (lambda* (#:key inputs #:allow-other-keys)
195 (substitute* "artanis/security/nss.scm"
196 (("ffi-binding \"libnss3\"")
197 (string-append
198 "ffi-binding \""
199 (assoc-ref inputs "nss") "/lib/nss/libnss3.so"
200 "\"")))
201 #t))
202 (add-before 'install 'substitute-root-dir
203 (lambda* (#:key outputs #:allow-other-keys)
204 (let ((out (assoc-ref outputs "out")))
205 (substitute* "Makefile" ;ignore the execution of bash.bashrc
206 ((" /etc/bash.bashrc") " /dev/null"))
207 (substitute* "Makefile" ;set the root of config files to OUT
208 ((" /etc") (string-append " " out "/etc")))
209 (mkdir-p (string-append out "/bin")) ;for the `art' executable
210 #t)))
211 (add-after 'install 'wrap-art
212 (lambda* (#:key inputs outputs #:allow-other-keys)
213 (let* ((out (assoc-ref outputs "out"))
214 (bin (string-append out "/bin"))
215 (scm (string-append out "/share/guile/site/2.2"))
216 (go (string-append out "/lib/guile/2.2/site-ccache")))
217 (wrap-program (string-append bin "/art")
218 `("GUILE_LOAD_PATH" ":" prefix
219 (,scm ,(getenv "GUILE_LOAD_PATH")))
220 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
221 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))
222 #t))))))
223 (synopsis "Web application framework written in Guile")
224 (description "GNU Artanis is a web application framework written in Guile
0791437f
RW
225Scheme. A web application framework (WAF) is a software framework that is
226designed to support the development of dynamic websites, web applications, web
227services and web resources. The framework aims to alleviate the overhead
228associated with common activities performed in web development. Artanis
229provides several tools for web development: database access, templating
230frameworks, session management, URL-remapping for RESTful, page caching, and
231more.")
1a37fd1e
RW
232 (home-page "https://www.gnu.org/software/artanis/")
233 (license (list license:gpl3+ license:lgpl3+)))) ;dual license
0791437f
RW
234
235;; There has not been any release yet.
236(define-public guildhall
237 (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778")
238 (revision "1"))
239 (package
240 (name "guildhall")
241 (version (string-append "0-" revision "." (string-take commit 9)))
242 (source (origin
243 (method git-fetch)
244 (uri (git-reference
b0e7b699 245 (url "https://github.com/ijp/guildhall")
0791437f
RW
246 (commit commit)))
247 (file-name (string-append name "-" version "-checkout"))
248 (sha256
249 (base32
250 "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1"))))
251 (build-system gnu-build-system)
252 (arguments
253 `(#:phases
254 (modify-phases %standard-phases
255 ;; Tests fail without this fix because they try to load the bash
256 ;; executable as a Scheme file. See bug report at
257 ;; https://github.com/ijp/guildhall/issues/22
258 (add-after 'unpack 'fix-bug-22
259 (lambda _
260 (substitute* "Makefile.am"
261 (("TESTS_ENVIRONMENT=.*")
262 "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/
263TEST_EXTENSIONS = .scm
264SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE)
265AM_SCM_LOG_FLAGS = --no-auto-compile -s")
266 ;; FIXME: one of the database tests fails for unknown
267 ;; reasons. It does not fail when run outside of Guix.
268 (("tests/database.scm") ""))
269 #t)))))
270 (inputs
271 `(("guile" ,guile-2.0)))
272 (native-inputs
273 `(("zip" ,zip) ; for tests
274 ("autoconf" ,autoconf)
275 ("automake" ,automake)
276 ("texinfo" ,texinfo)))
277 (synopsis "Package manager for Guile")
278 (description
279 "Guildhall is a package manager written for Guile Scheme. A guild is
280an association of independent craftspeople. A guildhall is where they meet.
281This Guildhall aims to make a virtual space for Guile wizards and journeyfolk
282to share code.
283
284On a practical level, Guildhall lets you share Scheme modules and programs
285over the internet, and install code that has been shared by others. Guildhall
286can handle dependencies, so when a program requires several libraries, and
287each of those has further dependencies, all of the prerequisites for the
288program can be installed in one go.")
289 (home-page "https://github.com/ijp/guildhall")
290 (license license:gpl3+))))
291
292(define-public guile-aspell
293 (package
294 (name "guile-aspell")
295 (version "0.4")
296 (source (origin
297 (method url-fetch)
298 (uri (string-append
299 "http://lonelycactus.com/tarball/guile_aspell-"
300 version ".tar.gz"))
301 (sha256
302 (base32
303 "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077"))))
304 (build-system gnu-build-system)
305 (arguments
306 '(#:phases (modify-phases %standard-phases
307 (add-before 'configure 'set-guilesitedir
308 (lambda _
309 (substitute* "Makefile.in"
310 (("^guilesitedir =.*$")
311 "guilesitedir = \
312$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
313 #t))
314 (add-before 'build 'set-libaspell-file-name
315 (lambda* (#:key inputs #:allow-other-keys)
316 (let ((aspell (assoc-ref inputs "aspell")))
317 (substitute* "aspell.scm"
318 (("\"libaspell\\.so\"")
319 (string-append "\"" aspell
320 "/lib/libaspell\"")))
321 #t))))))
322 (native-inputs `(("pkg-config" ,pkg-config)))
323 (inputs `(("guile" ,guile-2.2)
324 ("aspell" ,aspell)))
325 (home-page "https://github.com/spk121/guile-aspell")
326 (synopsis "Spell-checking from Guile")
327 (description
328 "guile-aspell is a Guile Scheme library for comparing a string against a
329dictionary and suggesting spelling corrections.")
330 (license license:gpl3+)))
331
332(define-public guile-bash
333 ;; This project is currently retired. It was initially announced here:
334 ;; <https://lists.gnu.org/archive/html/guile-user/2015-02/msg00003.html>.
335 (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469")
336 (revision "0"))
337 (package
338 (name "guile-bash")
339 (version (string-append "0.1.6-" revision "." (string-take commit 7)))
340 (home-page
341 "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git")
342 (source (origin
343 (method git-fetch)
344 (uri (git-reference
345 (commit commit)
346 (url home-page)))
347 (sha256
348 (base32
349 "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p"))
350 (file-name (string-append name "-" version "-checkout"))))
351 (build-system gnu-build-system)
352 (arguments
353 '(#:configure-flags
354 ;; Add -I to match 'bash.pc' of Bash 4.4.
355 (list (string-append "CPPFLAGS=-I"
356 (assoc-ref %build-inputs "bash:include")
357 "/include/bash/include")
358
359 ;; The '.a' file is useless.
360 "--disable-static"
361
362 ;; Install 'lib/bash' as Bash 4.4 expects.
363 (string-append "--libdir=" (assoc-ref %outputs "out")
364 "/lib/bash"))))
365 (native-inputs `(("pkg-config" ,pkg-config)
366 ("autoconf" ,autoconf-wrapper)
367 ("automake" ,automake)
368 ("libtool" ,libtool)
369 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
370 ("gettext" ,gettext-minimal)
371
372 ;; Bash with loadable module support, for the test
373 ;; suite.
374 ("bash-full" ,bash)))
375 (inputs `(("guile" ,guile-2.0)
376 ("bash:include" ,bash "include")))
377 (synopsis "Extend Bash using Guile")
378 (description
379 "Guile-Bash provides a shared library and set of Guile modules,
380allowing you to extend Bash in Scheme. Scheme interfaces allow you to access
381the following aspects of Bash:
382
383@itemize
384@item aliases;
385@item setting and getting Bash variables;
386@item creating dynamic variables;
387@item creating Bash functions with a Scheme implementation;
388@item reader macro for output capturing;
389@item reader macro for evaluating raw Bash commands.
390@end itemize
391
392To enable it, run:
393
394@example
395enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm
396@end example
397
398and then run @command{scm example.scm}.")
399 (license license:gpl3+))))
400
401(define-public guile-8sync
402 (package
403 (name "guile-8sync")
404 (version "0.4.2")
405 (source (origin
406 (method url-fetch)
407 (uri (string-append "mirror://gnu/8sync/8sync-" version
408 ".tar.gz"))
409 (sha256
410 (base32
411 "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw"))))
412 (build-system gnu-build-system)
413 (native-inputs `(("autoconf" ,autoconf)
414 ("automake" ,automake)
415 ("guile" ,guile-2.2)
416 ("pkg-config" ,pkg-config)
417 ("texinfo" ,texinfo)))
418 (arguments
419 `(#:phases (modify-phases %standard-phases
420 (add-before 'configure 'setenv
421 (lambda _
422 ;; quiet warnings
423 (setenv "GUILE_AUTO_COMPILE" "0")
424 #t)))))
425 (home-page "https://gnu.org/s/8sync/")
426 (synopsis "Asynchronous actor model library for Guile")
427 (description
428 "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming
429library for GNU Guile based on the actor model.
430
431Note that 8sync is only available for Guile 2.2.")
eee4173c 432 (properties '((upstream-name . "8sync")))
0791437f
RW
433 (license license:lgpl3+)))
434
435(define-public guile-daemon
436 (package
437 (name "guile-daemon")
f975f82d 438 (version "0.1.3")
0791437f
RW
439 (source (origin
440 (method url-fetch)
441 (uri (string-append "https://github.com/alezost/" name
442 "/releases/download/v" version
443 "/" name "-" version ".tar.gz"))
444 (sha256
445 (base32
f975f82d 446 "08gaqrgjlly9k5si72vvpbr4xhq5v52l5ma5y6a7spid5dd057cy"))))
0791437f
RW
447 (build-system gnu-build-system)
448 (native-inputs
449 `(("pkg-config" ,pkg-config)))
450 (inputs
451 `(("guile" ,guile-2.2)))
452 (home-page "https://github.com/alezost/guile-daemon")
453 (synopsis "Evaluate code in a running Guile process")
454 (description
455 "Guile-Daemon is a small Guile program that loads your initial
456configuration file, and then reads and evaluates Guile expressions that
457you send to a FIFO file.")
458 (license license:gpl3+)))
459
460(define-public guile-dsv
461 (package
462 (name "guile-dsv")
14b92004 463 (version "0.3.0")
0791437f
RW
464 (source (origin
465 (method git-fetch)
466 (uri (git-reference
467 (url "https://github.com/artyom-poptsov/guile-dsv")
14b92004 468 (commit "6c867915dc4198eacc548a4834ef0e1aef852795")))
0791437f
RW
469 (file-name (string-append name "-" version "-checkout"))
470 (sha256
471 (base32
14b92004 472 "1mxbbcsmbjfnh4yydqz44ihbkdnzdwz38xanaam128arlb7hwr8n"))))
0791437f
RW
473 (build-system gnu-build-system)
474 (native-inputs
475 `(("autoconf" ,autoconf)
476 ("automake" ,automake)
477 ("pkg-config" ,pkg-config)
478 ("texinfo" ,texinfo)))
f81ce752
JH
479 (inputs `(("guile" ,guile-3.0)))
480 (propagated-inputs `(("guile-lib" ,guile-lib)))
0791437f 481 (arguments
b7e1e556
JH
482 `(#:modules (((guix build guile-build-system)
483 #:select (target-guile-effective-version))
484 ,@%gnu-build-system-modules)
485 #:imported-modules ((guix build guile-build-system)
486 ,@%gnu-build-system-modules)
487 #:phases (modify-phases %standard-phases
f81ce752
JH
488 ;; Support Guile 3.0 in configure from upstream commit
489 ;; 4c724577ccf19bb88580f72f2f6b166a0447ce3f
490 (add-before 'bootstrap 'configure-support-guile3.0
491 (lambda _
492 (substitute* "configure.ac"
493 (("GUILE_PKG.*")
494 "GUILE_PKG([3.0 2.0 2.2])"))
495 #t))
0791437f
RW
496 (add-before 'configure 'set-guilesitedir
497 (lambda _
498 (substitute* "Makefile.in"
499 (("^guilesitedir =.*$")
500 "guilesitedir = \
501$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
502 (substitute* "modules/Makefile.in"
503 (("^guilesitedir =.*$")
504 "guilesitedir = \
505$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
506 (substitute* "modules/dsv/Makefile.in"
507 (("^guilesitedir =.*$")
508 "guilesitedir = \
509$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
b7e1e556
JH
510 #t))
511 (add-after 'install 'wrap-program
512 (lambda* (#:key inputs outputs #:allow-other-keys)
513 (let* ((out (assoc-ref outputs "out"))
514 (bin (string-append out "/bin"))
f81ce752 515 (guile-lib (assoc-ref inputs "guile-lib"))
b7e1e556
JH
516 (version (target-guile-effective-version))
517 (scm (string-append "/share/guile/site/"
518 version))
519 (go (string-append "/lib/guile/"
520 version "/site-ccache")))
521 (wrap-program (string-append bin "/dsv")
522 `("GUILE_LOAD_PATH" prefix
523 (,(string-append out scm)
524 ,(string-append guile-lib scm)))
525 `("GUILE_LOAD_COMPILED_PATH" prefix
526 (,(string-append out go)
527 ,(string-append guile-lib go)))))
0791437f
RW
528 #t)))))
529 (home-page "https://github.com/artyom-poptsov/guile-dsv")
530 (synopsis "DSV module for Guile")
531 (description
532 "Guile-DSV is a GNU Guile module for working with the
533delimiter-separated values (DSV) data format. Guile-DSV supports the
534Unix-style DSV format and RFC 4180 format.")
535 (license license:gpl3+)))
536
f81ce752
JH
537(define-public guile2.2-dsv
538 (package
539 (inherit guile-dsv)
540 (name "guile2.2-dsv")
541 (inputs `(("guile" ,guile-2.2)))
542 (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
543
0791437f
RW
544(define-public guile-fibers
545 (package
546 (name "guile-fibers")
547 (version "1.0.0")
548 (source (origin
549 (method url-fetch)
550 (uri (string-append "https://wingolog.org/pub/fibers/fibers-"
551 version ".tar.gz"))
552 (sha256
553 (base32
9e016129
LC
554 "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))
555 (modules '((guix build utils)))
556 (snippet
557 '(begin
558 ;; Allow builds with Guile 3.0.
559 (substitute* "configure"
560 (("search=\"2\\.2\"")
561 "search=\"3.0 2.2\""))
562
563 ;; Explicitly include system headers rather than relying on
564 ;; <libguile.h> to do it for us.
565 (substitute* "epoll.c"
566 (("#include.*libguile\\.h.*$" all)
567 (string-append "#include <unistd.h>\n"
568 "#include <string.h>\n"
569 all "\n")))
570
571 ;; Import (ice-9 threads) for 'current-processor-count'.
572 (substitute* "tests/channels.scm"
573 (("#:use-module \\(fibers\\)")
574 (string-append "#:use-module (fibers)\n"
575 "#:use-module (ice-9 threads)\n")))
9af90aaf
CR
576 #t))
577 (patches
578 ;; fixes a resource leak that causes crashes in the tests
579 (search-patches "guile-fibers-destroy-peer-schedulers.patch"))))
0791437f
RW
580 (build-system gnu-build-system)
581 (arguments
b6bee63b
LC
582 '(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0.
583 #:configure-flags '("CFLAGS=-Wno-error=deprecated-declarations")
584 #:phases (modify-phases %standard-phases
0791437f
RW
585 (add-after 'install 'mode-guile-objects
586 (lambda* (#:key outputs #:allow-other-keys)
587 ;; .go files are installed to "lib/guile/X.Y/cache".
588 ;; This phase moves them to "…/site-ccache".
589 (let* ((out (assoc-ref outputs "out"))
590 (lib (string-append out "/lib/guile"))
591 (old (car (find-files lib "^ccache$"
592 #:directories? #t)))
593 (new (string-append (dirname old)
594 "/site-ccache")))
595 (rename-file old new)
596 #t))))))
597 (native-inputs
598 `(("texinfo" ,texinfo)
599 ("pkg-config" ,pkg-config)))
600 (inputs
b6bee63b 601 `(("guile" ,guile-3.0)))
0791437f
RW
602 (synopsis "Lightweight concurrency facility for Guile")
603 (description
604 "Fibers is a Guile library that implements a a lightweight concurrency
605facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is
606like a \"goroutine\" from the Go language: a lightweight thread-like
607abstraction. Systems built with Fibers can scale up to millions of concurrent
608fibers, tens of thousands of concurrent socket connections, and many parallel
609cores. The Fibers library also provides Concurrent ML-like channels for
610communication between fibers.
611
612Note that Fibers makes use of some Guile 2.1/2.2-specific features and
613is not available for Guile 2.0.")
614 (home-page "https://github.com/wingo/fibers")
615 (license license:lgpl3+)))
616
b6bee63b 617(define-public guile2.0-fibers
9e016129
LC
618 (package
619 (inherit guile-fibers)
b6bee63b
LC
620 (name "guile2.2-fibers")
621 (inputs `(("guile" ,guile-2.2)))))
622
623(define-public guile3.0-fibers
624 (deprecated-package "guile3.0-fibers" guile-fibers))
9e016129 625
d22d129d
LP
626(define-public guile-filesystem
627 (package
628 (name "guile-filesystem")
629 (version "0.1.0")
630 (source (origin
631 (method git-fetch)
632 (uri (git-reference
633 (url "https://gitlab.com/leoprikler/guile-filesystem.git")
634 (commit version)))
635 (file-name (git-file-name name version))
636 (sha256
637 (base32
638 "1shmkc0y9r2sj3kw7hrsnamnp7y8xifkhf3m3rnfxczqg63k67vy"))))
639 (build-system gnu-build-system)
640 (native-inputs
641 `(("autoconf" ,autoconf-wrapper)
642 ("automake" ,automake)
643 ("pkg-config" ,pkg-config)
644 ("texinfo" ,texinfo)))
645 (inputs
646 `(("guile" ,guile-3.0)))
647 (home-page "https://gitlab.com/leoprikler/guile-filesystem")
648 (synopsis "Complementary library to Guile's built-in file system procedures")
649 (description "@code{guile-filesystem} provides a set of utility functions,
650that augment Guile's support for handling files and their names.")
651 (license license:lgpl3+)))
652
653(define-public guile2.0-filesystem
654 (package
655 (inherit guile-filesystem)
656 (name "guile2.0-filesystem")
657 (inputs `(("guile" ,guile-2.0)))))
658
659(define-public guile2.2-filesystem
660 (package
661 (inherit guile-filesystem)
662 (name "guile2.2-filesystem")
663 (inputs `(("guile" ,guile-2.2)))))
664
0791437f
RW
665(define-public guile-syntax-highlight
666 (package
667 (name "guile-syntax-highlight")
668 (version "0.1")
669 (source (origin
670 (method url-fetch)
671 (uri (string-append "https://files.dthompson.us/"
672 "guile-syntax-highlight/"
673 "guile-syntax-highlight-"
674 version ".tar.gz"))
675 (sha256
676 (base32
fb8a77f4
LC
677 "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi"))
678 (modules '((guix build utils)))
679 (snippet
680 '(begin
681 ;; Allow builds with Guile 3.0.
682 (substitute* "configure"
683 (("2\\.2 2\\.0")
684 "3.0 2.2 2.0"))
685 #t))))
0791437f
RW
686 (build-system gnu-build-system)
687 (native-inputs
688 `(("pkg-config" ,pkg-config)))
689 (inputs
b6bee63b 690 `(("guile" ,guile-3.0)))
0791437f
RW
691 (synopsis "General-purpose syntax highlighter for GNU Guile")
692 (description "Guile-syntax-highlight is a general-purpose syntax
693highlighting library for GNU Guile. It can parse code written in various
694programming languages into a simple s-expression that can be converted to
695HTML (via SXML) or any other format for rendering.")
02e052ba 696 (home-page "https://dthompson.us/projects/guile-syntax-highlight.html")
0791437f
RW
697 (license license:lgpl3+)))
698
b6bee63b 699(define-public guile2.2-syntax-highlight
fb8a77f4
LC
700 (package
701 (inherit guile-syntax-highlight)
b6bee63b
LC
702 (name "guile2.2-syntax-highlight")
703 (inputs `(("guile" ,guile-2.2)))))
704
705(define-public guile3.0-syntax-highlight
706 (deprecated-package "guile3.0-syntax-highlight" guile-syntax-highlight))
fb8a77f4 707
0791437f
RW
708(define-public guile-sjson
709 (package
710 (name "guile-sjson")
711 (version "0.2.1")
712 (source (origin
713 (method url-fetch)
714 (uri (string-append "https://dustycloud.org/misc/sjson-" version
715 ".tar.gz"))
716 (sha256
717 (base32
eef54583
RW
718 "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))
719 (modules '((guix build utils)))
720 (snippet
721 '(begin
722 ;; Allow builds with Guile 3.0.
723 (substitute* "configure"
724 (("2\\.2 2\\.0")
725 "3.0 2.2 2.0"))
726 #t))))
0791437f
RW
727 (build-system gnu-build-system)
728 (native-inputs
729 `(("autoconf" ,autoconf)
730 ("automake" ,automake)
731 ("pkg-config" ,pkg-config)))
732 (inputs
eef54583 733 `(("guile" ,guile-3.0)))
0791437f
RW
734 (home-page "https://gitlab.com/dustyweb/guile-sjson")
735 (synopsis "S-expression based json reader/writer for Guile")
736 (description "guile-sjson is a json reader/writer for Guile.
737It has a nice, simple s-expression based syntax.")
738 (license license:lgpl3+)))
739
eef54583
RW
740(define-public guile2.2-sjson
741 (package
742 (inherit guile-sjson)
743 (name "guile2.2-sjson")
744 (inputs `(("guile" ,guile-2.2)))))
745
61dafdc0 746(define-public guile-squee
50812aae
MO
747 (let ((commit "c1497a216e881cfde39d6aa7c73d0bf6b497c89b")
748 (revision "2"))
61dafdc0
CB
749 (package
750 (name "guile-squee")
751 (version (string-append "0-" revision "." (string-take commit 7)))
752 (source (origin
753 (method git-fetch)
754 (uri (git-reference
755 (url "https://notabug.org/cwebber/guile-squee.git")
756 (commit commit)))
757 (file-name (git-file-name name version))
758 (sha256
759 (base32
50812aae 760 "1alskrplnyl1n5wb39drn72cwplp47a8cpdd1n9cdnw3jhk5p12p"))))
61dafdc0
CB
761 (build-system guile-build-system)
762 (arguments
763 '(#:phases
764 (modify-phases %standard-phases
765 (add-after 'unpack 'patch
766 (lambda* (#:key inputs #:allow-other-keys)
767 (substitute* "squee.scm"
768 (("dynamic-link \"libpq\"")
769 (string-append
770 "dynamic-link \""
771 (assoc-ref inputs "postgresql") "/lib/libpq.so"
772 "\"")))
773 #t)))))
774 (inputs
775 `(("postgresql" ,postgresql)))
776 (native-inputs
ca03dca5 777 `(("guile" ,guile-3.0)))
61dafdc0
CB
778 (home-page "https://notabug.org/cwebber/guile-squee")
779 (synopsis "Connect to PostgreSQL using Guile")
780 (description
781 "@code{squee} is a Guile library for connecting to PostgreSQL databases
782using Guile's foreign function interface.")
6fd72f70 783 (license license:lgpl3+))))
61dafdc0 784
ca03dca5 785(define-public guile2.2-squee
945a73d8
CB
786 (package
787 (inherit guile-squee)
ca03dca5
LC
788 (name "guile2.2-squee")
789 (native-inputs `(("guile" ,guile-2.2)
cfe35814
CB
790 ,@(alist-delete "guile"
791 (package-native-inputs guile-squee))))))
945a73d8 792
ca03dca5
LC
793(define-public guile3.0-squee
794 (deprecated-package "guile3.0-squee" guile-squee))
795
0791437f
RW
796(define-public guile-colorized
797 (package
798 (name "guile-colorized")
799 (version "0.1")
1340ce28
TGR
800 (source
801 (origin
802 (method git-fetch)
803 (uri (git-reference
55f4282e 804 (url "https://gitlab.com/NalaGinrut/guile-colorized.git")
1340ce28
TGR
805 (commit (string-append "v" version))))
806 (file-name (git-file-name name version))
807 (sha256
808 (base32 "10mv8c63159r3qvwwdvsgnsvdg7nc2ghak85zapwqpv4ywrqp9zc"))))
0791437f
RW
809 (build-system guile-build-system)
810 (native-inputs
b6bee63b 811 `(("guile" ,guile-3.0)))
55f4282e 812 (home-page "https://gitlab.com/NalaGinrut/guile-colorized")
0791437f
RW
813 (synopsis "Colorized REPL for Guile")
814 (description
815 "Guile-colorized provides you with a colorized REPL for GNU Guile.")
816 (license license:gpl3+)))
817
b6bee63b 818(define-public guile2.2-colorized
fc870a0d
LC
819 (package
820 (inherit guile-colorized)
b6bee63b
LC
821 (name "guile2.2-colorized")
822 (native-inputs `(("guile" ,guile-2.2)))))
823
824(define-public guile3.0-colorized
825 (deprecated-package "guile3.0-colorized" guile-colorized))
fc870a0d 826
0791437f
RW
827(define-public guile-pfds
828 (package
829 (name "guile-pfds")
830 (version "0.3")
831 (home-page "https://github.com/ijp/pfds")
832 (source (origin
833 (method git-fetch)
834 (uri (git-reference
835 (url home-page)
836 (commit (string-append "v" version))))
837 (sha256
838 (base32
839 "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
840 (file-name (string-append name "-" version "-checkout"))))
841 (build-system guile-build-system)
842 (arguments
843 '(#:source-directory "src"
45231d17 844 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
0791437f
RW
845 #:phases (modify-phases %standard-phases
846 (add-after 'unpack 'move-files-around
847 (lambda _
848 ;; Move files under a pfds/ directory to reflect the
849 ;; module hierarchy.
850 (mkdir-p "src/pfds")
851 (for-each (lambda (file)
852 (rename-file file
45231d17 853 (string-append "src/pfds/" file)))
0791437f
RW
854 '("bbtrees.sls"
855 "deques"
856 "deques.sls"
857 "dlists.sls"
858 "fingertrees.sls"
859 "hamts.sls"
860 "heaps.sls"
861 "private"
862 "psqs.sls"
863 "queues"
864 "queues.sls"
865 "sequences.sls"
866 "sets.sls"))
0791437f
RW
867 #t)))))
868 (native-inputs
b6bee63b 869 `(("guile" ,guile-3.0)))
0791437f
RW
870 (synopsis "Purely functional data structures for Guile")
871 (description
872 "This package provides purely functional data structures written in R6RS
873Scheme and compiled for Guile. It has been tested with Racket, Guile 2,
874Vicare Scheme and IronScheme. Right now it contains:
875
876@itemize
877@item queues
878@item deques
879@item bbtrees
880@item sets
881@item dlists
882@item priority search queues (PSQs)
883@item finger trees
884@item sequences
885@item heaps
886@item hash array mapped tries (HAMTs).
887@end itemize\n")
888 (license license:bsd-3)))
889
15c3fe24 890(define-public guile-prometheus
77667e2e
CB
891 (let ((commit "35dc26c0ea44c3d70f1819f240d84e2cbb4b7b4c")
892 (revision "5"))
15c3fe24
CB
893 (package
894 (name "guile-prometheus")
895 (version (git-version "0" revision commit))
896 (source (origin
897 (method git-fetch)
898 (uri (git-reference
899 (url "https://git.cbaines.net/git/guile/prometheus")
900 (commit commit)))
901 (sha256
902 (base32
77667e2e 903 "07822jj4appw37lf444kc4xlgl7nm64mgldag56072l55kwashgb"))
15c3fe24
CB
904 (file-name (string-append name "-" version "-checkout"))))
905 (build-system gnu-build-system)
906 (native-inputs
907 `(("pkg-config" ,pkg-config)
908 ("autoconf" ,autoconf)
b452f1b1
CB
909 ("automake" ,automake)
910 ("guile" ,guile-3.0)))
15c3fe24
CB
911 (inputs
912 `(("guile" ,guile-3.0)))
913 (home-page "https://git.cbaines.net/guile/prometheus")
914 (synopsis "Prometheus client library for Guile")
915 (description
916 "This Guile library provides instrumentation code intended to be used
917with the Prometheus time series service. Counter, gauge and histogram metric
918types are supported.")
919 (license license:gpl3+))))
920
b6bee63b 921(define-public guile2.2-pfds
77c95ee6
RW
922 (package
923 (inherit guile-pfds)
b6bee63b
LC
924 (name "guile2.2-pfds")
925 (native-inputs `(("guile" ,guile-2.2)))
77c95ee6 926 (arguments
0dd1e277
RW
927 (substitute-keyword-arguments (package-arguments guile-pfds)
928 ((#:phases phases)
929 `(modify-phases ,phases
45231d17
MB
930 (delete 'work-around-guile-bug)
931 (add-after 'move-files-around 'sls->scm
932 (lambda _
933 ;; In Guile <= 2.2.4, there's no way to tell 'guild
934 ;; compile' to accept the ".sls" extension. So...
935 (for-each (lambda (file)
936 (rename-file file
937 (string-append
938 (string-drop-right file 4)
939 ".scm")))
940 (find-files "." "\\.sls$"))
941 #t))))))))
b6bee63b
LC
942
943(define-public guile3.0-pfds
944 (deprecated-package "guile3.0-pfds" guile-pfds))
77c95ee6 945
0791437f
RW
946(define-public guile-aa-tree
947 (package
948 (name "guile-aa-tree")
949 (version "3.1.1")
950 (source (origin
951 (method url-fetch)
952 (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
953 version ".tar.gz"))
954 (sha256
955 (base32
956 "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
957 (build-system guile-build-system)
958 (native-inputs `(("guile" ,guile-2.2)))
959 ;; https://savannah.nongnu.org/projects/guile-aa-tree
960 (home-page "https://qlfiles.net/guile-aa-tree/")
961 (synopsis "AA tree data structure for Guile")
962 (description
963 "This package provides an implementation of @dfn{AA trees}, a
964self-balancing binary tree data structure, for Guile. It ensure @math{O(log
965n)} worst case performance for core operations. The module provides
966non-mutating insert, delete, and search operations, with support for
967convenient nested tree operations.")
968 (license license:gpl3+)))
969
970(define-public guile-simple-zmq
edc2acb7
MO
971 (let ((commit "f8b7d81afb38525750f8818ed2956ca18c828ee8")
972 (revision "5"))
0791437f
RW
973 (package
974 (name "guile-simple-zmq")
975 (version (git-version "0.0.0" revision commit))
976 (source
977 (origin
978 (method git-fetch)
979 (uri (git-reference
980 (url "https://github.com/jerry40/guile-simple-zmq")
981 (commit commit)))
982 (sha256
983 (base32
edc2acb7 984 "1gpzlpcq7bxw7sxyrg8zslwb3631vizw56lgg1aavw4gafh0hxb3"))
0791437f
RW
985 (file-name (git-file-name name version))))
986 (build-system guile-build-system)
987 (arguments
988 `(#:source-directory "src"
989 #:phases (modify-phases %standard-phases
990 (add-after 'unpack 'set-libzmq-file-name
991 (lambda* (#:key inputs #:allow-other-keys)
992 (substitute* "src/simple-zmq.scm"
993 (("\\(dynamic-link \"libzmq\"\\)")
994 (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
995 (assoc-ref inputs "zeromq"))))
996 #t)))))
997 (native-inputs
b6bee63b 998 `(("guile" ,guile-3.0)))
0791437f
RW
999 (inputs
1000 `(("zeromq" ,zeromq)))
1001 (home-page "https://github.com/jerry40/guile-simple-zmq")
1002 (synopsis "Guile wrapper over ZeroMQ library")
1003 (description
1004 "This package provides a Guile programming interface to the ZeroMQ
1005messaging library.")
1006 (license license:gpl3+))))
1007
b6bee63b 1008(define-public guile2.2-simple-zmq
015bb1c8
LC
1009 (package
1010 (inherit guile-simple-zmq)
b6bee63b
LC
1011 (name "guile2.2-simple-zmq")
1012 (native-inputs `(("guile" ,guile-2.2)))))
1013
1014(define-public guile3.0-simple-zmq
1015 (deprecated-package "guile3.0-simple-zmq" guile-simple-zmq))
015bb1c8 1016
0791437f 1017(define-public jupyter-guile-kernel
c984b70c
JG
1018 (let ((commit "f25fb90b95529b17a006a807bd04e6aee12ea304")
1019 (revision "2"))
0791437f
RW
1020 (package
1021 (name "jupyter-guile-kernel")
1022 (version (git-version "0.0.0" revision commit))
1023 (source
1024 (origin
1025 (method git-fetch)
1026 (uri (git-reference
1027 (url "https://github.com/jerry40/guile-kernel")
1028 (commit commit)))
f1d4d79f 1029 (file-name (git-file-name name version))
0791437f
RW
1030 (sha256
1031 (base32
c984b70c 1032 "0zr1fasdb2yv9kn21yll993y9higqss4jnfs030ndhjb93raa9sr"))))
0791437f
RW
1033 (build-system guile-build-system)
1034 (arguments
1035 '(#:phases (modify-phases %standard-phases
1036 (add-after 'unpack 'set-openssl-file-name
1037 (lambda* (#:key inputs #:allow-other-keys)
1038 ;; Record the absolute file name of the 'openssl'
1039 ;; command.
1040 (substitute* "src/hmac.scm"
1041 (("openssl")
1042 (string-append (assoc-ref inputs "openssl")
1043 "/bin/openssl")))
1044 #t))
1045
1046 ;; XXX: The code uses 'include' to include its own source
1047 ;; files, and "-L src" isn't enough in this case.
1048 (add-before 'build 'chdir
1049 (lambda _ (chdir "src") #t))
1050 (add-after 'build 'chdir-back
1051 (lambda _ (chdir "..") #t))
1052
1053 (add-after 'install 'install-kernel
1054 (lambda* (#:key inputs outputs #:allow-other-keys)
1055 (let* ((out (assoc-ref outputs "out"))
1056 (json (assoc-ref inputs "guile-json"))
1057 (zmq (assoc-ref inputs "guile-simple-zmq"))
1058 (deps (list json zmq))
1059 (dir (string-append
1060 out "/share/jupyter/kernels/guile"))
1061 (effective (target-guile-effective-version)))
1062 ;; Install kernel.
1063 (install-file "src/kernel.json" dir)
1064
1065 ;; Fix hard-coded file name in the kernel.
1066 (substitute* (string-append dir "/kernel.json")
c984b70c 1067 (("/usr/local/.*/guile-jupyter-kernel.scm")
0791437f
RW
1068 (string-append out "/share/guile/site/"
1069 (target-guile-effective-version)
1070 "/guile-jupyter-kernel.scm"))
1071 (("\"guile\"")
1072 (string-append "\"" (assoc-ref inputs "guile")
1073 "/bin/guile\""))
1074 (("-s")
1075 ;; Add '-L' and '-C' flags so that the kernel
1076 ;; finds its dependencies.
1077 (let ((-L (map (lambda (item)
1078 (string-append "\"" item
1079 "/share/guile/site/"
1080 effective "\""))
1081 deps))
1082 (-C (map (lambda (item)
1083 (string-append "\"" item
1084 "/lib/guile/"
1085 effective
1086 "/site-ccache\""))
1087 deps)))
c984b70c
JG
1088 (string-append "--no-auto-compile\""
1089 (string-join -L ", \"-L\", "
1090 'prefix)
1091 (string-join -C ", \"-C\", "
1092 'prefix)
1093 ", \"-s"))))
0791437f
RW
1094 #t))))))
1095 (inputs
1096 `(("openssl" ,openssl)
c984b70c
JG
1097 ("guile" ,guile-3.0)
1098 ("guile-json" ,guile-json-3)
0791437f
RW
1099 ("guile-simple-zmq" ,guile-simple-zmq)))
1100 (synopsis "Guile kernel for the Jupyter Notebook")
1101 (description
1102 "This package provides a Guile 2.x kernel for the Jupyter Notebook. It
1103allows users to interact with the Guile REPL through Jupyter.")
1104 (home-page "https://github.com/jerry40/guile-kernel")
1105 (license license:gpl3+))))
1106
1107(define-public guile-sparql
1108 (package
1109 (name "guile-sparql")
22213308 1110 (version "0.0.8")
0791437f
RW
1111 (source (origin
1112 (method url-fetch)
1113 (uri (string-append
1114 "https://github.com/roelj/guile-sparql/releases/download/"
1115 version "/guile-sparql-" version ".tar.gz"))
1116 (sha256
22213308 1117 (base32 "1jf4972f9fpm0rd865xpnc9mzl3xv6vhfnp0iygadydy905z9nln"))))
0791437f 1118 (build-system gnu-build-system)
0791437f
RW
1119 (native-inputs
1120 `(("pkg-config" ,pkg-config)))
1121 (inputs
22213308 1122 `(("guile" ,guile-3.0)))
0791437f
RW
1123 (home-page "https://github.com/roelj/guile-sparql")
1124 (synopsis "SPARQL module for Guile")
1125 (description "This package provides the functionality to query a SPARQL
1126endpoint. Additionally, it provides an interface to write SPARQL queries
1127using S-expressions.")
1128 (license license:gpl3+)))
1129
1130(define-public guile-debbugs
1131 (package
1132 (name "guile-debbugs")
5144f542 1133 (version "0.0.3")
0791437f
RW
1134 (source (origin
1135 (method url-fetch)
1136 (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
1137 version ".tar.gz"))
1138 (sha256
1139 (base32
5144f542 1140 "1cc63nw3xdfjrfk8c58r6d5lidmfq5cpqcy32yd5xp81yccprvn9"))))
0791437f 1141 (build-system gnu-build-system)
5144f542
RW
1142 (propagated-inputs
1143 `(("guile-email" ,guile-email)))
0791437f 1144 (native-inputs
cd23eb06 1145 `(("guile" ,guile-3.0)
0791437f
RW
1146 ("pkg-config" ,pkg-config)))
1147 (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
1148 (synopsis "Guile interface to the Debbugs bug tracking service")
1149 (description
1150 "This package provides a Guile library to communicate with a Debbugs bug
1151tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
1152 (license license:gpl3+)))
1153
1154(define-public guile-email
50771f5b
AI
1155 (package
1156 (name "guile-email")
223cb7c6 1157 (version "0.2.2")
50771f5b
AI
1158 (source
1159 (origin
1160 (method url-fetch)
1161 (uri (string-append
db18d87a
AI
1162 "https://guile-email.systemreboot.net/releases/guile-email-"
1163 version ".tar.lz"))
50771f5b
AI
1164 (sha256
1165 (base32
223cb7c6 1166 "1rc8r0fgvflnyq5ckl7ii8sghpsgpkzxa8vskjr1ak2kyar6m35k"))))
50771f5b
AI
1167 (build-system gnu-build-system)
1168 (native-inputs
1169 `(("pkg-config" ,pkg-config)
db18d87a 1170 ("lzip" ,lzip)))
50771f5b 1171 (inputs
ca6c1509 1172 `(("guile" ,guile-3.0)))
db18d87a 1173 (arguments
2c33a849 1174 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
db18d87a 1175 (home-page "https://guile-email.systemreboot.net")
50771f5b 1176 (synopsis "Guile email parser")
db18d87a
AI
1177 (description "guile-email is a collection of email utilities implemented
1178in pure guile. It supports parsing MIME (Multipurpose Internet Mail
1179Extensions) compliant email messages and reading emails from the mbox
1180format.")
50771f5b 1181 (license license:agpl3+)))
0791437f 1182
8b3b1f34
RW
1183(define-public guile-email-latest
1184 (let ((commit "03e9cacb826bd4a56d3d834fe5526e497d7c57eb")
1185 (revision "1"))
1186 (package
1187 (inherit guile-email)
1188 (name "guile-email-latest")
1189 (version (git-version "0.2.2" revision commit))
1190 (source
1191 (origin
1192 (method git-fetch)
1193 (uri (git-reference
1194 (url "https://git.systemreboot.net/guile-email")
1195 (commit commit)))
1196 (file-name (git-file-name name version))
1197 (sha256
1198 (base32
1199 "1a15gdlbmzx220xg82fgyd0zk2wqn13ddmzs13nhgfzx8d5cns68"))))
1200 (native-inputs
1201 `(("pkg-config" ,pkg-config)
1202 ("autoconf" ,autoconf)
1203 ("automake" ,automake)
1204 ("texinfo" ,texinfo))))))
1205
ca6c1509 1206(define-public guile2.2-email
63a847cb
CB
1207 (package
1208 (inherit guile-email)
ca6c1509
LC
1209 (name "guile2.2-email")
1210 (inputs `(("guile" ,guile-2.2)
63a847cb
CB
1211 ,@(alist-delete "guile" (package-inputs guile-email))))))
1212
ca6c1509
LC
1213(define-public guile3.0-email
1214 (deprecated-package "guile3.0-email" guile-email))
1215
0791437f 1216(define-public guile-newt
442a11f6
MO
1217 (package
1218 (name "guile-newt")
f52c1f5f 1219 (version "0.0.2")
442a11f6
MO
1220 (source (origin
1221 (method git-fetch)
1222 (uri (git-reference
1223 (url "https://gitlab.com/mothacehe/guile-newt")
1224 (commit version)))
1225 (file-name (git-file-name name version))
1226 (sha256
1227 (base32
f52c1f5f 1228 "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09"))))
442a11f6
MO
1229 (build-system gnu-build-system)
1230 (arguments
1231 '(#:make-flags
1232 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1233 (inputs
b6bee63b 1234 `(("guile" ,guile-3.0)
442a11f6
MO
1235 ("newt" ,newt)))
1236 (native-inputs
1237 `(("autoconf" ,autoconf)
1238 ("automake" ,automake)
1239 ("pkg-config" ,pkg-config)))
1240 (synopsis "Guile bindings to Newt")
1241 (description
1242 "This package provides bindings for Newt, a programming library for
0791437f
RW
1243color text mode, widget based user interfaces. The bindings are written in pure
1244Scheme by using Guile’s foreign function interface.")
442a11f6
MO
1245 (home-page "https://gitlab.com/mothacehe/guile-newt")
1246 (license license:gpl3+)))
0791437f 1247
b6bee63b 1248(define-public guile2.2-newt
e7fc7746
LC
1249 (package
1250 (inherit guile-newt)
b6bee63b 1251 (name "guile2.2-newt")
318e1a93 1252 (inputs `(("guile" ,guile-2.2)
e7fc7746
LC
1253 ,@(alist-delete "guile" (package-inputs guile-newt))))))
1254
b6bee63b
LC
1255(define-public guile3.0-newt
1256 (deprecated-package "guile3.0-newt" guile-newt))
1257
0791437f
RW
1258(define-public guile-mastodon
1259 (package
1260 (name "guile-mastodon")
1261 (version "0.0.1")
1262 (source (origin
1263 (method git-fetch)
1264 (uri (git-reference
1265 (url "https://framagit.org/prouby/guile-mastodon.git")
1266 (commit (string-append "v" version))))
1267 (file-name (git-file-name name version))
1268 (sha256
1269 (base32
1270 "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
1271 (build-system gnu-build-system)
1272 (native-inputs
1273 `(("autoconf" ,autoconf)
1274 ("automake" ,automake)
1275 ("pkg-config" ,pkg-config)))
1276 (inputs
1277 `(("guile" ,guile-2.2)
1278 ("gnutls" ,gnutls)
91f55717 1279 ("guile-json" ,guile-json-1)))
0791437f
RW
1280 (home-page "https://framagit.org/prouby/guile-mastodon")
1281 (synopsis "Guile Mastodon REST API module")
1282 (description "This package provides Guile modules to access the
1283@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
1284microblogging service.")
1285 (license license:gpl3+)))
1286
0791437f 1287(define-public guile-parted
dbcd503c
MO
1288 (package
1289 (name "guile-parted")
575032c8 1290 (version "0.0.4")
dbcd503c
MO
1291 (source (origin
1292 (method git-fetch)
1293 (uri (git-reference
1294 (url "https://gitlab.com/mothacehe/guile-parted")
1295 (commit version)))
1296 (file-name (git-file-name name version))
1297 (sha256
1298 (base32
575032c8 1299 "0b7h8psfm9gmmwb65pp5zwzglvwnfmw5j40g09hhf3f7kwxc0mv2"))
f6145358 1300 (modules '((guix build utils)))))
dbcd503c
MO
1301 (build-system gnu-build-system)
1302 (arguments
1303 '(#:make-flags
1304 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1305 (inputs
b6bee63b 1306 `(("guile" ,guile-3.0)
dbcd503c
MO
1307 ("parted" ,parted)))
1308 (propagated-inputs
1309 `(("guile-bytestructures" ,guile-bytestructures)))
1310 (native-inputs
1311 `(("autoconf" ,autoconf)
1312 ("automake" ,automake)
1313 ("pkg-config" ,pkg-config)))
1314 (synopsis "Guile bindings to GNU Parted")
1315 (description
1316 "This package provides bindings for GNU Parted library, a C library
1317allowing disk partition tables creation and manipulation. The bindings are
0791437f 1318written in pure Scheme by using Guile's foreign function interface.")
dbcd503c
MO
1319 (home-page "https://gitlab.com/mothacehe/guile-parted")
1320 (license license:gpl3+)))
0791437f 1321
b6bee63b 1322(define-public guile2.2-parted
e5b95558
LC
1323 (package
1324 (inherit guile-parted)
b6bee63b 1325 (name "guile2.2-parted")
318e1a93 1326 (inputs `(("guile" ,guile-2.2)
e5b95558
LC
1327 ,@(alist-delete "guile" (package-inputs guile-parted))))
1328 (propagated-inputs
b6bee63b
LC
1329 `(("guile-bytestructures" ,guile2.2-bytestructures)))))
1330
1331(define-public guile3.0-parted
1332 (deprecated-package "guile3.0-parted" guile-parted))
e5b95558 1333
0791437f
RW
1334(define-public guile-xosd
1335 (package
1336 (name "guile-xosd")
1337 (version "0.2.1")
1338 (source (origin
1339 (method url-fetch)
1340 (uri (string-append "https://github.com/alezost/" name
1341 "/releases/download/v" version
1342 "/" name "-" version ".tar.gz"))
1343 (sha256
1344 (base32
1345 "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p"))))
1346 (build-system gnu-build-system)
1347 (native-inputs
1348 `(("pkg-config" ,pkg-config)))
1349 (inputs
1350 `(("guile" ,guile-2.2)
1351 ("libx11" ,libx11)
1352 ("libxext" ,libxext)
1353 ("libxinerama" ,libxinerama)
1354 ("xosd" ,xosd)))
1355 (home-page "https://github.com/alezost/guile-xosd")
1356 (synopsis "XOSD bindings for Guile")
1357 (description
1358 "Guile-XOSD provides Guile bindings for @code{libxosd},
1359@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display
1360library}.")
1361 (license license:gpl3+)))
1362
1363(define-public guile-dbi
1364 (package
1365 (name "guile-dbi")
1366 (version "2.1.6")
1367 (source (origin
1368 (method url-fetch)
1369 (uri (string-append
1370 "http://download.gna.org/guile-dbi/guile-dbi-"
1371 version ".tar.gz"))
1372 (sha256
1373 (base32
1374 "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n"))))
1375 (build-system gnu-build-system)
1376 (arguments
1377 '(#:configure-flags
1378 (list (string-append
1379 "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
1380 #:make-flags
406ef442
CB
1381 (list (string-append
1382 "LDFLAGS=-Wl,-rpath=" %output "/lib:"
1383 (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib" ":"
1384 (assoc-ref %build-inputs "guile-dbd-postgresql") "/lib"))
0791437f
RW
1385 #:phases
1386 (modify-phases %standard-phases
1387 (add-after 'install 'patch-extension-path
1388 (lambda* (#:key outputs #:allow-other-keys)
1389 (let* ((out (assoc-ref outputs "out"))
1390 (dbi.scm (string-append
1391 out "/share/guile/site/2.2/dbi/dbi.scm"))
1392 (ext (string-append out "/lib/libguile-dbi")))
1393 (substitute* dbi.scm (("libguile-dbi") ext))
1394 #t))))))
1395 (inputs
406ef442
CB
1396 `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3)
1397 ("guile-dbd-postgresql" ,guile-dbd-postgresql))) ; only shared library, no scheme files
0791437f
RW
1398 (propagated-inputs
1399 `(("guile" ,guile-2.2)))
1400 (synopsis "Guile database abstraction layer")
1401 (home-page "http://home.gna.org/guile-dbi/guile-dbi.html")
1402 (description
1403 "guile-dbi is a library for Guile that provides a convenient interface to
1404SQL databases. Database programming with guile-dbi is generic in that the same
1405programming interface is presented regardless of which database system is used.
1406It currently supports MySQL, Postgres and SQLite3.")
1407 (license license:gpl2+)))
1408
1409(define guile-dbi-bootstrap
1410 (package
1411 (inherit guile-dbi)
1412 (name "guile-dbi-bootstrap")
1413 (inputs '())
1414 (arguments
1415 (substitute-keyword-arguments (package-arguments guile-dbi)
1416 ((#:make-flags _) '(list))))))
1417
1418(define-public guile-dbd-sqlite3
1419 (package
1420 (name "guile-dbd-sqlite3")
1421 (version "2.1.6")
1422 (source (origin
1423 (method url-fetch)
1424 (uri (string-append
1425 "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-"
1426 version ".tar.gz"))
1427 (sha256
1428 (base32
1429 "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
1430 (build-system gnu-build-system)
1431 (native-inputs
1432 `(("pkg-config" ,pkg-config)
1433 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
1434 (inputs
1435 `(("sqlite" ,sqlite)
1436 ("zlib" ,(@ (gnu packages compression) zlib))))
1437 (synopsis "Guile DBI driver for SQLite")
1438 (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
1439 (description
1440 "guile-dbi is a library for Guile that provides a convenient interface to
1441SQL databases. This package implements the interface for SQLite.")
1442 (license license:gpl2+)))
1443
406ef442
CB
1444(define-public guile-dbd-postgresql
1445 (let ((commit "e97589b6b018b206c901e4cc24db463407a4036b")
1446 (revision 0))
1447 (package
1448 (name "guile-dbd-postgresql")
1449 (version (string-append
1450 "2.1.6-" (number->string revision) "." (string-take commit 7)))
1451 (source
1452 (origin
1453 (method git-fetch)
1454 (uri (git-reference
b0e7b699 1455 (url "https://github.com/opencog/guile-dbi")
406ef442
CB
1456 (commit commit)))
1457 (file-name (git-file-name name version))
1458 (sha256
1459 (base32 "0n1gv9a0kdys10a4qmnrwvg5sydwb03880asri4gqdchcj3fimni"))))
1460 (build-system gnu-build-system)
1461 (arguments
1462 '(#:phases
1463 (modify-phases %standard-phases
1464 (add-after 'unpack 'chdir
1465 (lambda _
1466 ;; The upstream Git repository contains all the code, so change
1467 ;; to the relevant directory.
1468 (chdir "guile-dbd-postgresql")
1469 #t))
1470 (add-after 'chdir 'patch-src/Makefile.am
1471 (lambda* (#:key inputs #:allow-other-keys)
1472 (substitute* "src/Makefile.am"
1473 (("/usr/include")
1474 (string-append (assoc-ref inputs "postgresql") "/include")))
1475 #t))
1476 (add-after 'patch-src/Makefile.am 'patch-src
1477 (lambda _
1478 (substitute* "src/guile-dbd-postgresql.c"
1479 (("postgresql/libpq-fe\\.h") "libpq-fe.h"))
1480 #t)))))
1481 (native-inputs
1482 `(("pkg-config" ,pkg-config)
1483 ("automake" ,automake)
1484 ("autoconf" ,autoconf)
1485 ("perl" ,perl)
1486 ("libtool" ,libtool)
1487 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap)))
1488 (inputs
1489 `(("postgresql" ,postgresql)
1490 ("zlib" ,zlib)))
1491 (synopsis "Guile DBI driver for PostgreSQL")
1492 (home-page
1493 "https://github.com/opencog/guile-dbi/tree/master/guile-dbd-postgresql")
1494 (description
1495 "@code{guile-dbi} is a library for Guile that provides a convenient
1496interface to SQL databases. This package implements the interface for
1497PostgreSQL.")
1498 (license license:gpl2+))))
1499
0791437f
RW
1500(define-public guile-config
1501 (package
1502 (name "guile-config")
aed0d0fd 1503 (version "0.4.2")
0791437f
RW
1504 (source
1505 (origin
1506 (method git-fetch)
1507 (uri (git-reference
1508 (url "https://gitlab.com/a-sassmannshausen/guile-config")
529d1d96 1509 (commit version)))
91e29547
AS
1510 (file-name (git-file-name name version))
1511 (sha256 (base32
aed0d0fd 1512 "09028ylbddjdp3d67zdjz3pnsjqz6zs2bfck5rr3dfaa0qjap40n"))))
0791437f
RW
1513 (build-system gnu-build-system)
1514 (native-inputs
1515 `(("autoconf" ,autoconf)
1516 ("automake" ,automake)
1517 ("pkg-config" ,pkg-config)
1518 ("texinfo" ,texinfo)))
b6bee63b 1519 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
1520 (synopsis
1521 "Guile application configuration parsing library.")
1522 (description
1523 "Guile Config is a library providing a declarative approach to
1524application configuration specification. The library provides clean
1525configuration declaration forms, and processors that take care of:
1526configuration file creation; configuration file parsing; command-line
1527parameter parsing using getopt-long; basic GNU command-line parameter
1528generation (--help, --usage, --version); automatic output generation for the
1529above command-line parameters.")
1530 (home-page
1531 "https://gitlab.com/a-sassmannshausen/guile-config")
1532 (license license:gpl3+)))
1533
b6bee63b 1534(define-public guile2.2-config
0ac6b836
AS
1535 (package
1536 (inherit guile-config)
b6bee63b
LC
1537 (name "guile2.2-config")
1538 (inputs `(("guile" ,guile-2.2)
0ac6b836
AS
1539 ,@(alist-delete "guile" (package-inputs guile-config))))))
1540
b6bee63b
LC
1541(define-public guile3.0-config
1542 (deprecated-package "guile3.0-config" guile-config))
1543
0791437f
RW
1544(define-public guile-hall
1545 (package
1546 (name "guile-hall")
63fe1dc0 1547 (version "0.3.1")
0791437f 1548 (source
feb11b08
RW
1549 (origin
1550 (method git-fetch)
1551 (uri (git-reference
1552 (url "https://gitlab.com/a-sassmannshausen/guile-hall")
a3dfe052 1553 (commit version)))
63fe1dc0 1554 (file-name "guile-hall-0.3.1-checkout")
a3dfe052 1555 (sha256
63fe1dc0 1556 (base32 "1s24nigdra6rvclvy15l2aw00c3aq9vv8qwxylzs60darbl36206"))))
0791437f
RW
1557 (build-system gnu-build-system)
1558 (arguments
63bf0afd
AS
1559 `(#:modules
1560 ((ice-9 match)
1561 (ice-9 ftw)
1562 ,@%gnu-build-system-modules)
1563 #:phases
1564 (modify-phases
1565 %standard-phases
1566 (add-after 'install 'hall-wrap-binaries
1567 (lambda* (#:key inputs outputs #:allow-other-keys)
1568 (let* ((compiled-dir
1569 (lambda (out version)
1570 (string-append
1571 out "/lib/guile/" version "/site-ccache")))
1572 (uncompiled-dir
1573 (lambda (out version)
1574 (string-append
1575 out "/share/guile/site"
1576 (if (string-null? version) "" "/") version)))
1577 (dep-path
1578 (lambda (env modules path)
1579 (list env ":" 'prefix
1580 (cons modules
1581 (map (lambda (input)
1582 (string-append
1583 (assoc-ref inputs input)
1584 path))
1585 ,''("guile-config"))))))
1586 (out (assoc-ref outputs "out"))
1587 (bin (string-append out "/bin/"))
1588 (site (uncompiled-dir out "")))
1589 (match (scandir site)
1590 (("." ".." version)
1591 (for-each
1592 (lambda (file)
1593 (wrap-program
1594 (string-append bin file)
1595 (dep-path
1596 "GUILE_LOAD_PATH"
1597 (uncompiled-dir out version)
1598 (uncompiled-dir "" version))
1599 (dep-path
1600 "GUILE_LOAD_COMPILED_PATH"
1601 (compiled-dir out version)
1602 (compiled-dir "" version))))
1603 ,''("hall"))
1604 #t))))))))
0791437f 1605 (native-inputs
63bf0afd
AS
1606 `(("autoconf" ,autoconf)
1607 ("automake" ,automake)
1608 ("pkg-config" ,pkg-config)
1609 ("texinfo" ,texinfo)))
b6bee63b 1610 (inputs `(("guile" ,guile-3.0)))
0791437f 1611 (propagated-inputs
3c3e6620 1612 `(("guile-config" ,guile-config)))
0791437f
RW
1613 (synopsis "Guile project tooling")
1614 (description
3c3e6620
RW
1615 "Hall is a command-line application and a set of Guile libraries that
1616allow you to quickly create and publish Guile projects. It allows you to
1617transparently support the GNU build system, manage a project hierarchy &
1618provides tight coupling to Guix.")
1619 (home-page "https://gitlab.com/a-sassmannshausen/guile-hall")
06085fac 1620 (license license:gpl3+)))
0791437f 1621
b6bee63b 1622(define-public guile2.2-hall
df18ea6f
AS
1623 (package
1624 (inherit guile-hall)
b6bee63b
LC
1625 (name "guile2.2-hall")
1626 (inputs `(("guile" ,guile-2.2)
df18ea6f
AS
1627 ,@(alist-delete "guile" (package-inputs guile-hall))))
1628 (propagated-inputs
b6bee63b 1629 `(("guile-config" ,guile2.2-config)
df18ea6f
AS
1630 ,@(alist-delete "guile-config"
1631 (package-propagated-inputs guile-hall))))))
1632
b6bee63b
LC
1633(define-public guile3.0-hall
1634 (deprecated-package "guile3.0-hall" guile-hall))
1635
0791437f
RW
1636(define-public guile-ics
1637 (package
1638 (name "guile-ics")
1639 (version "0.2.0")
1640 (source (origin
1641 (method git-fetch)
1642 (uri (git-reference
1643 (url "https://github.com/artyom-poptsov/guile-ics")
1644 (commit (string-append "v" version))))
1645 (file-name (string-append name "-" version "-checkout"))
1646 (sha256
1647 (base32
6713589d
LC
1648 "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))
1649 (modules '((guix build utils)))
1650 (snippet
1651 '(begin
1652 ;; Allow builds with Guile 3.0.
1653 (substitute* "configure.ac"
1654 (("^GUILE_PKG.*")
1655 "GUILE_PKG([3.0 2.2 2.0])\n"))
1656 #t))))
0791437f
RW
1657 (build-system gnu-build-system)
1658 (native-inputs
1659 `(("autoconf" ,autoconf-wrapper)
1660 ("automake" ,automake)
1661 ("texinfo" ,texinfo)
1662 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
1663 ("gettext" ,gettext-minimal)
1664 ("pkg-config" ,pkg-config)))
b6bee63b 1665 (inputs `(("guile" ,guile-3.0) ("which" ,which)))
0791437f
RW
1666 (propagated-inputs `(("guile-lib" ,guile-lib)))
1667 (home-page "https://github.com/artyom-poptsov/guile-ics")
1668 (synopsis "Guile parser library for the iCalendar format")
1669 (description
1670 "Guile-ICS is an iCalendar (RFC5545) format parser library written in
1671pure Scheme. The library can be used to read and write iCalendar data.
1672
1673The library is shipped with documentation in Info format and usage examples.")
1674 (license license:gpl3+)))
1675
b6bee63b 1676(define-public guile2.2-ics
6713589d
LC
1677 (package
1678 (inherit guile-ics)
b6bee63b
LC
1679 (name "guile2.2-ics")
1680 (inputs `(("guile" ,guile-2.2)
6713589d 1681 ,@(alist-delete "guile" (package-inputs guile-ics))))
b6bee63b
LC
1682 (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
1683
1684(define-public guile3.0-ics
1685 (deprecated-package "guile3.0-ics" guile-ics))
6713589d 1686
0791437f
RW
1687(define-public guile-wisp
1688 (package
1689 (name "guile-wisp")
8b030edf 1690 (version "1.0.3")
0791437f 1691 (source (origin
8b030edf
AB
1692 (method hg-fetch)
1693 (uri (hg-reference
1694 (url "https://hg.sr.ht/~arnebab/wisp")
1695 (changeset (string-append "v" version))))
1696 (file-name (git-file-name name version))
0791437f
RW
1697 (sha256
1698 (base32
8b030edf 1699 "10g97jz3ahpb5mg933ajsc3pa9jxlg14f42yf01qwx0dwq1b06d5"))))
0791437f
RW
1700 (build-system gnu-build-system)
1701 (arguments
1702 `(#:modules ((guix build gnu-build-system)
15218d4e 1703 ((guix build emacs-build-system) #:prefix emacs:)
0791437f 1704 (guix build utils)
15218d4e 1705 (guix build emacs-utils)
0791437f
RW
1706 (ice-9 rdelim)
1707 (ice-9 popen))
15218d4e
RW
1708 #:imported-modules (,@%gnu-build-system-modules
1709 (guix build emacs-build-system)
1710 (guix build emacs-utils))
0791437f
RW
1711 #:phases
1712 (modify-phases %standard-phases
8b030edf 1713 (replace 'bootstrap
b6bee63b 1714 (lambda _
8b030edf 1715 (invoke "autoreconf" "-vif")
b6bee63b 1716 #t))
0791437f
RW
1717 (add-before 'configure 'patch-/usr/bin/env
1718 (lambda _
1719 (substitute* "Makefile.in"
65610f73 1720 (("/usr/bin/env bash") (which "bash")))
0791437f
RW
1721 #t))
1722 ;; auto compilation breaks, but if we set HOME to /tmp,
1723 ;; that works ok
1724 (add-before 'check 'auto-compile-hacky-workaround
1725 (lambda _ (setenv "HOME" "/tmp") #t))
1726 (add-after 'install 'install-go-files
1727 (lambda* (#:key outputs inputs #:allow-other-keys)
1728 (let* ((out (assoc-ref outputs "out"))
1729 (effective (read-line
1730 (open-pipe* OPEN_READ
1731 "guile" "-c"
1732 "(display (effective-version))")))
1733 (module-dir (string-append out "/share/guile/site/"
1734 effective))
1735 (object-dir (string-append out "/lib/guile/" effective
1736 "/site-ccache"))
1737 (prefix (string-length module-dir)))
1738 ;; compile to the destination
1739 (for-each (lambda (file)
1740 (let* ((base (string-drop (string-drop-right file 4)
1741 prefix))
1742 (go (string-append object-dir base ".go")))
1743 (invoke "guild" "compile" "-L" module-dir
1744 file "-o" go)))
1745 (find-files module-dir "\\.scm$"))
15218d4e
RW
1746 #t)))
1747 (add-after 'install 'install-emacs-files
1748 (assoc-ref emacs:%standard-phases 'install))
1749 (add-after 'install-emacs-files 'compile-emacs-files
1750 (assoc-ref emacs:%standard-phases 'build))
1751 (add-after 'compile-emacs-files 'make-autoloads
1752 (assoc-ref emacs:%standard-phases 'make-autoloads)))))
17f90b67 1753 (home-page "https://www.draketo.de/english/wisp")
0791437f 1754 (inputs
b6bee63b 1755 `(("guile" ,guile-3.0)))
0791437f 1756 (native-inputs
8b030edf
AB
1757 `(("autoconf" ,autoconf)
1758 ("automake" ,automake)
1759 ("emacs" ,emacs-minimal)
15218d4e 1760 ("python" ,python)
0791437f
RW
1761 ("pkg-config" ,pkg-config)))
1762 (synopsis "Whitespace to lisp syntax for Guile")
1763 (description "Wisp is a syntax for Guile which provides a Python-like
1764whitespace-significant language. It may be easier on the eyes for some
1765users and in some situations.")
1766 (license license:gpl3+)))
1767
b6bee63b 1768(define-public guile2.2-wisp
b0b725ed
RW
1769 (package
1770 (inherit guile-wisp)
b6bee63b
LC
1771 (name "guile2.2-wisp")
1772 (inputs `(("guile" ,guile-2.2)))))
1773
1774(define-public guile3.0-wisp
1775 (deprecated-package "guile3.0-wisp" guile-wisp))
b0b725ed 1776
0791437f
RW
1777(define-public guile-sly
1778 (package
1779 (name "guile-sly")
1780 (version "0.1")
1781 (source (origin
1782 (method url-fetch)
1783 (uri (string-append "https://files.dthompson.us/sly/sly-"
1784 version ".tar.gz"))
1785 (sha256
1786 (base32
1787 "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
1788 (modules '((guix build utils)))
1789 (snippet
1790 '(begin
1791 (substitute* "configure"
1792 (("_guile_required_version=\"2.0.11\"")
1793 "_guile_required_version=\"2\"")
1794 (("ac_subst_vars='")
1795 "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
1796 (substitute* (find-files "." "Makefile.in")
1797 (("moddir = .*$")
1798 (string-append
1799 "moddir = "
1800 "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
1801 (("godir = .*$")
1802 (string-append
1803 "godir = "
1804 "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
1805 #t))))
1806 (build-system gnu-build-system)
1807 (arguments
1808 '(#:configure-flags
1809 (list (string-append "--with-libfreeimage-prefix="
1810 (assoc-ref %build-inputs "freeimage"))
1811 (string-append "--with-libgslcblas-prefix="
1812 (assoc-ref %build-inputs "gsl")))))
1813 (native-inputs
1814 `(("pkg-config" ,pkg-config)))
1815 (propagated-inputs
1816 `(("guile-sdl" ,guile-sdl)
1817 ("guile-opengl" ,guile-opengl)))
1818 (inputs
1819 `(("guile" ,guile-2.2)
1820 ("gsl" ,gsl)
1821 ("freeimage" ,freeimage)
1822 ("mesa" ,mesa)))
1823 (synopsis "2D/3D game engine for GNU Guile")
1824 (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly
1825features a functional reactive programming interface and live coding
1826capabilities.")
1827 (home-page "https://dthompson.us/projects/sly.html")
1828 (license license:gpl3+)))
1829
dfe277a5 1830(define-public g-golf
f2d36d4f
MR
1831 (let ((commit "ef830107b9765bd6a2da848d0cbe45e11374c0b5")
1832 (revision "839"))
dfe277a5
VS
1833 (package
1834 (name "g-golf")
30d59b31
MR
1835 (version (git-version "0.1.0" revision commit))
1836 (source
1837 (origin
1838 (method git-fetch)
1839 (uri (git-reference
1840 (url "https://git.savannah.gnu.org/git/g-golf.git")
1841 (commit commit)))
1842 (file-name (git-file-name name version))
1843 (sha256
f2d36d4f 1844 (base32 "0r472hvmf447kqvkahp1wy4irb5gy8y793hm8r9rc511smdx66cw"))))
dfe277a5
VS
1845 (build-system gnu-build-system)
1846 (native-inputs
1847 `(("autoconf" ,autoconf)
1848 ("automake" ,automake)
1849 ("texinfo" ,texinfo)
1850 ("gettext" ,gettext-minimal)
1851 ("libtool" ,libtool)
85fcceee
MR
1852 ("pkg-config" ,pkg-config)
1853 ("xorg-server" ,xorg-server)))
dfe277a5
VS
1854 (inputs
1855 `(("guile" ,guile-2.2)
85fcceee 1856 ("guile-lib" ,guile2.2-lib)
dfe277a5
VS
1857 ("clutter" ,clutter)
1858 ("gtk" ,gtk+)
1859 ("glib" ,glib)))
1860 (propagated-inputs
1861 `(("gobject-introspection" ,gobject-introspection)))
1862 (arguments
1863 `(#:phases
1864 (modify-phases %standard-phases
1865 (add-before 'configure 'tests-work-arounds
1866 (lambda* (#:key inputs #:allow-other-keys)
1867 ;; In build environment, There is no /dev/tty
1868 (substitute*
1869 "test-suite/tests/gobject.scm"
1870 (("/dev/tty") "/dev/null"))))
1871 (add-before 'configure 'substitute-libs
1872 (lambda* (#:key inputs outputs #:allow-other-keys)
1873 (let* ((get (lambda (key lib)
1874 (string-append (assoc-ref inputs key) "/lib/" lib)))
1875 (libgi (get "gobject-introspection" "libgirepository-1.0"))
1876 (libglib (get "glib" "libglib-2.0"))
1877 (libgobject (get "glib" "libgobject-2.0"))
1878 (libgdk (get "gtk" "libgdk-3")))
1879 (substitute* "configure"
1880 (("SITEDIR=\"\\$datadir/g-golf\"")
1881 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
1882 (("SITECCACHEDIR=\"\\$libdir/g-golf/")
1883 "SITECCACHEDIR=\"$libdir/"))
1884 (substitute* "g-golf/init.scm"
1885 (("libgirepository-1.0") libgi)
1886 (("libglib-2.0") libglib)
1887 (("libgdk-3") libgdk)
1888 (("libgobject-2.0") libgobject)
1889 (("\\(dynamic-link \"libg-golf\"\\)")
1890 (format #f "~s"
1891 `(dynamic-link
1892 (format #f "~alibg-golf"
1893 (if (getenv "GUILE_GGOLF_UNINSTALLED")
1894 ""
1895 ,(format #f "~a/lib/"
1896 (assoc-ref outputs "out"))))))))
1897 (setenv "GUILE_AUTO_COMPILE" "0")
1898 (setenv "GUILE_GGOLF_UNINSTALLED" "1")
85fcceee
MR
1899 #t)))
1900 (add-before 'check 'start-xorg-server
1901 (lambda* (#:key inputs #:allow-other-keys)
1902 ;; The test suite requires a running X server.
1903 (system (format #f "~a/bin/Xvfb :1 &"
1904 (assoc-ref inputs "xorg-server")))
1905 (setenv "DISPLAY" ":1")
1906 #t)))))
dfe277a5
VS
1907 (home-page "https://www.gnu.org/software/g-golf/")
1908 (synopsis "Guile bindings for GObject Introspection")
1909 (description
1910 "G-Golf (Gnome: (Guile Object Library for)) is a library for developing
1911modern applications in Guile Scheme. It comprises a direct binding to the
1912GObject Introspection API and higher-level functionality for importing Gnome
1913libraries and making GObject classes (and methods) available in Guile's
1914object-oriented programming system, GOOPS.")
1915 (license license:lgpl3+))))
1916
0791437f
RW
1917(define-public g-wrap
1918 (package
1919 (name "g-wrap")
1920 (version "1.9.15")
1921 (source (origin
1922 (method url-fetch)
1923 (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
1924 version ".tar.gz"))
1925 (sha256
1926 (base32
1927 "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
1928 (build-system gnu-build-system)
1929 (native-inputs
1930 `(("pkg-config" ,pkg-config)))
1931 (propagated-inputs
1932 `(("guile" ,guile-2.2)
1933 ("guile-lib" ,guile-lib)))
1934 (inputs
1935 `(("libffi" ,libffi)))
1936 (arguments
1937 `(#:configure-flags '("--disable-Werror")
1938 #:phases
1939 (modify-phases %standard-phases
1940 (add-before 'configure 'pre-configure
1941 (lambda* (#:key outputs #:allow-other-keys)
1942 (let ((out (assoc-ref outputs "out")))
1943 (substitute* (find-files "." "^Makefile.in$")
1944 (("guilemoduledir =.*guile/site" all)
1945 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
1946 #t))))))
1947 (synopsis "Generate C bindings for Guile")
1948 (description "G-Wrap is a tool and Guile library for generating function
1949wrappers for inter-language calls. It currently only supports generating Guile
1950wrappers for C functions. Given a definition of the types and prototypes for
1951a given C interface, G-Wrap will automatically generate the C code that
1952provides access to that interface and its types from the Scheme level.")
1953 (home-page "https://www.nongnu.org/g-wrap/index.html")
1954 (license license:lgpl2.1+)))
1955
1956(define-public guile-miniadapton
1957 (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
1958 (revision "1"))
1959 (package
1960 (name "guile-miniadapton")
1961 (version (string-append "0-" revision "." (string-take commit 9)))
1962 (source (origin
1963 (method git-fetch)
1964 (uri (git-reference
b0e7b699 1965 (url "https://github.com/fisherdj/miniAdapton")
0791437f
RW
1966 (commit commit)))
1967 (file-name (string-append name "-" version "-checkout"))
1968 (sha256
1969 (base32
1970 "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
1971 (build-system guile-build-system)
1972 (native-inputs
1973 `(("guile" ,guile-2.2)))
1974 (home-page "https://github.com/fisherdj/miniAdapton")
1975 (synopsis "Minimal implementation of incremental computation in Guile
1976Scheme")
1977 (description "This package provides a complete Scheme implementation of
1978miniAdapton, which implements the core functionality of the Adapton system for
1979incremental computation (also known as self-adjusting computation). Like
1980Adapton, miniAdapton allows programmers to safely combine mutation and
1981memoization. miniAdapton is built on top of an even simpler system,
1982microAdapton. Both miniAdapton and microAdapton are designed to be easy to
1983understand, extend, and port to host languages other than Scheme.")
1984 (license license:expat))))
1985
1986(define-public guile-reader
1987 (package
1988 (name "guile-reader")
a7c69419 1989 (version "0.6.3")
0791437f
RW
1990 (source (origin
1991 (method url-fetch)
1992 (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
1993 version ".tar.gz"))
1994 (sha256
1995 (base32
a7c69419 1996 "1fyjckmygkhq22lq8nqc86yl5zzbqd7a944dnz5c1f6vx92b9hiq"))))
0791437f
RW
1997 (build-system gnu-build-system)
1998 (native-inputs `(("pkgconfig" ,pkg-config)
a7c69419 1999 ("gperf" ,gperf)))
c20e697e 2000 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
2001 (synopsis "Framework for building readers for GNU Guile")
2002 (description
2003 "Guile-Reader is a simple framework for building readers for GNU Guile.
2004
2005The idea is to make it easy to build procedures that extend Guile’s read
2006procedure. Readers supporting various syntax variants can easily be written,
2007possibly by re-using existing “token readers” of a standard Scheme
2008readers. For example, it is used to implement Skribilo’s R5RS-derived
2009document syntax.
2010
2011Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
2012hopefully more powerful and flexible (for instance, one may instantiate as
2013many readers as needed).")
2014 (home-page "https://www.nongnu.org/guile-reader/")
2015 (license license:gpl3+)))
2016
c20e697e
LC
2017(define-public guile2.2-reader
2018 (package
2019 (inherit guile-reader)
2020 (name "guile2.2-reader")
2021 (inputs `(("guile" ,guile-2.2)))))
2022
0791437f
RW
2023(define-public guile-ncurses
2024 (package
2025 (name "guile-ncurses")
2b155e3a 2026 (version "3.0")
0791437f
RW
2027 (source (origin
2028 (method url-fetch)
2029 (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
2030 version ".tar.gz"))
2031 (sha256
2032 (base32
2b155e3a 2033 "038xbffalhymg26lvmzgf7ljilxz2f2zmqg5r5nfzbipfbprwjhf"))))
0791437f
RW
2034 (build-system gnu-build-system)
2035 (inputs `(("ncurses" ,ncurses)
b01a73b0 2036 ("guile" ,guile-3.0)))
0791437f
RW
2037 (native-inputs `(("pkg-config" ,pkg-config)))
2038 (arguments
3c566eba
MB
2039 `(#:modules ((guix build gnu-build-system)
2040 ((guix build guile-build-system)
2041 #:select (target-guile-effective-version))
2042 (guix build utils))
2043 #:imported-modules ((guix build guile-build-system)
2044 ,@%gnu-build-system-modules)
2045 #:configure-flags (list "--with-ncursesw" ; Unicode support
0791437f
RW
2046 "--with-gnu-filesystem-hierarchy")
2047 #:phases
2048 (modify-phases %standard-phases
2049 (add-before 'build 'fix-libguile-ncurses-file-name
2050 (lambda* (#:key outputs #:allow-other-keys)
2051 (invoke "make" "install"
2052 "-C" "src/ncurses"
2053 "-j" (number->string
2054 (parallel-job-count)))
2055 (let* ((out (assoc-ref outputs "out"))
2056 (dir "src/ncurses")
2057 (files (find-files dir ".scm")))
2058 (substitute* files
2059 (("\"libguile-ncurses\"")
3c566eba
MB
2060 (format #f "\"~a/lib/guile/~a/libguile-ncurses\""
2061 out (target-guile-effective-version))))
0791437f
RW
2062 #t))))))
2063 (home-page "https://www.gnu.org/software/guile-ncurses/")
2064 (synopsis "Guile bindings to ncurses")
2065 (description
2066 "guile-ncurses provides Guile language bindings for the ncurses
2067library.")
2068 (license license:lgpl3+)))
2069
b01a73b0 2070(define-public guile2.2-ncurses
3c566eba
MB
2071 (package
2072 (inherit guile-ncurses)
b01a73b0 2073 (name "guile2.2-ncurses")
3c566eba 2074 (inputs `(("ncurses" ,ncurses)
b01a73b0
RW
2075 ("guile" ,guile-2.2)))))
2076
2077(define-public guile3.0-ncurses
2078 (deprecated-package "guile3.0-ncurses" guile-ncurses))
3c566eba 2079
0791437f
RW
2080(define-public guile-ncurses/gpm
2081 (package
2082 (inherit guile-ncurses)
2083 (name "guile-ncurses-with-gpm")
2084 (inputs `(("ncurses" ,ncurses/gpm)
2085 ("guile" ,guile-2.2)))))
2086
87001355
MB
2087(define-public guile3.0-ncurses/gpm
2088 (package
2089 (inherit guile3.0-ncurses)
2090 (name "guile3.0-ncurses-with-gpm")
2091 (inputs `(("ncurses" ,ncurses/gpm)
2092 ("guile" ,guile-3.0)))))
2093
0791437f
RW
2094(define-public guile-lib
2095 (package
2096 (name "guile-lib")
2097 (version "0.2.6.1")
2098 (source (origin
2099 (method url-fetch)
2100 (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
2101 version ".tar.gz"))
2102 (sha256
2103 (base32
675f1940
LC
2104 "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd"))
2105 (modules '((guix build utils)))
2106 (snippet
2107 '(begin
2108 ;; Work around miscompilation on Guile 3.0.0 at -O2:
2109 ;; <https://bugs.gnu.org/39251>.
2110 (substitute* "src/md5.scm"
2111 (("\\(define f-ash ash\\)")
2112 "(define f-ash (@ (guile) ash))\n")
2113 (("\\(define f-add \\+\\)")
2114 "(define f-add (@ (guile) +))\n"))
2115 #t))))
0791437f
RW
2116 (build-system gnu-build-system)
2117 (arguments
2118 '(#:make-flags
2119 '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors
2120 #:phases
2121 (modify-phases %standard-phases
2122 (add-before 'configure 'patch-module-dir
2123 (lambda _
2124 (substitute* "src/Makefile.in"
2125 (("^moddir = ([[:graph:]]+)")
2126 "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
2127 (("^godir = ([[:graph:]]+)")
2128 "godir = \
2129$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
2130 #t)))))
7306c679
CB
2131 (native-inputs
2132 `(("guile" ,guile-3.0)
2133 ("pkg-config" ,pkg-config)))
2134 (inputs
2135 `(("guile" ,guile-3.0)))
0791437f
RW
2136 (home-page "https://www.nongnu.org/guile-lib/")
2137 (synopsis "Collection of useful Guile Scheme modules")
2138 (description
2139 "Guile-Lib is intended as an accumulation place for pure-scheme Guile
2140modules, allowing for people to cooperate integrating their generic Guile
2141modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
2142for Guile\".")
2143
2144 ;; The whole is under GPLv3+, but some modules are under laxer
2145 ;; distribution terms such as LGPL and public domain. See `COPYING' for
2146 ;; details.
2147 (license license:gpl3+)))
2148
2149(define-public guile2.0-lib
2150 (package
2151 (inherit guile-lib)
2152 (name "guile2.0-lib")
7306c679 2153 (native-inputs `(("pkg-config" ,pkg-config)))
0791437f
RW
2154 (inputs `(("guile" ,guile-2.0)))))
2155
b6bee63b 2156(define-public guile2.2-lib
675f1940
LC
2157 (package
2158 (inherit guile-lib)
b6bee63b 2159 (name "guile2.2-lib")
7306c679 2160 (native-inputs `(("pkg-config" ,pkg-config)))
b6bee63b
LC
2161 (inputs `(("guile" ,guile-2.2)))))
2162
2163(define-public guile3.0-lib
2164 (deprecated-package "guile3.0-lib" guile-lib))
675f1940 2165
0791437f
RW
2166(define-public guile-minikanren
2167 (package
2168 (name "guile-minikanren")
2169 (version "20150424.e844d85")
2170 (source (origin
2171 (method git-fetch)
2172 (uri (git-reference
b0e7b699 2173 (url "https://github.com/ijp/minikanren")
0791437f
RW
2174 (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
2175 (file-name (string-append name "-" version "-checkout"))
2176 (sha256
2177 (base32
2178 "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
2179 (build-system guile-build-system)
2180 (native-inputs
b6bee63b 2181 `(("guile" ,guile-3.0)))
0791437f
RW
2182 (home-page "https://github.com/ijp/minikanren")
2183 (synopsis "MiniKanren declarative logic system, packaged for Guile")
2184 (description
2185 "MiniKanren is a relational programming extension to the Scheme
2186programming Language, written as a smaller version of Kanren suitable for
2187pedagogical purposes. It is featured in the book, The Reasoned Schemer,
2188written by Dan Friedman, William Byrd, and Oleg Kiselyov.
2189
2190This is Ian Price's r6rs packaged version of miniKanren, which deviates
2191slightly from miniKanren mainline.
2192
2193See http://minikanren.org/ for more on miniKanren generally.")
2194 (license license:expat)))
2195
2196(define-public guile2.0-minikanren
2197 (package
2198 (inherit guile-minikanren)
2199 (name "guile2.0-minikanren")
2200 (native-inputs `(("guile" ,guile-2.0)))))
2201
b6bee63b 2202(define-public guile2.2-minikanren
89a99d53
LC
2203 (package
2204 (inherit guile-minikanren)
b6bee63b
LC
2205 (name "guile2.2-minikanren")
2206 (native-inputs `(("guile" ,guile-2.2)))))
2207
2208(define-public guile3.0-minikanren
2209 (deprecated-package "guile3.0-minikanren" guile-minikanren))
89a99d53 2210
0791437f
RW
2211(define-public guile-irregex
2212 (package
2213 (name "guile-irregex")
2214 (version "0.9.6")
2215 (source (origin
2216 (method url-fetch)
2217 (uri (string-append
2218 "http://synthcode.com/scheme/irregex/irregex-"
2219 version ".tar.gz"))
2220 (sha256
2221 (base32
2222 "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
2223 (build-system guile-build-system)
2224 (arguments
2225 '(#:phases (modify-phases %standard-phases
2226 (add-after 'unpack 'move-files-around
2227 (lambda _
2228 ;; Move the relevant source files to src/ and create the
2229 ;; rx/ directory to match the expected module hierarchy.
2230 (mkdir-p "src/rx/source")
2231 (rename-file "irregex-guile.scm"
2232 "src/rx/irregex.scm")
2233 (rename-file "irregex.scm"
2234 "src/rx/source/irregex.scm")
2235 ;; Not really reachable via guile's packaging system,
2236 ;; but nice to have around.
2237 (rename-file "irregex-utils.scm"
2238 "src/rx/source/irregex-utils.scm")
2239 #t)))
2240 #:source-directory "src"))
2241 (native-inputs
b6bee63b 2242 `(("guile" ,guile-3.0)))
0791437f
RW
2243 (home-page "http://synthcode.com/scheme/irregex")
2244 (synopsis "S-expression based regular expressions")
2245 (description
2246 "Irregex is an s-expression based alternative to your classic
2247string-based regular expressions. It implements SRFI 115 and is deeply
2248inspired by the SCSH regular expression system.")
2249 (license license:bsd-3)))
2250
2251(define-public guile2.0-irregex
2252 (package
2253 (inherit guile-irregex)
2254 (name "guile2.0-irregex")
2255 (native-inputs `(("guile" ,guile-2.0)))))
2256
b6bee63b 2257(define-public guile2.2-irregex
89a99d53
LC
2258 (package
2259 (inherit guile-irregex)
b6bee63b
LC
2260 (name "guile2.2-irregex")
2261 (native-inputs `(("guile" ,guile-2.2)))))
2262
2263(define-public guile3.0-irregex
2264 (deprecated-package "guile3.0-irregex" guile-irregex))
89a99d53 2265
0791437f
RW
2266(define-public haunt
2267 (package
2268 (name "haunt")
2269 (version "0.2.4")
2270 (source (origin
2271 (method url-fetch)
2272 (uri (string-append "https://files.dthompson.us/haunt/haunt-"
2273 version ".tar.gz"))
2274 (sha256
2275 (base32
93d94134
LC
2276 "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc"))
2277 (modules '((guix build utils)))
2278 (snippet
2279 '(begin
2280 ;; Allow builds with Guile 3.0.
2281 (substitute* "configure"
2282 (("2\\.2 2\\.0")
2283 "3.0 2.2 2.0"))
2284 #t))))
0791437f
RW
2285 (build-system gnu-build-system)
2286 (arguments
2287 `(#:modules ((ice-9 match) (ice-9 ftw)
2288 ,@%gnu-build-system-modules)
2289 #:tests? #f ; test suite is non-deterministic :(
2290 #:phases (modify-phases %standard-phases
2291 (add-after 'install 'wrap-haunt
2292 (lambda* (#:key inputs outputs #:allow-other-keys)
2293 ;; Wrap the 'haunt' command to refer to the right
2294 ;; modules.
2295 (let* ((out (assoc-ref outputs "out"))
2296 (bin (string-append out "/bin"))
2297 (site (string-append
2298 out "/share/guile/site"))
93d94134
LC
2299 (guile-reader (assoc-ref inputs "guile-reader"))
2300 (deps `(,@(if guile-reader
2301 (list guile-reader)
2302 '())
2303 ,(assoc-ref inputs "guile-commonmark"))))
0791437f
RW
2304 (match (scandir site)
2305 (("." ".." version)
2306 (let ((modules (string-append site "/" version))
2307 (compiled-modules (string-append
2308 out "/lib/guile/" version
2309 "/site-ccache")))
2310 (wrap-program (string-append bin "/haunt")
2311 `("GUILE_LOAD_PATH" ":" prefix
2312 (,modules
2313 ,@(map (lambda (dep)
2314 (string-append dep
2315 "/share/guile/site/"
2316 version))
2317 deps)))
2318 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
2319 (,compiled-modules
2320 ,@(map (lambda (dep)
2321 (string-append dep "/lib/guile/"
2322 version
2323 "/site-ccache"))
2324 deps))))
2325 #t)))))))))
2326 (native-inputs
2327 `(("pkg-config" ,pkg-config)
2328 ("texinfo" ,texinfo)))
2329 (inputs
b6bee63b 2330 `(("guile" ,guile-3.0)))
0791437f 2331 (propagated-inputs
c20e697e 2332 `(("guile-reader" ,guile-reader)
0791437f
RW
2333 ("guile-commonmark" ,guile-commonmark)))
2334 (synopsis "Functional static site generator")
2335 (description "Haunt is a static site generator written in Guile
2336Scheme. Haunt features a functional build system and an extensible
2337interface for reading articles in any format.")
5d3bcfef 2338 (home-page "https://dthompson.us/projects/haunt.html")
0791437f
RW
2339 (license license:gpl3+)))
2340
b6bee63b 2341(define-public guile2.2-haunt
93d94134
LC
2342 (package
2343 (inherit haunt)
b6bee63b
LC
2344 (name "guile2.2-haunt")
2345 (inputs `(("guile" ,guile-2.2)))
93d94134 2346 (propagated-inputs
c20e697e 2347 `(("guile-reader" ,guile2.2-reader)
b6bee63b 2348 ("guile-commonmark" ,guile2.2-commonmark)))))
93d94134 2349
0791437f
RW
2350(define-public guile2.0-haunt
2351 (package
2352 (inherit haunt)
2353 (name "guile2.0-haunt")
2354 (inputs `(("guile" ,guile-2.0)))))
2355
b6bee63b
LC
2356(define-public guile3.0-haunt
2357 (deprecated-package "guile3.0-haunt" haunt))
2358
0791437f
RW
2359(define-public guile-redis
2360 (package
2361 (name "guile-redis")
f57bf15c 2362 (version "1.3.0")
0791437f
RW
2363 (home-page "https://github.com/aconchillo/guile-redis")
2364 (source (origin
29fde3bf
EF
2365 (method git-fetch)
2366 (uri (git-reference
2367 (url home-page)
2368 (commit version)))
2369 (file-name (git-file-name name version))
0791437f
RW
2370 (sha256
2371 (base32
29fde3bf 2372 "14izs8daxh7pb7vwpxi5g427qa31137jkaxrb1cy5rpjkwchy723"))))
0791437f
RW
2373 (build-system gnu-build-system)
2374 (native-inputs
2375 `(("autoconf" ,autoconf)
2376 ("automake" ,automake)
2377 ("pkg-config" ,pkg-config)
24e38f24 2378 ("guile" ,guile-3.0)))
0791437f
RW
2379 (synopsis "Redis client library for Guile")
2380 (description "Guile-redis provides a Scheme interface to the Redis
2381key-value cache and store.")
2382 (license license:lgpl3+)))
2383
24e38f24
RW
2384(define-public guile2.2-redis
2385 (package
2386 (inherit guile-redis)
2387 (name "guile2.2-redis")
2388 (native-inputs `(("guile" ,guile-2.2)
2389 ,@(alist-delete "guile"
2390 (package-native-inputs guile-redis))))))
2391
0791437f
RW
2392(define-public guile2.0-redis
2393 (package
2394 (inherit guile-redis)
2395 (name "guile2.0-redis")
2396 (native-inputs `(("guile" ,guile-2.0)
2397 ,@(alist-delete "guile"
2398 (package-native-inputs guile-redis))))))
2399
0791437f
RW
2400(define-public guile-commonmark
2401 (package
2402 (name "guile-commonmark")
b552e307 2403 (version "0.1.2")
0791437f
RW
2404 (source (origin
2405 (method url-fetch)
2406 (uri (string-append "https://github.com/OrangeShark/" name
2407 "/releases/download/v" version
2408 "/" name "-" version ".tar.gz"))
2409 (sha256
2410 (base32
1fa34232
LC
2411 "17lrsdisa3kckh24q114vfmzdc4wkqa6ccwl4hdlrng5wpn1iman"))
2412 (modules '((guix build utils)))
2413 (snippet
2414 '(begin
2415 ;; Allow builds with Guile 3.0.
2416 (substitute* "configure"
2417 (("2\\.2 2\\.0")
2418 "3.0 2.2 2.0"))
2419 #t))))
0791437f
RW
2420 (build-system gnu-build-system)
2421 (inputs
b6bee63b 2422 `(("guile" ,guile-3.0)))
0791437f
RW
2423 (native-inputs
2424 `(("pkg-config" ,pkg-config)))
2425 (synopsis "CommonMark parser for Guile")
2426 (description
2427 "guile-commonmark is a library for parsing CommonMark, a fully specified
2428variant of Markdown. The library is written in Guile Scheme and is designed
2429to transform a CommonMark document to SXML. guile-commonmark tries to closely
2430follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
2431is no support for parsing block and inline level HTML.")
2432 (home-page "https://github.com/OrangeShark/guile-commonmark")
2433 (license license:lgpl3+)))
2434
b6bee63b 2435(define-public guile2.2-commonmark
1fa34232
LC
2436 (package
2437 (inherit guile-commonmark)
b6bee63b
LC
2438 (name "guile2.2-commonmark")
2439 (inputs `(("guile" ,guile-2.2)))))
1fa34232 2440
0791437f
RW
2441(define-public guile2.0-commonmark
2442 (package
2443 (inherit guile-commonmark)
2444 (name "guile2.0-commonmark")
2445 (inputs `(("guile" ,guile-2.0)))))
2446
b6bee63b
LC
2447(define-public guile3.0-commonmark
2448 (deprecated-package "guile3.0-commonmark" guile-commonmark))
2449
0791437f
RW
2450(define-public mcron
2451 (package
2452 (name "mcron")
8b3b1988 2453 (version "1.2.0")
0791437f
RW
2454 (source (origin
2455 (method url-fetch)
2456 (uri (string-append "mirror://gnu/mcron/mcron-"
2457 version ".tar.gz"))
2458 (sha256
2459 (base32
8b3b1988 2460 "1midrn15d5kqy4zd2029bj1db6gnfhxg8mcgfy4bkp5p9nl4v4rd"))))
0791437f
RW
2461 (build-system gnu-build-system)
2462 (arguments
2463 '(#:phases (modify-phases %standard-phases
0791437f
RW
2464 (add-before 'check 'adjust-tests
2465 (lambda _
2466 (substitute* "tests/job-specifier.scm"
2467 ;; (getpw) fails with "entry not found" in the build
2468 ;; environment, so pass an argument.
2469 (("\\(getpw\\)")
2470 "(getpwnam (getuid))")
2471 ;; The build environment lacks an entry for root in
2472 ;; /etc/passwd.
2473 (("\\(getpw 0\\)")
2474 "(getpwnam \"nobody\")")
2475
2476 ;; FIXME: Skip the 4 faulty tests (see above).
2477 (("\\(test-equal \"next-year\"" all)
2478 (string-append "(test-skip 4)\n" all)))
2479 #t)))))
30ebff69 2480 (native-inputs `(("pkg-config" ,pkg-config)
bbd9c9c9
LC
2481 ("tzdata" ,tzdata-for-tests)
2482 ("guile-native" ;for 'guild compile'
2483 ,@(assoc-ref (package-inputs this-package) "guile"))))
b6bee63b 2484 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
2485 (home-page "https://www.gnu.org/software/mcron/")
2486 (synopsis "Run jobs at scheduled times")
2487 (description
2488 "GNU Mcron is a complete replacement for Vixie cron. It is used to run
2489tasks on a schedule, such as every hour or every Monday. Mcron is written in
2490Guile, so its configuration can be written in Scheme; the original cron
2491format is also supported.")
2492 (license license:gpl3+)))
2493
b6bee63b 2494(define-public guile2.2-mcron
3de0d20b
LC
2495 (package
2496 (inherit mcron)
b6bee63b
LC
2497 (name "guile2.2-mcron")
2498 (inputs `(("guile" ,guile-2.2)))))
2499
2500(define-public guile3.0-mcron
2501 (deprecated-package "guile3.0-mcron" mcron))
3de0d20b 2502
6bb5f88e 2503(define-public guile-picture-language
76171095
RW
2504 (let ((commit "7e5982a2788bd79a45ad6f02db46f061f97b6e14")
2505 (revision "3"))
6bb5f88e
RW
2506 (package
2507 (name "guile-picture-language")
d1a3a8e1 2508 (version (git-version "0.0.1" revision commit))
6bb5f88e
RW
2509 (source (origin
2510 (method git-fetch)
2511 (uri (git-reference
2512 (url "https://git.elephly.net/software/guile-picture-language.git")
2513 (commit commit)))
f1d4d79f 2514 (file-name (git-file-name name version))
6bb5f88e
RW
2515 (sha256
2516 (base32
76171095 2517 "1y5f14cll4jx33hr43dpgrpd0yy6g0g7lim365kmgb0h0cvja80p"))))
d1a3a8e1 2518 (build-system gnu-build-system)
6bb5f88e 2519 (inputs
b6bee63b 2520 `(("guile" ,guile-3.0)))
76171095
RW
2521 (propagated-inputs
2522 `(("guile-rsvg" ,guile-rsvg)))
d1a3a8e1
RW
2523 (native-inputs
2524 `(("autoconf" ,autoconf)
2525 ("automake" ,automake)
76171095 2526 ("librsvg" ,librsvg)
d1a3a8e1
RW
2527 ("pkg-config" ,pkg-config)
2528 ("texinfo" ,texinfo)))
6bb5f88e
RW
2529 (home-page "https://git.elephly.net/software/guile-picture-language.git")
2530 (synopsis "Picture language for Guile")
2531 (description
2532 "This package provides a simple SVG-based picture language for Guile.
2533The picture values can directly be displayed in Geiser.")
76171095
RW
2534 ;; (pict base64) is under GPLv3+, the rest is under LGPLv3+
2535 (license (list license:lgpl3+
2536 license:gpl3+)))))
5531782d 2537
b6bee63b 2538(define-public guile2.2-picture-language
4f408684
LC
2539 (package
2540 (inherit guile-picture-language)
b6bee63b
LC
2541 (name "guile2.2-picture-language")
2542 (inputs `(("guile" ,guile-2.2)))))
2543
2544(define-public guile3.0-picture-language
2545 (deprecated-package "guile3.0-picture-language"
2546 guile-picture-language))
4f408684 2547
5531782d 2548(define-public guile-studio
6908552b
RW
2549 (let ((commit "e9f2b469cc452b384af0243f3eba2f07871090ad")
2550 (revision "2"))
c6607797
RW
2551 (package
2552 (name "guile-studio")
777ecc1e 2553 (version (git-version "0.0.4" revision commit))
c6607797
RW
2554 (source (origin
2555 (method git-fetch)
2556 (uri (git-reference
2557 (url "https://git.elephly.net/software/guile-studio.git")
2558 (commit commit)))
2559 (file-name (git-file-name name version))
2560 (sha256
2561 (base32
6908552b 2562 "16hwin8zdfyp25iczz3gr5w7hav6av6r8gw64nplgxgxkyaw53a6"))))
c6607797
RW
2563 (build-system gnu-build-system)
2564 (arguments
2565 `(#:modules
2566 ((ice-9 match)
2567 (srfi srfi-1)
2568 ,@%gnu-build-system-modules)
2569 #:tests? #f ; there are none
2570 #:make-flags
2571 (list (string-append "ICONS_DIR="
2572 (assoc-ref %build-inputs "adwaita-icon-theme")
2573 "/share/icons/Adwaita/")
2574 (string-append "PICT_DIR="
2575 (assoc-ref %build-inputs "guile-picture-language"))
2576 (string-append "EMACS_DIR="
2577 (assoc-ref %build-inputs "emacs"))
2578 (string-append "GUILE_DIR="
2579 (assoc-ref %build-inputs "guile"))
2580 (string-join (cons "INPUTS="
2581 (filter-map
2582 (lambda (input)
2583 (match input
2584 ((label . pkg)
2585 (and (string-prefix? "emacs" label) pkg))))
2586 %build-inputs)))
2587 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2588 #:phases
2589 (modify-phases %standard-phases
2590 (delete 'configure)
2591 (delete 'install))))
2592 (inputs
2593 `(("guile" ,guile-3.0)
2594 ("guile-picture-language" ,guile-picture-language)
2595 ("emacs" ,emacs)
777ecc1e
RW
2596 ("emacs-f" ,emacs-f) ; needed by doom-modeline
2597 ("emacs-memoize" ,emacs-memoize) ; needed by all-the-icons
2598 ("emacs-all-the-icons" ,emacs-all-the-icons) ; needed by doom-modeline
6908552b 2599 ("emacs-dired-sidebar" ,emacs-dired-sidebar)
777ecc1e
RW
2600 ("emacs-doom-modeline" ,emacs-doom-modeline)
2601 ("emacs-modus-themes" ,emacs-modus-themes)
c6607797
RW
2602 ("emacs-geiser" ,emacs-geiser)
2603 ("emacs-company" ,emacs-company)
777ecc1e 2604 ("emacs-ivy" ,emacs-ivy)
c6607797 2605 ("emacs-flycheck" ,emacs-flycheck)
0e7731ba 2606 ("emacs-flycheck-guile" ,emacs-flycheck-guile)
c6607797
RW
2607 ("emacs-paren-face" ,emacs-paren-face)
2608 ("adwaita-icon-theme" ,adwaita-icon-theme)))
2609 (native-inputs
2610 `(("texinfo" ,texinfo)))
2611 (home-page "https://gnu.org/software/guile")
2612 (synopsis "IDE for Guile")
2613 (description
2614 "This is Emacs with a few settings that make working with Guile easier
5531782d
RW
2615for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
2616to evaluate Guile buffers, support for Guile's very own picture language, code
2617completion, a simple mode line, etc.")
c6607797 2618 (license license:gpl3+))))
9f8698ad
RW
2619
2620(define-public guile-stis-parser
3a71dac0
MB
2621 (package
2622 (name "guile-stis-parser")
2623 (version "1.2.4.1")
2624 (source (origin
2625 (method git-fetch)
2626 (uri (git-reference
2627 (url "https://gitlab.com/tampe/stis-parser")
2628 (commit (string-append "v" version))))
2629 (file-name (git-file-name name version))
2630 (sha256
2631 (base32
2632 "1fvxdfvc80zqhwzq5x3kxyr6j8p4b51yx85fx1gr3d4gy2ddpx5w"))))
2633 (build-system gnu-build-system)
2634 (arguments
2635 `(#:parallel-build? #f ; not supported
2636 #:phases
2637 (modify-phases %standard-phases
2638 (add-after 'unpack 'chdir
2639 (lambda _ (chdir "modules") #t))
2640 (add-after 'chdir 'delete-broken-symlink
2641 (lambda _
2642 (delete-file "parser/stis-parser/lang/.#calc.scm")
2643 #t)))))
2644 (inputs
2645 `(("guile" ,guile-3.0)))
2646 (native-inputs
2647 `(("autoconf" ,autoconf)
2648 ("automake" ,automake)
2649 ("pkg-config" ,pkg-config)))
2650 (home-page "https://gitlab.com/tampe/stis-parser")
2651 (synopsis "Parser combinator framework")
2652 (description
2653 "This package provides a functional parser combinator library that
9f8698ad
RW
2654supports backtracking and a small logical framework. The idea is to build up
2655chunks that are memoized and there is no clear scanner/parser separation,
2656chunks can be expressions as well as simple tokens.")
3a71dac0 2657 (license license:lgpl2.0+)))
12d73f9c
RW
2658
2659(define-public guile-persist
09f0bc87
MB
2660 (package
2661 (name "guile-persist")
2662 (version "1.2.3")
2663 (source (origin
2664 (method git-fetch)
2665 (uri (git-reference
2666 (url "https://gitlab.com/tampe/guile-persist")
2667 (commit (string-append "v" version))))
2668 (file-name (git-file-name name version))
2669 (sha256
2670 (base32
2671 "19f8hqcax4v40858kx2j8fy1cvzc2djj99r0n17dy1xxmwa097qi"))))
2672 (build-system gnu-build-system)
2673 (arguments
2674 `(#:phases
2675 (modify-phases %standard-phases
2676 (add-after 'unpack 'patch-prefix
2677 (lambda* (#:key inputs outputs #:allow-other-keys)
2678 (substitute* "src/Makefile.am"
2679 (("/usr/local/lib/guile")
2680 (string-append (assoc-ref outputs "out") "/lib/guile"))
2681 (("/usr/local/include/guile")
2682 (string-append (assoc-ref inputs "guile") "/include/guile"))
2683 (("-L/usr/local/lib")
2684 (string-append "-L" (assoc-ref inputs "guile") "/lib")))
2685 #t))
2686 (add-after 'unpack 'patch-library-reference
2687 (lambda* (#:key outputs #:allow-other-keys)
2688 (let ((out (assoc-ref outputs "out")))
2689 (substitute* "persist/persistance.scm"
2690 (("\"libguile-persist\"")
2691 (format #f "\"~a/lib/guile/3.0/extensions/libguile-persist\"" out)))
2692 #t))))))
2693 (inputs
2694 `(("guile" ,guile-3.0)))
2695 (native-inputs
2696 `(("autoconf" ,autoconf)
2697 ("automake" ,automake)
2698 ("libtool" ,libtool)
2699 ("pkg-config" ,pkg-config)))
2700 (home-page "https://gitlab.com/tampe/guile-persist")
2701 (synopsis "Persistence programming framework for Guile")
2702 (description
2703 "This is a serialization library for serializing objects like classes
12d73f9c
RW
2704and objects, closures and structs. This currently does not support
2705serializing continuations or delimited continuations.")
09f0bc87 2706 (license license:lgpl2.0+)))
6d37301b
RW
2707
2708(define-public python-on-guile
ac944584
MB
2709 (package
2710 (name "python-on-guile")
cdf6a118 2711 (version "1.2.3.5")
ac944584
MB
2712 (home-page "https://gitlab.com/python-on-guile/python-on-guile")
2713 (source (origin
2714 (method git-fetch)
2715 (uri (git-reference (url home-page)
2716 (commit (string-append "v" version))))
2717 (file-name (git-file-name name version))
2718 (sha256
2719 (base32
cdf6a118 2720 "05xrvcj6a4gzq1ybyin270qz8wamgc7w2skyi9iy6hkpgdhxy8vf"))))
ac944584
MB
2721 (build-system gnu-build-system)
2722 (arguments
2723 `(#:parallel-build? #f ;not supported
2724 #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
2725 #:phases
2726 (modify-phases %standard-phases
2727 (add-after 'unpack 'chdir
2728 (lambda _ (chdir "modules") #t))
2729 (add-after 'chdir 'augment-GUILE_LOAD_PATH
2730 (lambda _
2731 ;; TODO: It would be better to patch the Makefile.
2732 (setenv "GUILE_LOAD_PATH"
2733 (string-append ".:"
2734 (getenv "GUILE_LOAD_PATH")))
2735 #t))
2736 (add-after 'install 'wrap
2737 (lambda* (#:key outputs #:allow-other-keys)
2738 ;; Wrap the 'python' executable so it can find its
862d6a91
MB
2739 ;; dependencies and own modules.
2740 (let* ((out (assoc-ref outputs "out"))
2741 (guile-version ,(version-major+minor
2742 (package-version guile-3.0)))
2743 (scm (string-append out "/share/guile/site/"
2744 guile-version))
2745 (ccache (string-append out "/lib/guile/" guile-version
2746 "/site-ccache"))
2747 (load-path (string-join
2748 (cons scm
2749 ;; XXX: cdr because we augment it above.
2750 (cdr (string-split
2751 (getenv "GUILE_LOAD_PATH") #\:)))
2752 ":"))
2753 (compiled-path (string-append
2754 ccache ":"
2755 (getenv "GUILE_LOAD_COMPILED_PATH"))))
ac944584
MB
2756 (wrap-program (string-append out "/bin/python")
2757 `("GUILE_LOAD_PATH" ":" prefix
862d6a91 2758 (,load-path))
ac944584 2759 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
862d6a91 2760 (,compiled-path)))
ac944584
MB
2761 #t))))))
2762 (inputs
4f33bf57
MB
2763 `(("guile" ,guile-3.0)
2764 ("guile-persist" ,guile-persist)
ac944584
MB
2765 ("guile-readline" ,guile-readline)
2766 ("guile-stis-parser" ,guile-stis-parser)))
2767 (native-inputs
2768 `(("autoconf" ,autoconf)
2769 ("automake" ,automake)
2770 ("libtool" ,libtool)
2771 ("pkg-config" ,pkg-config)))
2772 (synopsis "Python implementation in Guile")
2773 (description
2774 "This package allows you to compile a Guile Python file to any target
6d37301b 2775from @code{tree-il}.")
ac944584 2776 (license license:lgpl2.0+)))
b97b4624
RW
2777
2778(define-public guile-file-names
2779 (package
2780 (name "guile-file-names")
72a0706f 2781 (version "0.3")
b97b4624
RW
2782 (source (origin
2783 (method url-fetch)
2784 (uri (string-append "http://brandon.invergo.net/software/download/"
2785 "guile-file-names/guile-file-names-"
2786 version ".tar.gz"))
2787 (sha256
2788 (base32
72a0706f 2789 "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz"))))
b97b4624
RW
2790 (build-system gnu-build-system)
2791 (arguments
2792 `(#:phases
2793 (modify-phases %standard-phases
481eca80 2794 (add-after 'unpack 'fix-target-directory
b97b4624 2795 (lambda _
481eca80 2796 (substitute* "src/Makefile.in"
b97b4624
RW
2797 (("guilemoddir = \\$\\(GUILE_SITE\\)")
2798 "guilemoddir = $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
2799 #t)))))
2800 (inputs
2801 `(("guile" ,guile-2.2)))
2802 (native-inputs
2803 `(("pkg-config" ,pkg-config)))
2804 (home-page "https://gitlab.com/brandoninvergo/guile-file-names")
2805 (synopsis "Manipulate file names")
2806 (description
2807 "The @code{(file-names)} module provides tools for manipulating file
2808names. The module was built on the idea that doing anything more than a
2809non-trivial modification of a file name string is a pain (making sure all
2810slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
2811Inevitably, you have to break the string up into chunks and operate on that
2812list of components. This module takes care of that for you.")
2813 (license license:lgpl3+)))
bdf2dd79
JN
2814
2815(define-public guile-gi
bb6c8f20
RW
2816 (package
2817 (name "guile-gi")
c67db509 2818 (version "0.3.0")
bb6c8f20
RW
2819 (source (origin
2820 (method url-fetch)
2821 (uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
2822 version ".tar.gz"))
2823 (sha256
2824 (base32
c67db509 2825 "05xbwrk50h4f9fh8la8fk2wsxbnm0jcyb9phnpkkjq4sqkhkxlbj"))))
e4ef0d7c 2826 (build-system glib-or-gtk-build-system)
bb6c8f20 2827 (arguments
b5d4d5b9 2828 `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
e4ef0d7c 2829 #:modules ((guix build glib-or-gtk-build-system)
a431a635
RW
2830 (guix build utils)
2831 (ice-9 popen)
2832 (ice-9 rdelim))
b5d4d5b9
RW
2833 #:phases
2834 (modify-phases %standard-phases
a431a635
RW
2835 (add-after 'unpack 'patch-references-to-extension
2836 (lambda* (#:key outputs #:allow-other-keys)
2837 (let ((effective (read-line
2838 (open-pipe* OPEN_READ
2839 "guile" "-c"
2840 "(display (effective-version))"))))
2841 (substitute* '("module/gi.scm"
2842 "module/gi/oop.scm"
2843 "module/gi/documentation.scm"
2844 "module/gi/types.scm"
2845 "module/gi/repository.scm")
2846 (("\\(load-extension \"libguile-gi\" \"(.*)\"\\)" m arg)
2847 (format #f "~s"
2848 `(load-extension
2849 (format #f "~alibguile-gi"
2850 (if (getenv "GUILE_GI_UNINSTALLED")
2851 ""
e4ef0d7c 2852 ,(format #f "~a/lib/guile/~a/extensions/"
a431a635
RW
2853 (assoc-ref outputs "out")
2854 effective)))
2855 ,arg)))))
2856 (setenv "GUILE_GI_UNINSTALLED" "1")
2857 #t))
b5d4d5b9
RW
2858 (add-before 'check 'start-xorg-server
2859 (lambda* (#:key inputs #:allow-other-keys)
2860 ;; The init_check test requires a running X server.
2861 (system (format #f "~a/bin/Xvfb :1 &"
2862 (assoc-ref inputs "xorg-server")))
2863 (setenv "DISPLAY" ":1")
2864 #t)))))
bb6c8f20 2865 (native-inputs
f2d97d57 2866 `(("gettext" ,gettext-minimal)
6153fa0a 2867 ("glib:bin" ,glib "bin") ; for glib-compile-resources
bb6c8f20 2868 ("libtool" ,libtool)
b5d4d5b9
RW
2869 ("pkg-config" ,pkg-config)
2870 ("xorg-server" ,xorg-server)))
bb6c8f20
RW
2871 (propagated-inputs
2872 `(("glib" ,glib)
2873 ("gobject-introspection" ,gobject-introspection)
2874 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
2875 ("gtk+" ,gtk+)
2876 ("guile-lib" ,guile-lib)
2877 ("webkitgtk" ,webkitgtk)))
b6bee63b 2878 (inputs `(("guile" ,guile-3.0)))
bb6c8f20
RW
2879 (home-page "https://github.com/spk121/guile-gi")
2880 (synopsis "GObject bindings for Guile")
2881 (description
2882 "Guile-GI is a library for Guile that allows using GObject-based
bdf2dd79
JN
2883libraries, such as GTK+3. Its README comes with the disclaimer: This is
2884pre-alpha code.")
bb6c8f20 2885 (license license:gpl3+)))
dec4b3aa 2886
b6bee63b 2887(define-public guile2.2-gi
bfb51f5e
RW
2888 (package
2889 (inherit guile-gi)
b6bee63b 2890 (name "guile2.2-gi")
3d633a1e 2891 (inputs
b6bee63b 2892 `(("guile" ,guile-2.2)
3d633a1e 2893 ,@(alist-delete "guile" (package-inputs guile-gi))))))
bfb51f5e 2894
b6bee63b
LC
2895(define-public guile3.0-gi
2896 (deprecated-package "guile3.0-gi" guile-gi))
2897
fb6b9f3b
MB
2898(define-public guile-srfi-89
2899 (package
2900 (name "guile-srfi-89")
2901 (version "0.0.1")
2902 (source
2903 (origin
2904 (method git-fetch)
2905 (uri (git-reference
2906 (url "https://gitlab.com/mjbecze/guile-srfi-89.git")
2907 (commit version)))
2908 (sha256
2909 (base32
2910 "1981c0rrzxqx3md9jx8ir7j3m2mzg9m72b33p5jvw36zirbzpl20"))
2911 (file-name (git-file-name name version))))
2912 (build-system guile-build-system)
2913 (native-inputs
2914 `(("guile" ,guile-3.0)))
2915 (home-page "https://gitlab.com/mjbecze/guile-srfi-89")
2916 (synopsis "Hygienic implementation of SRFI-89 for Guile")
2917 (description
2918 "This package provides SRFI-89 optional positional and named
2919parameters, which define* and lambda* special forms")
2920 (license license:gpl3+)))
2921
7afbaefe
MB
2922(define-public guile-srfi-145
2923 (package
2924 (name "guile-srfi-145")
2925 (version "0.0.1")
2926 (source
2927 (origin
2928 (method git-fetch)
2929 (uri (git-reference
2930 (url "https://gitlab.com/mjbecze/guile-srfi-145.git")
2931 (commit version)))
2932 (sha256
2933 (base32
2934 "1gssa8cmcp8640fil9z8dpil8v5l279wlalqjcx3fls5jwv13q1b"))
2935 (file-name (git-file-name name version))))
2936 (build-system guile-build-system)
2937 (native-inputs
2938 `(("guile" ,guile-3.0)))
2939 (home-page "https://gitlab.com/mjbecze/guile-srfi-145")
2940 (synopsis "SRFI-145 port for Guile")
2941 (description
2942 "This package provides SRFI-145. This provides the means to
2943denote the invalidity of certain code paths in a Scheme program.")
2944 (license license:gpl3+)))
2945
e0607093
MB
2946(define-public guile-srfi-158
2947 (package
2948 (name "guile-srfi-158")
2949 (version "0.0.1")
2950 (source
2951 (origin
2952 (method git-fetch)
2953 (uri (git-reference
2954 (url "https://gitlab.com/mjbecze/guile-srfi-158.git")
2955 (commit version)))
2956 (sha256
2957 (base32
2958 "0b8hlv1bldbcwkcxi9y8mm6xp5gbgpg7b15bwqxv70iynl9d9a7c"))
2959 (file-name (git-file-name name version))))
2960 (build-system gnu-build-system)
2961 (native-inputs
2962 `(("autoconf" ,autoconf)
2963 ("automake" ,automake)
2964 ("pkg-config" ,pkg-config)))
2965 (inputs
2966 `(("guile" ,guile-3.0)))
2967 (home-page "https://gitlab.com/samplet/guile-srfi-158")
2968 (synopsis "SRFI 158 (Generators and Accumulators) for Guile")
2969 (description "This package provides an implementation of SRFI 158
2970for Guile. SRFI 158 defines utility procedures that create,
2971transform, and consume generators. It also defines procedures that
2972return accumulators. It is implemented by wrapping the sample
2973implementation in a thin Guile compatibility layer.")
2974 (license license:gpl3+)))
2975
dec4b3aa
LC
2976(define-public guile-srfi-159
2977 (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
2978 (revision "0"))
2979 (package
2980 (name "guile-srfi-159")
2981 (version (git-version "0" revision commit))
2982 (home-page "https://bitbucket.org/bjoli/guile-srfi-159")
2983 (source (origin
2984 (method hg-fetch)
2985 (uri (hg-reference (changeset commit)
2986 (url home-page)))
2987 (sha256
2988 (base32
2989 "1zw6cmcy7xdbfiz3nz9arqnn7l2daidaps6ixkcrc9b6k51fdv3p"))
2990 (file-name (git-file-name name version))))
2991 (build-system guile-build-system)
2992 (arguments
2993 ;; The *-impl.scm files are actually included from module files; they
2994 ;; should not be compiled separately, but they must be installed.
2995 '(#:not-compiled-file-regexp "-impl\\.scm$"))
2996 (inputs
2997 `(("guile" ,guile-2.2)))
2998 (synopsis "Formatting combinators for Guile")
2999 (description
3000 "The @code{(srfi-159)} module and its sub-modules implement the
3001formatting combinators specified by
3002@uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
3003more expressive and flexible than the traditional @code{format} procedure.")
3004 (license license:bsd-3))))
f0de9544 3005
08a8872f
MB
3006(define-public guile-srfi-180
3007 (let ((commit "9188bf9724c6d320ef804579d222e855b007b193")
3008 (revision "0"))
3009 (package
3010 (name "guile-srfi-180")
3011 (version (git-version "0" revision commit))
3012 (source
3013 (origin
3014 (method git-fetch)
3015 (uri (git-reference
8ed4c468 3016 (url "https://github.com/scheme-requests-for-implementation/srfi-180")
08a8872f
MB
3017 (commit commit)))
3018 (sha256
3019 (base32
3020 "08lf70rsak8mwfij55xc37pg9zg7c87fizmhz7ln46skzj68sl3y"))
3021 (modules '((guix build utils)))
3022 (snippet
3023 '(begin
3024 (delete-file-recursively "srfi/files")
3025 (delete-file "srfi/run-r7rs-checks.guile.scm")
3026 (delete-file "srfi/run-r7rs-checks.scm")
3027 (delete-file "srfi/check.scm")
3028 #t))
3029 (file-name (git-file-name name version))))
3030 (build-system guile-build-system)
3031 (arguments
3032 '(#:not-compiled-file-regexp "body\\.scm$"))
3033 (native-inputs
3034 `(("guile" ,guile-3.0)))
3035 (propagated-inputs
3036 `(("guile-srfi-145" ,guile-srfi-145)))
3037 (home-page "https://srfi.schemers.org/srfi-180/")
3038 (synopsis "JSON parser and printer for Guile")
3039 (description
3040 "This library implements a JavaScript Object Notation (JSON) parser and printer.
3041It also supports parsing JSON objects that may be bigger than memory with a streaming
3042API.")
3043 (license license:expat))))
3044
f0de9544 3045(define-public emacsy
48eb71ae
JN
3046 (package
3047 (name "emacsy")
3048 (version "0.4.1")
3049 (source (origin
3050 (method url-fetch)
3051 (uri (string-append
3052 "https://download.savannah.nongnu.org/releases/"
3053 name "/" name "-" version ".tar.gz"))
3054 (sha256
3055 (base32
3056 "1cpb85dl1nibd34c2x2h7vfmjpkgh353p5b1w20v6cs6gmvgg4np"))))
3057 (build-system gnu-build-system)
3058 (native-inputs
3059 `(("autoconf" ,autoconf)
3060 ("automake" ,automake)
3061 ("bzip2" ,bzip2)
3062 ("guile" ,guile-2.2)
f2d97d57 3063 ("gettext" ,gettext-minimal)
48eb71ae
JN
3064 ("libtool" ,libtool)
3065 ("perl" ,perl)
3066 ("pkg-config" ,pkg-config)
3067 ("texinfo" ,texinfo)
1aa026aa 3068 ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
114f02ba 3069 (inputs
48eb71ae
JN
3070 `(("dbus-glib" ,dbus-glib)
3071 ("guile" ,guile-2.2)
3072 ("guile-lib" ,guile-lib)
3073 ("guile-readline" ,guile-readline)
48eb71ae 3074 ("freeglut" ,freeglut)
48eb71ae 3075 ("webkitgtk" ,webkitgtk)))
114f02ba
AS
3076 (propagated-inputs
3077 `(("glib-networking" ,glib-networking)
3078 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
48eb71ae 3079 (arguments
114f02ba
AS
3080 `(#:modules ((guix build gnu-build-system)
3081 (guix build utils)
3082 (ice-9 popen)
3083 (ice-9 rdelim)
3084 (ice-9 regex)
3085 (ice-9 ftw)
3086 (srfi srfi-26))
3087 #:phases
48eb71ae
JN
3088 (modify-phases %standard-phases
3089 (add-before 'configure 'setenv
3090 (lambda _
3091 (setenv "GUILE_AUTO_COMPILE" "0")
114f02ba
AS
3092 #t))
3093 (add-after 'install 'wrap-binaries
3094 (lambda* (#:key inputs outputs #:allow-other-keys)
3095 (let* ((out (assoc-ref outputs "out"))
3096 (effective (read-line
3097 (open-pipe* OPEN_READ
3098 "guile" "-c"
3099 "(display (effective-version))")))
3100 (deps (map (cut assoc-ref inputs <>)
3101 '("guile-lib" "guile-readline")))
3102 (scm-path (map (cut string-append <> "/share/guile/site/"
3103 effective) `(,out ,@deps)))
3104 (go-path (map (cut string-append <> "/lib/guile/" effective
3105 "/site-ccache/") `(,out ,@deps)))
3106 (examples (filter (cut string-match "emacsy" <>)
3107 (scandir (string-append out "/bin/"))))
3108 (progs (map (cut string-append out "/bin/" <>)
3109 examples)))
3110 (map (cut wrap-program <>
3111 `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
3112 `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))
3113 progs)
3114 #t))))))
48eb71ae
JN
3115 (home-page "https://savannah.nongnu.org/projects/emacsy")
3116 (synopsis "Embeddable GNU Emacs-like library using Guile")
3117 (description
3118 "Emacsy is an embeddable Emacs-like library that uses GNU Guile
f0de9544
JN
3119as extension language. Emacsy can give a C program an Emacsy feel with
3120keymaps, minibuffer, recordable macros, history, tab completion, major
3121and minor modes, etc., and can also be used as a pure Guile library. It
48eb71ae
JN
3122comes with a simple counter example using FreeGLUT and browser examples
3123in C using Gtk+-3 and WebKitGtk.")
3124 (license license:gpl3+)))
2135610c 3125
c99f32b9 3126(define-public emacsy-minimal
e9db965f 3127 (let ((commit "v0.4.1-37-g5f91ee6"))
c99f32b9
AS
3128 (package
3129 (inherit emacsy)
3130 (name "emacsy-minimal")
9da87078 3131 (version (string-drop commit 1))
bdcb287e
MR
3132 (source
3133 (origin
3134 (method git-fetch)
3135 (uri (git-reference
3136 (url "https://git.savannah.gnu.org/git/emacsy.git")
3137 (commit commit)))
3138 (file-name (git-file-name name version))
3139 (sha256
e9db965f 3140 (base32 "03ym14g9qhjqmryr5z065kynqm8yhmvnbs2djl6vp3i9cmqln8cl"))))
c99f32b9
AS
3141 (build-system gnu-build-system)
3142 (inputs
3143 `(("guile" ,guile-2.2)
8d6ead32
MR
3144 ("guile-lib" ,guile2.2-lib)
3145 ("guile-readline" ,guile2.2-readline)))
c99f32b9
AS
3146 (propagated-inputs '())
3147 (arguments
3148 `(#:configure-flags '("--without-examples")
3149 #:phases
3150 (modify-phases %standard-phases
bdcb287e
MR
3151 (add-before 'configure 'setenv
3152 (lambda _
3153 (setenv "GUILE_AUTO_COMPILE" "0")
3154 #t))))))))
c99f32b9 3155
2135610c
LC
3156(define-public guile-jpeg
3157 (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
3158 (revision "0"))
3159 (package
3160 (name "guile-jpeg")
3161 (version (git-version "0.0" revision commit))
3162 (home-page "https://gitlab.com/wingo/guile-jpeg")
3163 (source (origin
3164 (method git-fetch)
3165 (uri (git-reference (url home-page)
3166 (commit commit)))
3167 (sha256
3168 (base32
3169 "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
3170 (file-name (git-file-name name version))
3171 (modules '((guix build utils)))
3172 (snippet
3173 '(begin
3174 ;; Install .go files in the right place.
3175 (substitute* "Makefile.am"
3176 (("/ccache") "/site-ccache"))
3177 #t))))
3178 (build-system gnu-build-system)
3179 (native-inputs
3180 `(("autoconf" ,autoconf)
3181 ("automake" ,automake)
3182 ("pkg-config" ,pkg-config)
3183 ("guile" ,guile-2.2)))
3184 (synopsis "JPEG file parsing library for Guile")
3185 (description
3186 "Guile-JPEG is a Scheme library to parse JPEG image files and to
3187perform geometrical transforms on JPEG images.")
3188 (license license:gpl3+))))
e8c2da41
AS
3189
3190(define-public nomad
3191 (package
3192 (name "nomad")
569cd538 3193 (version "0.2.0-alpha-199-g3e7a475")
e8c2da41
AS
3194 (source (origin
3195 (method git-fetch)
3196 (uri (git-reference
0e5a68a2 3197 (url "https://git.savannah.gnu.org/git/nomad.git/")
e8c2da41
AS
3198 (commit version)))
3199 (file-name (git-file-name name version))
3200 (sha256
3201 (base32
569cd538 3202 "0p0ha6prp7pyadp61clbhc6b55023vxzfwy14j2qygb2mkq7fhic"))))
e8c2da41
AS
3203 (build-system gnu-build-system)
3204 (native-inputs
3205 `(("autoconf" ,autoconf)
3206 ("automake" ,automake)
3207 ("bash" ,bash)
3208 ("pkg-config" ,pkg-config)
3209 ("libtool" ,libtool)
3210 ("guile" ,guile-2.2)
5f1553ce
AS
3211 ("glib:bin" ,glib "bin")
3212 ("texinfo" ,texinfo)
fccc0127 3213 ("gettext" ,gettext-minimal)
5f1553ce 3214 ("perl" ,perl)))
e8c2da41 3215 (inputs
0e5a68a2
MR
3216 `(;; Guile
3217 ("guile" ,guile-2.2)
19cf8342 3218 ("guile-lib" ,guile2.2-lib)
19cf8342 3219 ("guile-readline" ,guile2.2-readline)
a987f128 3220 ("guile-gcrypt" ,guile2.2-gcrypt)
e8c2da41 3221 ("gnutls" ,gnutls)
0e5a68a2 3222 ("g-golf" ,g-golf)
e8c2da41
AS
3223 ("shroud" ,shroud)
3224 ("emacsy" ,emacsy-minimal)
0e5a68a2 3225 ;; Gtk
e8c2da41
AS
3226 ("glib" ,glib)
3227 ("dbus-glib" ,dbus-glib)
0e5a68a2 3228 ("glib-networking" ,glib-networking)
e8c2da41 3229 ("gtk+" ,gtk+)
a987f128 3230 ("gtk+:bin" ,gtk+ "bin")
e8c2da41 3231 ("webkitgtk" ,webkitgtk)
0e5a68a2 3232 ("gtksourceview" ,gtksourceview)
569cd538 3233 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
0e5a68a2
MR
3234 ("vte" ,vte)
3235 ;; Gstreamer
a987f128
MR
3236 ("gstreamer" ,gstreamer)
3237 ("gst-plugins-base" ,gst-plugins-base)
3238 ("gst-plugins-good" ,gst-plugins-good)
3239 ("gst-plugins-bad" ,gst-plugins-bad)
3240 ("gst-plugins-ugly" ,gst-plugins-ugly)
0e5a68a2
MR
3241 ;; Util
3242 ("xorg-server" ,xorg-server)))
e8c2da41
AS
3243 (arguments
3244 `(#:modules ((guix build gnu-build-system)
3245 (guix build utils)
3246 (ice-9 popen)
3247 (ice-9 rdelim)
3248 (srfi srfi-26))
3249 #:phases
3250 (modify-phases %standard-phases
3251 (add-before 'check 'start-xorg-server
3252 (lambda* (#:key inputs #:allow-other-keys)
3253 ;; The test suite requires a running X server.
3254 (system (format #f "~a/bin/Xvfb :1 &"
3255 (assoc-ref inputs "xorg-server")))
3256 (setenv "DISPLAY" ":1")
3257 #t))
3258 (add-after 'install 'wrap-binaries
3259 (lambda* (#:key inputs outputs #:allow-other-keys)
0e5a68a2
MR
3260 (let* ((out (assoc-ref outputs "out"))
3261 (effective (read-line (open-pipe*
3262 OPEN_READ
3263 "guile" "-c"
3264 "(display (effective-version))")))
3265 (gst-plugins (map (lambda (i)
3266 (string-append (assoc-ref inputs i)
3267 "/lib/gstreamer-1.0"))
3268 `("gstreamer"
3269 "gst-plugins-base"
3270 "gst-plugins-good"
3271 "gst-plugins-bad"
3272 "gst-plugins-ugly")))
3273 (out-append (lambda (. args)
3274 (apply string-append out args)))
3275 (gi-path (out-append "/lib/girepository-1.0"))
3276 (load-path (out-append "/share/guile/site/" effective))
3277 (comp-path (out-append "/lib/guile/"
3278 effective "/site-ccache"))
3279 (ext-path (out-append "/libexec/nomad")))
3280 (wrap-program (string-append out "/bin/nomad")
3281 `("GUILE_LOAD_PATH" ":" prefix
3282 (,load-path
3283 ,(getenv "GUILE_LOAD_PATH")))
3284 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
3285 (,comp-path
3286 ,(getenv "GUILE_LOAD_COMPILED_PATH")))
3287 `("GI_TYPELIB_PATH" ":" prefix
3288 (,gi-path ,(getenv "GI_TYPELIB_PATH")))
3289 `("GIO_EXTRA_MODULES" ":" prefix
3290 (,(getenv "GIO_EXTRA_MODULES")))
3291 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix ,gst-plugins)
3292 `("NOMAD_WEB_EXTENSION_DIR" ":" prefix (,ext-path)))
e8c2da41
AS
3293 #t))))))
3294 (home-page "https://savannah.nongnu.org/projects/nomad/")
3295 (synopsis "Extensible Web Browser in Guile Scheme")
a987f128
MR
3296 (description "Nomad is a Emacs-like web browser that consists of a modular
3297feature-set, fully programmable in Guile Scheme.")
e8c2da41 3298 (license license:gpl3+)))
248965c9
RW
3299
3300(define-public guile-cv
3301 (package
3302 (name "guile-cv")
3303 (version "0.2.1")
3304 (source (origin
3305 (method url-fetch)
3306 (uri (string-append "mirror://gnu/guile-cv/guile-cv-"
3307 version ".tar.gz"))
3308 (sha256
3309 (base32
3310 "0qdf0s2h1xj5lbhnc1pfw69i3zg08pqy2y6869b92ydfis8r82j9"))))
3311 (build-system gnu-build-system)
3312 (arguments
3313 `(#:phases
3314 (modify-phases %standard-phases
3315 (add-after 'unpack 'prepare-build
3316 (lambda* (#:key inputs outputs #:allow-other-keys)
3317 (substitute* "configure"
3318 (("SITEDIR=\"\\$datadir/guile-cv\"")
3319 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
3320 (("SITECCACHEDIR=\"\\$libdir/guile-cv/")
3321 "SITECCACHEDIR=\"$libdir/"))
3322 (substitute* "cv/init.scm"
3323 (("\\(dynamic-link \"libvigra_c\"\\)")
3324 (string-append "(dynamic-link \""
3325 (assoc-ref inputs "vigra-c")
3326 "/lib/libvigra_c\")"))
3327 (("\\(dynamic-link \"libguile-cv\"\\)")
3328 (format #f "~s"
3329 `(dynamic-link
3330 (format #f "~alibguile-cv"
3331 (if (getenv "GUILE_CV_UNINSTALLED")
3332 ""
3333 ,(format #f "~a/lib/"
3334 (assoc-ref outputs "out"))))))))
3335 (setenv "GUILE_CV_UNINSTALLED" "1")
3336 ;; Only needed to satisfy the configure script.
3337 (setenv "LD_LIBRARY_PATH"
3338 (string-append (assoc-ref inputs "vigra-c") "/lib"))
3339 #t)))))
3340 (inputs
3341 `(("vigra" ,vigra)
3342 ("vigra-c" ,vigra-c)
3343 ("guile" ,guile-2.2)))
3344 (native-inputs
3345 `(("texlive" ,(texlive-union (list texlive-booktabs
3346 texlive-lm
3347 texlive-siunitx
3348 texlive-standalone
3349 texlive-xcolor
3350 texlive-fonts-iwona)))
3351 ("pkg-config" ,pkg-config)))
3352 (propagated-inputs
3353 `(("guile-lib" ,guile-lib)))
3354 (home-page "https://www.gnu.org/software/guile-cv/")
3355 (synopsis "Computer vision library for Guile")
3356 (description "Guile-CV is a Computer Vision functional programming library
3357for the Guile Scheme language. It is based on Vigra (Vision with Generic
3358Algorithms), a C++ image processing and analysis library. Guile-CV contains
3359bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
3360enriched with pure Guile Scheme algorithms, all accessible through a nice,
3361clean and easy to use high level API.")
3362 (license license:gpl3+)))
7ff157c1
RW
3363
3364(define-public guile-ffi-fftw
353fb48f
RW
3365 (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
3366 (revision "2"))
7ff157c1
RW
3367 (package
3368 (name "guile-ffi-fftw")
3369 (version (git-version "0" revision commit))
3370 (source (origin
3371 (method git-fetch)
3372 (uri (git-reference
b0e7b699 3373 (url "https://github.com/lloda/guile-ffi-fftw")
7ff157c1
RW
3374 (commit commit)))
3375 (file-name (git-file-name "guile-ffi-fftw" version))
3376 (sha256
3377 (base32
353fb48f 3378 "08j40a5p6a8pgvhffmzb5rfdnrav2mksy3gfjkdqy93jfj1z5afg"))))
7ff157c1
RW
3379 (build-system guile-build-system)
3380 (arguments
3381 `(#:source-directory "mod"
3382 #:phases
3383 (modify-phases %standard-phases
3384 (add-after 'unpack 'prepare-build
3385 (lambda* (#:key inputs #:allow-other-keys)
3386 (substitute* "mod/ffi/fftw.scm"
3387 (("\\(getenv \"GUILE_FFI_FFTW_LIBFFTW3_PATH\"\\)")
3388 (format #f "\"~a/lib\"" (assoc-ref inputs "fftw"))))
3389 #t))
3390 (add-after 'build 'check
3391 (lambda _
3392 (invoke "guile" "-L" "mod"
3393 "-s" "test/test-ffi-fftw.scm"))))))
3394 (inputs
3395 `(("fftw" ,fftw)
3396 ("guile" ,guile-2.2)))
3397 (home-page "https://github.com/lloda/guile-ffi-fftw/")
3398 (synopsis "Access FFTW through Guile's FFI")
3399 (description "This is a minimal set of Guile FFI bindings for the FFTW
3400library's ‘guru interface’. It provides two functions: @code{fftw-dft! rank
3401sign in out} and @code{fftw-dft rank sign in}. These bindings being minimal,
3402there is no support for computing & reusing plans, or split r/i transforms, or
3403anything other than straight complex DFTs.")
353fb48f 3404 (license license:lgpl3+))))
f9ec89f4
TS
3405
3406(define-public srfi-64-driver
3407 (package
3408 (name "srfi-64-driver")
3409 (version "0.1")
3410 (source (origin
3411 (method url-fetch)
3412 (uri (string-append "https://files.ngyro.com/srfi-64-driver/"
3413 "srfi-64-driver-" version ".tar.gz"))
3414 (sha256
3415 (base32
3416 "188b6mb7sjjg0a8zldikinglf40ky8mg8rwh5768gjmch6gkk3ph"))))
3417 (build-system gnu-build-system)
3418 (arguments
3419 `(#:tests? #f
3420 #:phases
3421 (modify-phases %standard-phases
3422 (delete 'build))))
3423 (native-inputs
3424 `(("pkg-config" ,pkg-config)))
3425 (inputs
3426 `(("guile" ,guile-2.2)))
3427 (home-page "https://ngyro.com/software/srfi-64-driver.html")
3428 (synopsis "Automake test driver for SRFI 64 test suites")
3429 (description "This package provides an Automake test driver that can
3430run SRFI 64 test suites. It gives Automake insight into the individual
3431tests being run, resulting clearer and more specific output.")
3432 (license license:gpl3+)))
f6bf4b2c
TS
3433
3434(define-public guile-semver
3435 (package
3436 (name "guile-semver")
85ced665 3437 (version "0.1.1")
f6bf4b2c
TS
3438 (source (origin
3439 (method url-fetch)
3440 (uri (string-append "https://files.ngyro.com/guile-semver/"
3441 "guile-semver-" version ".tar.gz"))
3442 (sha256
3443 (base32
85ced665 3444 "109p4n39ln44cxvwdccf9kgb96qx54makvd2ir521ssz6wchjyag"))))
f6bf4b2c
TS
3445 (build-system gnu-build-system)
3446 (native-inputs
85ced665 3447 `(("pkg-config" ,pkg-config)))
f6bf4b2c 3448 (inputs
720e87fe 3449 `(("guile" ,guile-3.0)))
f6bf4b2c
TS
3450 (home-page "https://ngyro.com/software/guile-semver.html")
3451 (synopsis "Semantic Versioning (SemVer) for Guile")
3452 (description "This Guile library provides tools for reading,
3453comparing, and writing Semantic Versions. It also includes ranges in
3454the style of the Node Package Manager (NPM).")
3455 (license license:gpl3+)))
d67fa5c8 3456
b488b64a 3457(define-public guile3.0-semver
720e87fe
LC
3458 (deprecated-package "guile3.0-semver" guile-semver))
3459
3460(define-public guile2.2-semver
b488b64a
MB
3461 (package
3462 (inherit guile-semver)
720e87fe 3463 (name "guile2.2-semver")
b488b64a 3464 (inputs
720e87fe 3465 `(("guile" ,guile-2.2)))))
b488b64a 3466
d67fa5c8
LC
3467(define-public guile-hashing
3468 (package
3469 (name "guile-hashing")
3470 (version "1.2.0")
3471 (home-page "https://github.com/weinholt/hashing")
3472 (source (origin
3473 (method git-fetch)
3474 (uri (git-reference
3475 (url home-page)
3476 (commit (string-append "v" version))))
3477 (file-name (git-file-name name version))
3478 (sha256
3479 (base32
3480 "1362d3lmpv7slmv1zmr9wy8panq9sjr9787gc2hagd646mpsfpkl"))))
3481 (build-system guile-build-system)
3482 (arguments
3483 `(#:modules ((guix build guile-build-system)
3484 (guix build utils)
3485 (srfi srfi-26)
3486 (ice-9 ftw))
3487 #:implicit-inputs? #f ;needs nothing but Guile
3488 #:phases (modify-phases %standard-phases
3489 (add-before 'build 'move-sls-files
3490 (lambda _
3491 ;; Move the source under hashing/ in order to match
3492 ;; module names, and rename .sls files to .scm.
3493 (define (target file)
3494 (string-append "hashing/" file))
3495
3496 (define (sls->scm sls)
3497 (string-append (string-drop-right sls 4)
3498 ".scm"))
3499
3500 (mkdir "hashing")
3501 (for-each (lambda (file)
3502 (rename-file file (sls->scm file)))
3503 (find-files "." "\\.sls$"))
3504 (for-each (lambda (file)
3505 (rename-file file (target file)))
3506 (scandir "." (cut string-suffix? ".scm" <>)))
3507 (rename-file "private" "hashing/private")
3508 #t)))))
3509 (native-inputs
b6bee63b 3510 `(("guile" ,guile-3.0)))
d67fa5c8
LC
3511 (synopsis "Cryprographic hash functions implemented in Scheme")
3512 (description
3513 "The @code{(hashing @dots{})} modules implement cryptographic hash
3514functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
3515SHA-512).")
3516 (license license:expat)))
f918a8d9 3517
b6bee63b 3518(define-public guile2.2-hashing
f918a8d9
LC
3519 (package
3520 (inherit guile-hashing)
b6bee63b 3521 (name "guile2.2-hashing")
f918a8d9 3522 (native-inputs
318e1a93 3523 `(("guile" ,guile-2.2)))))
ef2b1d2c 3524
b6bee63b
LC
3525(define-public guile3.0-hashing
3526 (deprecated-package "guile3.0-hashing" guile-hashing))
3527
60c9264b
LC
3528(define-public guile-packrat
3529 (package
3530 (name "guile-packrat")
3531 (version "0.1.1")
3532 (home-page "https://github.com/weinholt/packrat")
3533 (source (origin
3534 (method git-fetch)
3535 (uri (git-reference
3536 (url home-page)
3537 (commit (string-append "v" version))))
3538 (file-name (git-file-name name version))
3539 (sha256
3540 (base32
3541 "1aga17164fkhbgllqc7ni6fk5zl8mkmgkl5zcsy67x7ngpyalbby"))))
3542 (build-system guile-build-system)
3543 (arguments
3544 `(#:implicit-inputs? #f ;needs nothing but Guile
3545 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3546 #:not-compiled-file-regexp "/extensible\\.scm$"
3547 #:phases (modify-phases %standard-phases
3548 (add-before 'build 'no-srfi-23
3549 (lambda _
3550 (substitute* "packrat.sls"
3551 (("\\(srfi :23 error\\)")
3552 (object->string '(only (guile) error))))
3553 #t)))))
3554 (native-inputs
3555 `(("guile" ,guile-3.0)))
3556 (synopsis "Packrat parser library in R6RS Scheme")
3557 (description
3558 "This is an R6RS Scheme adaptation of the
3559@uref{https://bford.info/packrat/, packrat parsing}. Packrat parsing is a
3560memoizing, backtracking, recursive-descent parsing technique that runs in time
3561and space linear in the size of the input text.")
3562 (license license:expat)))
3563
97a77eab
LC
3564(define-public guile-ac-d-bus
3565 (package
3566 (name "guile-ac-d-bus")
933fdd55 3567 (version "1.0.0-beta.0")
97a77eab
LC
3568 (home-page "https://gitlab.com/weinholt/ac-d-bus/")
3569 (source (origin
3570 (method git-fetch)
3571 (uri (git-reference
3572 (url home-page)
3573 (commit (string-append "v" version))))
3574 (file-name (git-file-name name version))
3575 (sha256
3576 (base32
933fdd55 3577 "0rl809qimhgz6b0rixakb42r2l4g53jr09a2g0s1hxgab0blz0kb"))))
97a77eab
LC
3578 (build-system guile-build-system)
3579 (arguments
3580 `(#:implicit-inputs? #f ;needs nothing but Guile
3581 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3582 #:phases (modify-phases %standard-phases
3583 (add-before 'build 'adjust-for-guile
3584 (lambda _
3585 ;; Adjust source file names for Guile.
3586 (define (guile-sls->sls file)
3587 (string-append (string-drop-right
3588 file (string-length ".guile.sls"))
3589 ".sls"))
3590
3591 ;; Remove files targeting other implementations:
3592 ;; *.mosh.sls, etc.
3593 (for-each delete-file
3594 (find-files
3595 "compat"
3596 (lambda (file stat)
3597 (not (string-contains file ".guile.")))))
3598
3599 ;; Rename *.guile.sls to *.sls so the ".guile" bit does
3600 ;; not appear in .go file names.
3601 (for-each (lambda (file)
3602 (rename-file file (guile-sls->sls file)))
3603 (find-files "compat" "\\.guile\\.sls"))
3604
3605 ;; Move directories under d-bus/ to match module names.
3606 (mkdir "d-bus")
3607 (for-each (lambda (directory)
3608 (rename-file directory
3609 (string-append "d-bus/"
3610 directory)))
3611 '("compat" "protocol"))
3612
3613 #t)))))
3614 (native-inputs
3615 `(("guile" ,guile-3.0)))
3616 (propagated-inputs
3617 `(("guile-packrat" ,guile-packrat)))
3618 (synopsis "D-Bus protocol implementation in R6RS Scheme")
3619 (description
3620 "AC/D-Bus is an implementation of the D-Bus wire protocol. D-Bus is an
3621interprocess communication protocol popular on GNU/Linux systems to
3622communicate with a variety of services. Originally designed for desktop
3623environments, it is now used by programs like VLC media player, BlueZ,
3624NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit,
3625gnome-keyring, and many more.")
3626 (license license:expat)))
3627
ef2b1d2c
RW
3628(define-public guile-webutils
3629 (let ((commit "8541904f761066dc9c27b1153e9a838be9a55299")
3630 (revision "0"))
3631 (package
3632 (name "guile-webutils")
3633 (version (git-version "0.1" revision commit))
3634 (source (origin
3635 (method git-fetch)
3636 (uri (git-reference
3637 (url "https://notabug.org/cwebber/guile-webutils.git")
3638 (commit commit)))
3639 (file-name (git-file-name name version))
3640 (sha256
3641 (base32
0a76d7a9
RW
3642 "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64"))
3643 (modules '((guix build utils)))
3644 (snippet
3645 '(begin
3646 ;; Allow builds with Guile 3.0.
3647 (substitute* "configure.ac"
3648 (("2\\.2 2\\.0")
3649 "3.0 2.2 2.0"))
3650 #t))))
ef2b1d2c
RW
3651 (build-system gnu-build-system)
3652 (native-inputs
3653 `(("autoconf" ,autoconf)
3654 ("automake" ,automake)
3655 ("pkg-config" ,pkg-config)
3656 ("texinfo" ,texinfo)))
3657 (inputs
0a76d7a9 3658 `(("guile" ,guile-3.0)))
ef2b1d2c
RW
3659 (propagated-inputs
3660 `(("guile-irregex" ,guile-irregex)
3661 ("guile-gcrypt" ,guile-gcrypt)))
3662 (home-page "https://notabug.org/cwebber/guile-webutils")
3663 (synopsis "Web application authoring utilities for Guile")
3664 (description
3665 "This package provides tooling to write web applications in Guile, such
3666as signed sessions, multipart message support, etc.")
3667 (license license:gpl3+))))
5479cef8 3668
0a76d7a9
RW
3669(define-public guile2.2-webutils
3670 (package
3671 (inherit guile-webutils)
3672 (name "guile2.2-webutils")
3673 (inputs
3674 `(("guile" ,guile-2.2)))
3675 (propagated-inputs
3676 `(("guile-irregex" ,guile2.2-irregex)
3677 ("guile-gcrypt" ,guile2.2-gcrypt)))))
3678
5479cef8
RW
3679(define-public guile-lens
3680 (let ((commit "14b15d07255f9d3f55d40a3b750d13c9ee3a154f")
3681 (revision "0"))
3682 (package
3683 (name "guile-lens")
3684 (version (git-version "0.1" revision commit))
3685 (source (origin
3686 (method git-fetch)
3687 (uri (git-reference
3688 (url "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3689 (commit commit)))
3690 (file-name (git-file-name name version))
3691 (sha256
3692 (base32
3693 "0w8jzqyla56yrgj7acsgd4nspyir6zgp3vgxid4xmwhg9wmf1ida"))))
3694 (build-system gnu-build-system)
3695 (arguments
3696 '(#:phases
3697 (modify-phases %standard-phases
3698 (add-after 'unpack 'run-hall
3699 (lambda _
3700 (setenv "HOME" "/tmp") ; for ~/.hall
3701 (invoke "hall" "dist" "-x"))))))
3702 (native-inputs
3703 `(("autoconf" ,autoconf)
3704 ("automake" ,automake)
ca24b3fb 3705 ("guile" ,guile-3.0)
5479cef8
RW
3706 ("guile-hall" ,guile-hall)
3707 ("pkg-config" ,pkg-config)
3708 ("texinfo" ,texinfo)))
3709 (home-page "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3710 (synopsis "Composable lenses for data structures in Guile")
3711 (description
3712 "Guile-Lens is a library implementing lenses in Guile. The library is
3713currently a re-implementation of the lentes library for Clojure. Lenses
3714provide composable procedures, which can be used to focus, apply functions
3715over, or update a value in arbitrary data structures.")
3716 (license license:gpl3+))))
69bb61f1 3717
ca24b3fb
RW
3718(define-public guile2.2-lens
3719 (package
3720 (inherit guile-lens)
3721 (name "guile2.2-lens")
3722 (native-inputs
3723 `(("guile" ,guile-2.2)
3724 ,@(alist-delete "guile" (package-native-inputs guile-lens))))))
3725
69bb61f1 3726(define-public guile-xapian
d10e7a34
RW
3727 (package
3728 (name "guile-xapian")
3729 (version "0.1.0")
3730 (home-page "https://git.systemreboot.net/guile-xapian")
3731 (source
3732 (origin
3733 (method git-fetch)
3734 (uri (git-reference (url home-page)
3735 (commit (string-append "v" version))))
3736 (file-name (git-file-name name version))
3737 (sha256
3738 (base32
3739 "16k61f1jn3g48jaf3730b9l0izr5j933jzyri73nmcnjd09gm35i"))))
3740 (build-system gnu-build-system)
3741 (arguments
3742 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
3743 (inputs
93989aed 3744 `(("guile" ,guile-3.0)
d10e7a34
RW
3745 ("xapian" ,xapian)
3746 ("zlib" ,zlib)))
3747 (native-inputs
3748 `(("autoconf" ,autoconf)
3749 ("autoconf-archive" ,autoconf-archive)
3750 ("automake" ,automake)
3751 ("libtool" ,libtool)
3752 ("pkg-config" ,pkg-config)
3753 ("swig" ,swig)))
3754 (synopsis "Guile bindings for Xapian")
3755 (description "@code{guile-xapian} provides Guile bindings for Xapian, a
69bb61f1
AI
3756search engine library. Xapian is a highly adaptable toolkit which allows
3757developers to easily add advanced indexing and search facilities to their own
3758applications. It has built-in support for several families of weighting
3759models and also supports a rich set of boolean query operators.")
d10e7a34 3760 (license license:gpl2+)))
69bb61f1 3761
93989aed 3762(define-public guile2.2-xapian
69bb61f1
AI
3763 (package
3764 (inherit guile-xapian)
93989aed 3765 (name "guile2.2-xapian")
69bb61f1 3766 (inputs
93989aed 3767 `(("guile" ,guile-2.2)
69bb61f1 3768 ,@(alist-delete "guile" (package-inputs guile-xapian))))))
be789065 3769
93989aed
LC
3770(define-public guile3.0-xapian
3771 (deprecated-package "guile3.0-xapian" guile-xapian))
3772
be789065
AS
3773(define-public guile-torrent
3774 (package
3775 (name "guile-torrent")
3776 (version "0.1.3")
3777 (source (origin (method git-fetch)
3778 (uri (git-reference
3779 (url
8ed4c468 3780 "https://github.com/o-nly/torrent")
be789065
AS
3781 (commit version)))
3782 (file-name (git-file-name name version))
3783 (sha256
3784 (base32
3785 "1yiagi55ncq1x7s9n7salzywjm4l96y3n7y3s47a9anvz87mrmim"))))
3786 (build-system gnu-build-system)
3787 (native-inputs
3788 `(("autoconf" ,autoconf)
3789 ("automake" ,automake)
3790 ("guile" ,guile-2.2)
3791 ("texinfo" ,texinfo)
3792 ("perl" ,perl)
3793 ("pkg-config" ,pkg-config)))
3794 (propagated-inputs
3795 `(("guile-gcrypt" ,guile-gcrypt)))
3796 (home-page "https://github.com/o-nly/torrent")
3797 (synopsis "Torrent library for GNU Guile")
3798 (description "This package provides facilities for working with
3799@code{.torrent} or metainfo files. Implements a bencode reader and writer
3800according to Bitorrent BEP003.")
3801 (license license:gpl3+)))
3c0456c6
RW
3802
3803(define-public guile-irc
3804 (let ((commit "375d3bde9c6ae7ccc9d7cc65817966b6fda8f26a")
3805 (revision "0"))
3806 (package
3807 (name "guile-irc")
3808 (version (git-version "0.3.0" revision commit))
3809 (source (origin
3810 (method git-fetch)
3811 (uri (git-reference
b0e7b699 3812 (url "https://github.com/rekado/guile-irc")
3c0456c6
RW
3813 (commit commit)))
3814 (file-name (git-file-name name version))
3815 (sha256
3816 (base32
3817 "113lcckcywrz9060w1c3fnvr8d7crdsjgsv4h47hgmr1slgadl4y"))))
3818 (build-system gnu-build-system)
3819 (arguments
3820 `(#:configure-flags '("--enable-gnutls=yes")))
3821 (native-inputs
3822 `(("autoconf" ,autoconf)
3823 ("automake" ,automake)
3824 ("texinfo" ,texinfo)))
3825 (inputs
3826 `(("gnutls" ,gnutls)
b4412382 3827 ("guile" ,guile-3.0)))
3c0456c6
RW
3828 (home-page "https://github.com/rekado/guile-irc")
3829 (synopsis "IRC library for Guile")
3830 (description "This package provides a Guile library for @dfn{Internet
3831Relay Chat} (IRC).")
3832 ;; Some file headers incorrectly say LGPLv2+.
3833 (license license:lgpl2.1+))))
8ffc20ef 3834
b141e1d5 3835(define-public guile-websocket
8ffc20ef
ES
3836 (let ((commit "c854e0f84a40d972cbd532bbb89c97ca0126a7cf"))
3837 (package
b141e1d5 3838 (name "guile-websocket")
8ffc20ef
ES
3839 (version "0.1")
3840 (source
3841 (origin
3842 (method git-fetch)
3843 (uri (git-reference
3844 (url "git://dthompson.us/guile-websocket.git")
3845 (commit commit)))
3846 (file-name (git-file-name name version))
3847 (sha256
3848 (base32
3849 "1hymvsfrmq9qxr5cxnsgdz7y757yp1cpsgxmdp3f5wxxxpqgsmzx"))))
3850 (build-system gnu-build-system)
3851 (arguments
3852 '(#:make-flags
3853 '("GUILE_AUTO_COMPILE=0")
3854 #:phases
3855 (modify-phases %standard-phases
3856 ;; The package was developed for Guile 2.0 and has this version
3857 ;; hardcoded in the configure.ac and Makefile.am files. Substitute
3858 ;; 3.0 instead so it can support Guile 3.0.
3859 (add-after 'unpack 'update-guile-version
3860 (lambda _
3861 (substitute* "configure.ac"
3862 (("2.0.9") "3.0.0"))
3863 (substitute* "Makefile.am"
cea91813
LC
3864 (("2.0") "3.0")
3865
3866 ;; Install .go files where they belong.
3867 (("/ccache") "/site-ccache"))
8ffc20ef
ES
3868 #t)))))
3869 (native-inputs
3870 `(("autoconf" ,autoconf)
3871 ("automake" ,automake)))
3872 (inputs
b141e1d5 3873 `(("guile" ,guile-3.0)))
8ffc20ef
ES
3874 (synopsis "Websocket server/client for Guile")
3875 (description "Guile-websocket provides an implementation of the
3876WebSocket protocol as defined by RFC 6455.")
3877 (home-page "https://git.dthompson.us/guile-websocket.git")
3878 (license license:lgpl3+))))
b141e1d5
LC
3879
3880(define-public guile3.0-websocket
3881 (deprecated-package "guile3.0-websocket" guile-websocket))
c08f235b
JL
3882
3883(define-public guile-rdf
3884 (package
3885 (name "guile-rdf")
3886 (version "1.0")
3887 (source
3888 (origin
3889 (method git-fetch)
3890 (uri (git-reference
3891 (url "https://framagit.org/tyreunom/guile-rdf")
3892 (commit version)))
3893 (file-name (git-file-name name version))
3894 (sha256
3895 (base32
3896 "0dwn3app1fscbpmpgvjs5jy1y0gwy3j5gdx8br79af6a88zjlnqf"))))
3897 (build-system gnu-build-system)
3898 (arguments
3899 `(#:tests? #f)); tests require network
3900 (inputs
3901 `(("guile" ,guile-3.0)))
3902 (native-inputs
3903 `(("automake" ,automake)
3904 ("autoconf" ,autoconf)
3905 ("pkg-config" ,pkg-config)
3906 ("texinfo" ,texinfo)))
3907 (home-page "https://framagit.org/tyreunom/guile-rdf")
3908 (synopsis "Guile implementation of the RDF abstract and concrete syntaxes")
3909 (description "Guile RDF is an implementation of the RDF (Resource Description
3910Framework) format defined by the W3C for GNU Guile. RDF structures include
3911triples (facts with a subject, a predicate and an object), graphs which are
3912sets of triples, and datasets, which are collections of graphs.
3913
3914RDF specifications include the specification of concrete syntaxes and of
3915operations on graphs. This library implements some basic functionalities,
3916such as parsing and producing turtle and nquads syntax, as well as
3917manipulating graphs and datasets.")
3918 (license license:gpl3+)))
d1fa24af
JL
3919
3920(define-public guile-jsonld
3921 (package
3922 (name "guile-jsonld")
1bad456e 3923 (version "1.0.2")
d1fa24af
JL
3924 (source
3925 (origin
3926 (method git-fetch)
3927 (uri (git-reference
3928 (url "https://framagit.org/tyreunom/guile-jsonld")
3929 (commit version)))
3930 (file-name (git-file-name name version))
3931 (sha256
3932 (base32
1bad456e 3933 "1ryyvh71899z2inivqglb8d78zzp1sd0wv9a56kvcmrxf1966z6r"))))
d1fa24af
JL
3934 (build-system gnu-build-system)
3935 (arguments
3936 `(#:tests? #f)); require network
3937 (propagated-inputs
3938 `(("guile-gnutls" ,gnutls)
1bad456e 3939 ("guile-json" ,guile-json-4)
d1fa24af
JL
3940 ("guile-rdf" ,guile-rdf)))
3941 (inputs
3942 `(("guile" ,guile-3.0)))
3943 (native-inputs
3944 `(("automake" ,automake)
3945 ("autoconf" ,autoconf)
3946 ("pkg-config" ,pkg-config)
3947 ("texinfo" ,texinfo)))
3948 (home-page "https://framagit.org/tyreunom/guile-jsonld")
3949 (synopsis "Guile implementation of the JsonLD API specification")
3950 (description "Guile JsonLD is an implementation of the JsonLD (Json for
3951Linked Data) API defined by the W3C for GNU Guile. It allows you to express links
3952between data, in a way that is very similar to WikiData or RDF for instance.
3953An object can have relations (in the form of an IRI) that relates it to one or
3954more objects or strings, represented by a Json object or an IRI.")
3955 (license license:gpl3+)))
a684e6e2
MB
3956
3957(define-public guile-struct-pack
3958 (package
3959 (name "guile-struct-pack")
3960 (version "1.1.1")
3961 (source
3962 (origin
3963 (method git-fetch)
3964 (uri (git-reference
3965 (url "https://github.com/weinholt/struct-pack")
3966 (commit (string-append "v" version))))
3967 (file-name (git-file-name name version))
3968 (sha256
3969 (base32 "0hd72m821pahjphzyjn26i55542v8makr55xzjll2cycja4wsbc1"))))
3970 (build-system guile-build-system)
3971 (arguments
3972 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3973 #:modules ((guix build guile-build-system)
3974 (guix build utils)
3975 (srfi srfi-26)
3976 (ice-9 ftw))
3977 #:phases (modify-phases %standard-phases
3978 (add-before 'build 'move-sls-files
3979 (lambda _
3980 ;; Move files under a struct/ directory to reflect the
3981 ;; module hierarchy.
3982 (define dst-folder "struct")
3983 (define (target file)
3984 (string-append dst-folder "/" file))
3985 (define files
3986 (scandir "." (negate (cut member <> '("." "..")))))
3987 (mkdir dst-folder)
3988 (for-each (lambda (file)
3989 (rename-file file (target file)))
3990 files)
3991 #t)))))
3992 (native-inputs
3993 `(("guile" ,guile-3.0)))
3994 (home-page "https://github.com/weinholt/struct-pack")
3995 (synopsis "R6RS library for working with packed byte structures")
3996 (description
3997 "This is an R6RS library for working with packed byte structures. It is
3998similar to struct in Python or pack and unpack in Perl.")
3999 (license license:expat)))
199da208
MB
4000
4001(define-public guile-machine-code
4002 (package
4003 (name "guile-machine-code")
4004 (version "2.1.0")
4005 (source
4006 (origin
4007 (method git-fetch)
4008 (uri (git-reference
4009 (url "https://github.com/weinholt/machine-code")
4010 (commit (string-append "v" version))))
4011 (file-name (git-file-name name version))
4012 (sha256
4013 (base32 "0wzj3caj2jypzyjqfkfqkvr3kkbjabsnhldv9kvnx9w9qnria5yd"))))
4014 (build-system guile-build-system)
4015 (arguments
4016 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
4017 #:modules ((guix build guile-build-system)
4018 (guix build utils)
4019 (srfi srfi-26)
4020 (ice-9 ftw))
4021 #:phases (modify-phases %standard-phases
4022 (add-before 'build 'move-sls-files
4023 (lambda _
4024 ;; Move files under a struct/ directory to reflect the
4025 ;; module hierarchy.
4026 (define dst-folder "machine-code")
4027 (define (target file)
4028 (string-append dst-folder "/" file))
4029 (define files
4030 (scandir "." (negate (cut member <> '("." "..")))))
4031 (mkdir dst-folder)
4032 (for-each (lambda (file)
4033 (rename-file file (target file)))
4034 files)
4035 #t)))))
4036 (native-inputs
4037 `(("guile" ,guile-3.0)))
4038 (propagated-inputs
4039 `(("guile-struct-pack" ,guile-struct-pack)))
4040 (home-page "https://github.com/weinholt/machine-code")
4041 (synopsis "Tools that relate to machine code and object formats")
4042 (description
4043 "This project is about the development of tools that relate to machine
4044code and object formats; for all architectures. Here you'll find libraries
4045for working with binary code: assembly, disassembly, instruction tables,
4046object formats and related areas.")
4047 (license license:expat)))
3826288f
MB
4048
4049(define-public guile-laesare
4050 (package
4051 (name "guile-laesare")
4052 (version "1.0.0")
4053 (source
4054 (origin
4055 (method git-fetch)
4056 (uri (git-reference
4057 (url "https://github.com/weinholt/laesare")
4058 (commit (string-append "v" version))))
4059 (file-name (git-file-name name version))
4060 (sha256
4061 (base32 "15q619gzw717r8r1ql23zfdaibpnp9qqs96032vdc3rj74msxc92"))))
4062 (build-system guile-build-system)
4063 (arguments
4064 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
4065 #:modules ((guix build guile-build-system)
4066 (guix build utils)
4067 (srfi srfi-26)
4068 (ice-9 ftw))
4069 #:phases (modify-phases %standard-phases
4070 (add-before 'build 'move-sls-files
4071 (lambda _
4072 ;; Move files under a laesare directory to reflect
4073 ;; the module hierarchy.
4074 (define dst-folder "laesare")
4075 (define (target file)
4076 (string-append dst-folder "/" file))
4077 (define files
4078 (scandir "." (negate (cut member <> '("." "..")))))
4079 (mkdir dst-folder)
4080 (for-each (lambda (file)
4081 (rename-file file (target file)))
4082 files)
4083 #t)))))
4084 (native-inputs
4085 `(("guile" ,guile-3.0)))
4086 (home-page "https://github.com/weinholt/laesare")
4087 (synopsis "R6RS Scheme library that provides a reader")
4088 (description
4089 "This is an R6RS Scheme library that provides a reader with some extra
4090features not found in the standard read procedure such as a compatible mode
4091with support for other RnRS standards and a tolerant mode that continues on
4092errors.")
4093 (license license:expat)))
465a951c
MO
4094
4095(define-public guile-avahi
d7f2b1e5
MO
4096 (let ((commit "6d43caf64f672a9694bf6c98bbf7a734f17a51e8")
4097 (revision "1"))
4098 (package
4099 (name "guile-avahi")
4100 (version (git-version "0.4.0" revision commit))
4101 (source (origin
4102 (method git-fetch)
4103 (uri (git-reference
4104 (url "git://git.sv.gnu.org/guile-avahi.git")
4105 (commit commit)))
4106 (file-name (git-file-name name version))
4107 (sha256
4108 (base32
4109 "0fvrf8x22yvc71180hd3xkhspg9yvadi0pbv8shzlsaxqncwy1m9"))
4110 (modules '((guix build utils)))))
4111 (build-system gnu-build-system)
4112 (arguments
4113 `(#:modules (((guix build guile-build-system)
4114 #:select (target-guile-effective-version))
4115 ,@%gnu-build-system-modules)
4116 #:imported-modules ((guix build guile-build-system)
4117 ,@%gnu-build-system-modules)
4118 #:make-flags
4119 '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
4120 #:phases
4121 (modify-phases %standard-phases
4122 (add-before 'check 'fix-guile-avahi-file-name
4123 (lambda* (#:key outputs #:allow-other-keys)
4124 (with-directory-excursion "src"
4125 (invoke "make" "install"
4126 "-j" (number->string
4127 (parallel-job-count))))
4128 (let* ((out (assoc-ref outputs "out"))
4129 (files (find-files "modules" ".scm")))
4130 (substitute* files
4131 (("\"guile-avahi-v-0\"")
4132 (format #f "\"~a/lib/guile/~a/extensions/guile-avahi-v-0\""
4133 out (target-guile-effective-version))))
4134 #t))))))
4135 (inputs
4136 `(("guile" ,guile-3.0)
4137 ("avahi" ,avahi)))
4138 (native-inputs
4139 `(("autoconf" ,autoconf)
4140 ("automake" ,automake)
4141 ("libtool" ,libtool)
d7f2b1e5
MO
4142 ("pkg-config" ,pkg-config)
4143 ("texinfo" ,texinfo)))
4144 (synopsis "Guile bindings to Avahi")
4145 (description
4146 "This package provides bindings for Avahi. It allows programmers to
4147use functionalities of the Avahi client library from Guile Scheme programs.
4148Avahi itself is an implementation of multicast DNS (mDNS) and DNS Service
465a951c 4149Discovery (DNS-SD).")
d7f2b1e5
MO
4150 (home-page "https://www.nongnu.org/guile-avahi/")
4151 (license license:lgpl3+))))
a8c1eaba 4152
4153(define-public guile-mkdir-p
4154 (package
4155 (name "guile-mkdir-p")
4156 (version "1.0.1")
4157 (source
4158 (origin
4159 (method git-fetch)
4160 (uri (git-reference
4161 (url "https://code.divoplade.fr/mkdir-p.git")
4162 (commit (string-append "v" version))))
4163 (sha256
4164 (base32 "01k20rjcv6p0spmw8ls776aar6bfw0jxw46d2n12w0cb2p79xjv8"))
4165 (file-name (git-file-name name version))
4166 (snippet
4167 `(begin
4168 (with-output-to-file ".tarball-version"
4169 (lambda _ (format #t "~a~%" ,version)))
4170 #t))))
4171 (build-system gnu-build-system)
4172 (arguments `())
4173 (native-inputs
4174 `(("guile" ,guile-3.0)
4175 ("texinfo" ,texinfo)
4176 ("autoconf" ,autoconf)
4177 ("autoconf-archive" ,autoconf-archive)
4178 ("automake" ,automake)
4179 ("pkg-config" ,pkg-config)
fccc0127 4180 ("gettext" ,gettext-minimal)))
a8c1eaba 4181 (inputs `(("guile" ,guile-3.0)))
4182 (synopsis "Implementation of a recursive @code{mkdir} for Guile")
4183 (description
4184 "This package provides within the @code{(mkdir-p)} module the
4185@code{mkdir-p} function that tries to create the chain of directories
4186recursively. It also provides new versions of @code{open-output-file},
4187@code{call-with-output-file} and @code{with-output-to-file} to create the
4188directory of its argument if it does not exist.")
4189 (home-page "https://mkdir-p.divoplade.fr")
4190 (license license:asl2.0)))
f53c1005 4191
4192(define-public guile-sodium
4193 (package
4194 (name "guile-sodium")
4195 (version "0.1.0")
4196 (source
4197 (origin
4198 (method git-fetch)
4199 (uri (git-reference
4200 (url "https://inqlab.net/git/guile-sodium.git")
4201 (commit (string-append "v" version))))
4202 (file-name (git-file-name name version))
4203 (sha256 (base32 "189jsj87hycs57a54x0b9lifwvhr63nypb9vfxdrq7rwrpcvi5f8"))))
4204 (build-system gnu-build-system)
4205 (arguments `())
4206 (native-inputs
4207 `(("autoconf" ,autoconf)
4208 ("automake" ,automake)
4209 ("pkg-config" ,pkg-config)
4210 ("texinfo" ,texinfo)))
4211 (inputs `(("guile" ,guile-3.0)))
4212 (propagated-inputs `(("libsodium" ,libsodium)))
4213 (synopsis "Guile bindings to the libsodium cryptographic library")
4214 (description
4215 "This package provides Guile bindings to the libsodium cryptographic library
4216which provides core cryptographic primitives needed to build higher-level
4217tools.")
4218 (home-page "https://inqlab.net/git/guile-sodium.git")
4219 (license license:gpl3+)))
208cb960 4220
4221(define-public guile-eris
4222 (package
4223 (name "guile-eris")
4224 (version "0.2.0")
4225 (source
4226 (origin
4227 (method git-fetch)
4228 (uri (git-reference
4229 (url "https://inqlab.net/git/eris.git")
4230 (commit (string-append "v" version))))
4231 (file-name (git-file-name name version))
4232 (sha256 (base32 "1ijglmwkdy1l87gj429qfjis0v8b1zlxhbyfhx5za8664h68nqka"))))
4233 (build-system gnu-build-system)
4234 (arguments '())
4235 (native-inputs
4236 `(("autoconf" ,autoconf)
4237 ("automake" ,automake)
4238 ("pkg-config" ,pkg-config)
4239 ("texinfo" ,texinfo)
4240 ;; test dependency
4241 ("guile-srfi-180" ,guile-srfi-180)))
4242 (inputs `(("guile" ,guile-3.0)))
4243 (propagated-inputs
4244 `(("guile-sodium" ,guile-sodium)))
4245 (synopsis "Guile implementation of the Encoding for Robust Immutable Storage (ERIS)")
4246 (description
4247 "Guile-ERIS is the reference implementation of the Encoding for Robust
4248Immutable Storage (ERIS). ERIS allows arbirtary content to be encoded into
4249uniformly sized, encrypted blocks that can be reassembled using a short
4250read-capability.")
4251 (home-page "https://inqlab.net/git/eris.git")
4252 (license license:gpl3+)))
67a60840
RW
4253
4254(define-public guile-r6rs-protobuf
4255 (package
4256 (name "guile-r6rs-protobuf")
4257 (version "0.9")
4258 (source
4259 (origin
4260 (method git-fetch)
4261 (uri (git-reference
4262 (url "https://gitlab.com/joolean/r6rs-protobuf")
4263 (commit (string-append "v" version))))
4264 (file-name (git-file-name name version))
4265 (sha256
4266 (base32
4267 "1xmn7jlr1xiqgd35klq910p1bnil1iwdvqxkjr3zzml3spy8p2aa"))))
4268 (build-system guile-build-system)
4269 (arguments
4270 `(#:compile-flags '("--r6rs")))
4271 (inputs
4272 `(("guile" ,guile-3.0)))
4273 (home-page "https://gitlab.com/joolean/r6rs-protobuf/")
4274 (synopsis "Scheme implementation of Protocol Buffers")
4275 (description
4276 "This project provides a pure Scheme implementation of Protocol Buffers,
4277including parsing and code generation.")
4278 (license license:gpl3+)))
e47a5711
RW
4279
4280(define-public guile-shapefile
4281 (package
4282 (name "guile-shapefile")
4283 (version "0.1.2")
4284 (source
4285 (origin
4286 (method git-fetch)
4287 (uri (git-reference
4288 (url "https://github.com/HugoNikanor/guile-shapefile")
4289 (commit (string-append "v" version))))
4290 (file-name (git-file-name name version))
4291 (sha256
4292 (base32
4293 "1zvrpc8bshw9w0vhdpmhv00j07mzsdyg2f9hfabr83v08zhfi8ml"))))
4294 (build-system guile-build-system)
4295 (arguments
4296 `(#:phases
4297 (modify-phases %standard-phases
4298 (add-after 'unpack 'delete-pre-generated-docs
4299 (lambda _
4300 (delete-file-recursively "docs")
4301 #t))
4302 (add-after 'install 'install-info-documentation
4303 (lambda* (#:key outputs #:allow-other-keys)
4304 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
4305 (doc (string-append share "/doc/" ,name "-" ,version))
4306 (info (string-append share "/info/"))
4307 (makeinfo (string-append (assoc-ref %build-inputs "texinfo")
4308 "/bin/makeinfo")))
4309 (invoke makeinfo "guile-shapefile.texi" "-o" info)
4310 #t))))))
4311 (inputs
4312 `(("guile" ,guile-3.0)))
4313 (native-inputs
4314 `(("texinfo" ,texinfo)))
4315 (home-page "https://github.com/HugoNikanor/guile-shapefile")
4316 (synopsis "Parse shapefiles in Guile")
4317 (description
4318 "Guile Shapefile is a Guile library for reading shapefiles.")
4319 (license license:expat)))