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