gnu: iproute2: Update to 5.10.0.
[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")
14b92004 467 (version "0.3.0")
0791437f
RW
468 (source (origin
469 (method git-fetch)
470 (uri (git-reference
471 (url "https://github.com/artyom-poptsov/guile-dsv")
14b92004 472 (commit "6c867915dc4198eacc548a4834ef0e1aef852795")))
0791437f
RW
473 (file-name (string-append name "-" version "-checkout"))
474 (sha256
475 (base32
14b92004 476 "1mxbbcsmbjfnh4yydqz44ihbkdnzdwz38xanaam128arlb7hwr8n"))))
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
f81ce752
JH
492 ;; Support Guile 3.0 in configure from upstream commit
493 ;; 4c724577ccf19bb88580f72f2f6b166a0447ce3f
494 (add-before 'bootstrap 'configure-support-guile3.0
495 (lambda _
496 (substitute* "configure.ac"
497 (("GUILE_PKG.*")
498 "GUILE_PKG([3.0 2.0 2.2])"))
499 #t))
0791437f
RW
500 (add-before 'configure 'set-guilesitedir
501 (lambda _
502 (substitute* "Makefile.in"
503 (("^guilesitedir =.*$")
504 "guilesitedir = \
505$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
506 (substitute* "modules/Makefile.in"
507 (("^guilesitedir =.*$")
508 "guilesitedir = \
509$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
510 (substitute* "modules/dsv/Makefile.in"
511 (("^guilesitedir =.*$")
512 "guilesitedir = \
513$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
b7e1e556
JH
514 #t))
515 (add-after 'install 'wrap-program
516 (lambda* (#:key inputs outputs #:allow-other-keys)
517 (let* ((out (assoc-ref outputs "out"))
518 (bin (string-append out "/bin"))
f81ce752 519 (guile-lib (assoc-ref inputs "guile-lib"))
b7e1e556
JH
520 (version (target-guile-effective-version))
521 (scm (string-append "/share/guile/site/"
522 version))
523 (go (string-append "/lib/guile/"
524 version "/site-ccache")))
525 (wrap-program (string-append bin "/dsv")
526 `("GUILE_LOAD_PATH" prefix
527 (,(string-append out scm)
528 ,(string-append guile-lib scm)))
529 `("GUILE_LOAD_COMPILED_PATH" prefix
530 (,(string-append out go)
531 ,(string-append guile-lib go)))))
0791437f
RW
532 #t)))))
533 (home-page "https://github.com/artyom-poptsov/guile-dsv")
534 (synopsis "DSV module for Guile")
535 (description
536 "Guile-DSV is a GNU Guile module for working with the
537delimiter-separated values (DSV) data format. Guile-DSV supports the
538Unix-style DSV format and RFC 4180 format.")
539 (license license:gpl3+)))
540
f81ce752
JH
541(define-public guile2.2-dsv
542 (package
543 (inherit guile-dsv)
544 (name "guile2.2-dsv")
545 (inputs `(("guile" ,guile-2.2)))
546 (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
547
0791437f
RW
548(define-public guile-fibers
549 (package
550 (name "guile-fibers")
551 (version "1.0.0")
552 (source (origin
553 (method url-fetch)
554 (uri (string-append "https://wingolog.org/pub/fibers/fibers-"
555 version ".tar.gz"))
556 (sha256
557 (base32
9e016129
LC
558 "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))
559 (modules '((guix build utils)))
560 (snippet
561 '(begin
562 ;; Allow builds with Guile 3.0.
563 (substitute* "configure"
564 (("search=\"2\\.2\"")
565 "search=\"3.0 2.2\""))
566
567 ;; Explicitly include system headers rather than relying on
568 ;; <libguile.h> to do it for us.
569 (substitute* "epoll.c"
570 (("#include.*libguile\\.h.*$" all)
571 (string-append "#include <unistd.h>\n"
572 "#include <string.h>\n"
573 all "\n")))
574
575 ;; Import (ice-9 threads) for 'current-processor-count'.
576 (substitute* "tests/channels.scm"
577 (("#:use-module \\(fibers\\)")
578 (string-append "#:use-module (fibers)\n"
579 "#:use-module (ice-9 threads)\n")))
9af90aaf
CR
580 #t))
581 (patches
582 ;; fixes a resource leak that causes crashes in the tests
583 (search-patches "guile-fibers-destroy-peer-schedulers.patch"))))
0791437f
RW
584 (build-system gnu-build-system)
585 (arguments
b6bee63b
LC
586 '(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0.
587 #:configure-flags '("CFLAGS=-Wno-error=deprecated-declarations")
588 #:phases (modify-phases %standard-phases
0791437f
RW
589 (add-after 'install 'mode-guile-objects
590 (lambda* (#:key outputs #:allow-other-keys)
591 ;; .go files are installed to "lib/guile/X.Y/cache".
592 ;; This phase moves them to "…/site-ccache".
593 (let* ((out (assoc-ref outputs "out"))
594 (lib (string-append out "/lib/guile"))
595 (old (car (find-files lib "^ccache$"
596 #:directories? #t)))
597 (new (string-append (dirname old)
598 "/site-ccache")))
599 (rename-file old new)
600 #t))))))
601 (native-inputs
602 `(("texinfo" ,texinfo)
603 ("pkg-config" ,pkg-config)))
604 (inputs
b6bee63b 605 `(("guile" ,guile-3.0)))
0791437f
RW
606 (synopsis "Lightweight concurrency facility for Guile")
607 (description
608 "Fibers is a Guile library that implements a a lightweight concurrency
609facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is
610like a \"goroutine\" from the Go language: a lightweight thread-like
611abstraction. Systems built with Fibers can scale up to millions of concurrent
612fibers, tens of thousands of concurrent socket connections, and many parallel
613cores. The Fibers library also provides Concurrent ML-like channels for
614communication between fibers.
615
616Note that Fibers makes use of some Guile 2.1/2.2-specific features and
617is not available for Guile 2.0.")
618 (home-page "https://github.com/wingo/fibers")
619 (license license:lgpl3+)))
620
b6bee63b 621(define-public guile2.0-fibers
9e016129
LC
622 (package
623 (inherit guile-fibers)
b6bee63b
LC
624 (name "guile2.2-fibers")
625 (inputs `(("guile" ,guile-2.2)))))
626
627(define-public guile3.0-fibers
628 (deprecated-package "guile3.0-fibers" guile-fibers))
9e016129 629
d22d129d
LP
630(define-public guile-filesystem
631 (package
632 (name "guile-filesystem")
633 (version "0.1.0")
634 (source (origin
635 (method git-fetch)
636 (uri (git-reference
637 (url "https://gitlab.com/leoprikler/guile-filesystem.git")
638 (commit version)))
639 (file-name (git-file-name name version))
640 (sha256
641 (base32
642 "1shmkc0y9r2sj3kw7hrsnamnp7y8xifkhf3m3rnfxczqg63k67vy"))))
643 (build-system gnu-build-system)
644 (native-inputs
645 `(("autoconf" ,autoconf-wrapper)
646 ("automake" ,automake)
647 ("pkg-config" ,pkg-config)
648 ("texinfo" ,texinfo)))
649 (inputs
650 `(("guile" ,guile-3.0)))
651 (home-page "https://gitlab.com/leoprikler/guile-filesystem")
652 (synopsis "Complementary library to Guile's built-in file system procedures")
653 (description "@code{guile-filesystem} provides a set of utility functions,
654that augment Guile's support for handling files and their names.")
655 (license license:lgpl3+)))
656
657(define-public guile2.0-filesystem
658 (package
659 (inherit guile-filesystem)
660 (name "guile2.0-filesystem")
661 (inputs `(("guile" ,guile-2.0)))))
662
663(define-public guile2.2-filesystem
664 (package
665 (inherit guile-filesystem)
666 (name "guile2.2-filesystem")
667 (inputs `(("guile" ,guile-2.2)))))
668
0791437f
RW
669(define-public guile-syntax-highlight
670 (package
671 (name "guile-syntax-highlight")
672 (version "0.1")
673 (source (origin
674 (method url-fetch)
675 (uri (string-append "https://files.dthompson.us/"
676 "guile-syntax-highlight/"
677 "guile-syntax-highlight-"
678 version ".tar.gz"))
679 (sha256
680 (base32
fb8a77f4
LC
681 "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi"))
682 (modules '((guix build utils)))
683 (snippet
684 '(begin
685 ;; Allow builds with Guile 3.0.
686 (substitute* "configure"
687 (("2\\.2 2\\.0")
688 "3.0 2.2 2.0"))
689 #t))))
0791437f
RW
690 (build-system gnu-build-system)
691 (native-inputs
692 `(("pkg-config" ,pkg-config)))
693 (inputs
b6bee63b 694 `(("guile" ,guile-3.0)))
0791437f
RW
695 (synopsis "General-purpose syntax highlighter for GNU Guile")
696 (description "Guile-syntax-highlight is a general-purpose syntax
697highlighting library for GNU Guile. It can parse code written in various
698programming languages into a simple s-expression that can be converted to
699HTML (via SXML) or any other format for rendering.")
02e052ba 700 (home-page "https://dthompson.us/projects/guile-syntax-highlight.html")
0791437f
RW
701 (license license:lgpl3+)))
702
b6bee63b 703(define-public guile2.2-syntax-highlight
fb8a77f4
LC
704 (package
705 (inherit guile-syntax-highlight)
b6bee63b
LC
706 (name "guile2.2-syntax-highlight")
707 (inputs `(("guile" ,guile-2.2)))))
708
709(define-public guile3.0-syntax-highlight
710 (deprecated-package "guile3.0-syntax-highlight" guile-syntax-highlight))
fb8a77f4 711
0791437f
RW
712(define-public guile-sjson
713 (package
714 (name "guile-sjson")
715 (version "0.2.1")
716 (source (origin
717 (method url-fetch)
718 (uri (string-append "https://dustycloud.org/misc/sjson-" version
719 ".tar.gz"))
720 (sha256
721 (base32
eef54583
RW
722 "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))
723 (modules '((guix build utils)))
724 (snippet
725 '(begin
726 ;; Allow builds with Guile 3.0.
727 (substitute* "configure"
728 (("2\\.2 2\\.0")
729 "3.0 2.2 2.0"))
730 #t))))
0791437f
RW
731 (build-system gnu-build-system)
732 (native-inputs
733 `(("autoconf" ,autoconf)
734 ("automake" ,automake)
735 ("pkg-config" ,pkg-config)))
736 (inputs
eef54583 737 `(("guile" ,guile-3.0)))
0791437f
RW
738 (home-page "https://gitlab.com/dustyweb/guile-sjson")
739 (synopsis "S-expression based json reader/writer for Guile")
740 (description "guile-sjson is a json reader/writer for Guile.
741It has a nice, simple s-expression based syntax.")
742 (license license:lgpl3+)))
743
eef54583
RW
744(define-public guile2.2-sjson
745 (package
746 (inherit guile-sjson)
747 (name "guile2.2-sjson")
748 (inputs `(("guile" ,guile-2.2)))))
749
61dafdc0 750(define-public guile-squee
50812aae
MO
751 (let ((commit "c1497a216e881cfde39d6aa7c73d0bf6b497c89b")
752 (revision "2"))
61dafdc0
CB
753 (package
754 (name "guile-squee")
755 (version (string-append "0-" revision "." (string-take commit 7)))
756 (source (origin
757 (method git-fetch)
758 (uri (git-reference
759 (url "https://notabug.org/cwebber/guile-squee.git")
760 (commit commit)))
761 (file-name (git-file-name name version))
762 (sha256
763 (base32
50812aae 764 "1alskrplnyl1n5wb39drn72cwplp47a8cpdd1n9cdnw3jhk5p12p"))))
61dafdc0
CB
765 (build-system guile-build-system)
766 (arguments
767 '(#:phases
768 (modify-phases %standard-phases
769 (add-after 'unpack 'patch
770 (lambda* (#:key inputs #:allow-other-keys)
771 (substitute* "squee.scm"
772 (("dynamic-link \"libpq\"")
773 (string-append
774 "dynamic-link \""
775 (assoc-ref inputs "postgresql") "/lib/libpq.so"
776 "\"")))
777 #t)))))
778 (inputs
779 `(("postgresql" ,postgresql)))
780 (native-inputs
ca03dca5 781 `(("guile" ,guile-3.0)))
61dafdc0
CB
782 (home-page "https://notabug.org/cwebber/guile-squee")
783 (synopsis "Connect to PostgreSQL using Guile")
784 (description
785 "@code{squee} is a Guile library for connecting to PostgreSQL databases
786using Guile's foreign function interface.")
6fd72f70 787 (license license:lgpl3+))))
61dafdc0 788
ca03dca5 789(define-public guile2.2-squee
945a73d8
CB
790 (package
791 (inherit guile-squee)
ca03dca5
LC
792 (name "guile2.2-squee")
793 (native-inputs `(("guile" ,guile-2.2)
cfe35814
CB
794 ,@(alist-delete "guile"
795 (package-native-inputs guile-squee))))))
945a73d8 796
ca03dca5
LC
797(define-public guile3.0-squee
798 (deprecated-package "guile3.0-squee" guile-squee))
799
0791437f
RW
800(define-public guile-colorized
801 (package
802 (name "guile-colorized")
803 (version "0.1")
1340ce28
TGR
804 (source
805 (origin
806 (method git-fetch)
807 (uri (git-reference
55f4282e 808 (url "https://gitlab.com/NalaGinrut/guile-colorized.git")
1340ce28
TGR
809 (commit (string-append "v" version))))
810 (file-name (git-file-name name version))
811 (sha256
812 (base32 "10mv8c63159r3qvwwdvsgnsvdg7nc2ghak85zapwqpv4ywrqp9zc"))))
0791437f
RW
813 (build-system guile-build-system)
814 (native-inputs
b6bee63b 815 `(("guile" ,guile-3.0)))
55f4282e 816 (home-page "https://gitlab.com/NalaGinrut/guile-colorized")
0791437f
RW
817 (synopsis "Colorized REPL for Guile")
818 (description
819 "Guile-colorized provides you with a colorized REPL for GNU Guile.")
820 (license license:gpl3+)))
821
b6bee63b 822(define-public guile2.2-colorized
fc870a0d
LC
823 (package
824 (inherit guile-colorized)
b6bee63b
LC
825 (name "guile2.2-colorized")
826 (native-inputs `(("guile" ,guile-2.2)))))
827
828(define-public guile3.0-colorized
829 (deprecated-package "guile3.0-colorized" guile-colorized))
fc870a0d 830
0791437f
RW
831(define-public guile-pfds
832 (package
833 (name "guile-pfds")
834 (version "0.3")
835 (home-page "https://github.com/ijp/pfds")
836 (source (origin
837 (method git-fetch)
838 (uri (git-reference
839 (url home-page)
840 (commit (string-append "v" version))))
841 (sha256
842 (base32
843 "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
844 (file-name (string-append name "-" version "-checkout"))))
845 (build-system guile-build-system)
846 (arguments
847 '(#:source-directory "src"
45231d17 848 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
0791437f
RW
849 #:phases (modify-phases %standard-phases
850 (add-after 'unpack 'move-files-around
851 (lambda _
852 ;; Move files under a pfds/ directory to reflect the
853 ;; module hierarchy.
854 (mkdir-p "src/pfds")
855 (for-each (lambda (file)
856 (rename-file file
45231d17 857 (string-append "src/pfds/" file)))
0791437f
RW
858 '("bbtrees.sls"
859 "deques"
860 "deques.sls"
861 "dlists.sls"
862 "fingertrees.sls"
863 "hamts.sls"
864 "heaps.sls"
865 "private"
866 "psqs.sls"
867 "queues"
868 "queues.sls"
869 "sequences.sls"
870 "sets.sls"))
0791437f
RW
871 #t)))))
872 (native-inputs
b6bee63b 873 `(("guile" ,guile-3.0)))
0791437f
RW
874 (synopsis "Purely functional data structures for Guile")
875 (description
876 "This package provides purely functional data structures written in R6RS
877Scheme and compiled for Guile. It has been tested with Racket, Guile 2,
878Vicare Scheme and IronScheme. Right now it contains:
879
880@itemize
881@item queues
882@item deques
883@item bbtrees
884@item sets
885@item dlists
886@item priority search queues (PSQs)
887@item finger trees
888@item sequences
889@item heaps
890@item hash array mapped tries (HAMTs).
891@end itemize\n")
892 (license license:bsd-3)))
893
d944f10d
CB
894(define-public guile2.0-pg
895 (package
896 (name "guile2.0-pg")
897 (version "0.49")
898 (source (origin
899 (method url-fetch)
900 (uri (string-append "mirror://savannah/guile-pg/guile-pg-"
901 version ".tar.xz"))
902 (sha256
903 (base32
904 "1fizcqga96p9n2jjhi9nprhry20hg9wvcl5b8gya4vhzwz6qhysp"))))
905 (build-system gnu-build-system)
906 (arguments
907 '(#:phases
908 (modify-phases %standard-phases
909 (add-before 'install 'patch-src/Makefile
910 (lambda* (#:key outputs #:allow-other-keys)
911 (substitute* "src/Makefile"
912 (("\\/share\\/guile\\/site") "/share/guile/site/2.0"))
913 #t)))))
914 (native-inputs
915 `(("procps" ,procps) ; fake-cluster-control uses ps
916 ("guile" ,guile-2.0)
917 ("postgresql" ,postgresql)))
918 (inputs
919 `(("guile" ,guile-2.0)
920 ("postgresql" ,postgresql)))
921 (home-page "https://www.nongnu.org/guile-pg/")
922 (synopsis "Guile modules for accessing PostgreSQL")
923 (description
924 "Guile-PG is a collection of modules for Guile allowing access to the
925PostgreSQL RDBMS from Scheme programs.
926
927This has been tested against PostgreSQL 10 through 13, but currently only
928works with Guile 1.4.x to 2.0.x.")
929 (license license:gpl3+)))
930
15c3fe24 931(define-public guile-prometheus
77667e2e
CB
932 (let ((commit "35dc26c0ea44c3d70f1819f240d84e2cbb4b7b4c")
933 (revision "5"))
15c3fe24
CB
934 (package
935 (name "guile-prometheus")
936 (version (git-version "0" revision commit))
937 (source (origin
938 (method git-fetch)
939 (uri (git-reference
940 (url "https://git.cbaines.net/git/guile/prometheus")
941 (commit commit)))
942 (sha256
943 (base32
77667e2e 944 "07822jj4appw37lf444kc4xlgl7nm64mgldag56072l55kwashgb"))
15c3fe24
CB
945 (file-name (string-append name "-" version "-checkout"))))
946 (build-system gnu-build-system)
947 (native-inputs
948 `(("pkg-config" ,pkg-config)
949 ("autoconf" ,autoconf)
b452f1b1
CB
950 ("automake" ,automake)
951 ("guile" ,guile-3.0)))
15c3fe24
CB
952 (inputs
953 `(("guile" ,guile-3.0)))
954 (home-page "https://git.cbaines.net/guile/prometheus")
955 (synopsis "Prometheus client library for Guile")
956 (description
957 "This Guile library provides instrumentation code intended to be used
958with the Prometheus time series service. Counter, gauge and histogram metric
959types are supported.")
960 (license license:gpl3+))))
961
b6bee63b 962(define-public guile2.2-pfds
77c95ee6
RW
963 (package
964 (inherit guile-pfds)
b6bee63b
LC
965 (name "guile2.2-pfds")
966 (native-inputs `(("guile" ,guile-2.2)))
77c95ee6 967 (arguments
0dd1e277
RW
968 (substitute-keyword-arguments (package-arguments guile-pfds)
969 ((#:phases phases)
970 `(modify-phases ,phases
45231d17
MB
971 (delete 'work-around-guile-bug)
972 (add-after 'move-files-around 'sls->scm
973 (lambda _
974 ;; In Guile <= 2.2.4, there's no way to tell 'guild
975 ;; compile' to accept the ".sls" extension. So...
976 (for-each (lambda (file)
977 (rename-file file
978 (string-append
979 (string-drop-right file 4)
980 ".scm")))
981 (find-files "." "\\.sls$"))
982 #t))))))))
b6bee63b
LC
983
984(define-public guile3.0-pfds
985 (deprecated-package "guile3.0-pfds" guile-pfds))
77c95ee6 986
0791437f
RW
987(define-public guile-aa-tree
988 (package
989 (name "guile-aa-tree")
990 (version "3.1.1")
991 (source (origin
992 (method url-fetch)
993 (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
994 version ".tar.gz"))
995 (sha256
996 (base32
997 "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
998 (build-system guile-build-system)
999 (native-inputs `(("guile" ,guile-2.2)))
1000 ;; https://savannah.nongnu.org/projects/guile-aa-tree
1001 (home-page "https://qlfiles.net/guile-aa-tree/")
1002 (synopsis "AA tree data structure for Guile")
1003 (description
1004 "This package provides an implementation of @dfn{AA trees}, a
1005self-balancing binary tree data structure, for Guile. It ensure @math{O(log
1006n)} worst case performance for core operations. The module provides
1007non-mutating insert, delete, and search operations, with support for
1008convenient nested tree operations.")
1009 (license license:gpl3+)))
1010
1011(define-public guile-simple-zmq
edc2acb7
MO
1012 (let ((commit "f8b7d81afb38525750f8818ed2956ca18c828ee8")
1013 (revision "5"))
0791437f
RW
1014 (package
1015 (name "guile-simple-zmq")
1016 (version (git-version "0.0.0" revision commit))
1017 (source
1018 (origin
1019 (method git-fetch)
1020 (uri (git-reference
1021 (url "https://github.com/jerry40/guile-simple-zmq")
1022 (commit commit)))
1023 (sha256
1024 (base32
edc2acb7 1025 "1gpzlpcq7bxw7sxyrg8zslwb3631vizw56lgg1aavw4gafh0hxb3"))
0791437f
RW
1026 (file-name (git-file-name name version))))
1027 (build-system guile-build-system)
1028 (arguments
1029 `(#:source-directory "src"
1030 #:phases (modify-phases %standard-phases
1031 (add-after 'unpack 'set-libzmq-file-name
1032 (lambda* (#:key inputs #:allow-other-keys)
1033 (substitute* "src/simple-zmq.scm"
1034 (("\\(dynamic-link \"libzmq\"\\)")
1035 (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
1036 (assoc-ref inputs "zeromq"))))
1037 #t)))))
1038 (native-inputs
b6bee63b 1039 `(("guile" ,guile-3.0)))
0791437f
RW
1040 (inputs
1041 `(("zeromq" ,zeromq)))
1042 (home-page "https://github.com/jerry40/guile-simple-zmq")
1043 (synopsis "Guile wrapper over ZeroMQ library")
1044 (description
1045 "This package provides a Guile programming interface to the ZeroMQ
1046messaging library.")
1047 (license license:gpl3+))))
1048
b6bee63b 1049(define-public guile2.2-simple-zmq
015bb1c8
LC
1050 (package
1051 (inherit guile-simple-zmq)
b6bee63b
LC
1052 (name "guile2.2-simple-zmq")
1053 (native-inputs `(("guile" ,guile-2.2)))))
1054
1055(define-public guile3.0-simple-zmq
1056 (deprecated-package "guile3.0-simple-zmq" guile-simple-zmq))
015bb1c8 1057
0791437f 1058(define-public jupyter-guile-kernel
c984b70c
JG
1059 (let ((commit "f25fb90b95529b17a006a807bd04e6aee12ea304")
1060 (revision "2"))
0791437f
RW
1061 (package
1062 (name "jupyter-guile-kernel")
1063 (version (git-version "0.0.0" revision commit))
1064 (source
1065 (origin
1066 (method git-fetch)
1067 (uri (git-reference
1068 (url "https://github.com/jerry40/guile-kernel")
1069 (commit commit)))
f1d4d79f 1070 (file-name (git-file-name name version))
0791437f
RW
1071 (sha256
1072 (base32
c984b70c 1073 "0zr1fasdb2yv9kn21yll993y9higqss4jnfs030ndhjb93raa9sr"))))
0791437f
RW
1074 (build-system guile-build-system)
1075 (arguments
1076 '(#:phases (modify-phases %standard-phases
1077 (add-after 'unpack 'set-openssl-file-name
1078 (lambda* (#:key inputs #:allow-other-keys)
1079 ;; Record the absolute file name of the 'openssl'
1080 ;; command.
1081 (substitute* "src/hmac.scm"
1082 (("openssl")
1083 (string-append (assoc-ref inputs "openssl")
1084 "/bin/openssl")))
1085 #t))
1086
1087 ;; XXX: The code uses 'include' to include its own source
1088 ;; files, and "-L src" isn't enough in this case.
1089 (add-before 'build 'chdir
1090 (lambda _ (chdir "src") #t))
1091 (add-after 'build 'chdir-back
1092 (lambda _ (chdir "..") #t))
1093
1094 (add-after 'install 'install-kernel
1095 (lambda* (#:key inputs outputs #:allow-other-keys)
1096 (let* ((out (assoc-ref outputs "out"))
1097 (json (assoc-ref inputs "guile-json"))
1098 (zmq (assoc-ref inputs "guile-simple-zmq"))
1099 (deps (list json zmq))
1100 (dir (string-append
1101 out "/share/jupyter/kernels/guile"))
1102 (effective (target-guile-effective-version)))
1103 ;; Install kernel.
1104 (install-file "src/kernel.json" dir)
1105
1106 ;; Fix hard-coded file name in the kernel.
1107 (substitute* (string-append dir "/kernel.json")
c984b70c 1108 (("/usr/local/.*/guile-jupyter-kernel.scm")
0791437f
RW
1109 (string-append out "/share/guile/site/"
1110 (target-guile-effective-version)
1111 "/guile-jupyter-kernel.scm"))
1112 (("\"guile\"")
1113 (string-append "\"" (assoc-ref inputs "guile")
1114 "/bin/guile\""))
1115 (("-s")
1116 ;; Add '-L' and '-C' flags so that the kernel
1117 ;; finds its dependencies.
1118 (let ((-L (map (lambda (item)
1119 (string-append "\"" item
1120 "/share/guile/site/"
1121 effective "\""))
1122 deps))
1123 (-C (map (lambda (item)
1124 (string-append "\"" item
1125 "/lib/guile/"
1126 effective
1127 "/site-ccache\""))
1128 deps)))
c984b70c
JG
1129 (string-append "--no-auto-compile\""
1130 (string-join -L ", \"-L\", "
1131 'prefix)
1132 (string-join -C ", \"-C\", "
1133 'prefix)
1134 ", \"-s"))))
0791437f
RW
1135 #t))))))
1136 (inputs
1137 `(("openssl" ,openssl)
c984b70c
JG
1138 ("guile" ,guile-3.0)
1139 ("guile-json" ,guile-json-3)
0791437f
RW
1140 ("guile-simple-zmq" ,guile-simple-zmq)))
1141 (synopsis "Guile kernel for the Jupyter Notebook")
1142 (description
1143 "This package provides a Guile 2.x kernel for the Jupyter Notebook. It
1144allows users to interact with the Guile REPL through Jupyter.")
1145 (home-page "https://github.com/jerry40/guile-kernel")
1146 (license license:gpl3+))))
1147
1148(define-public guile-sparql
1149 (package
1150 (name "guile-sparql")
22213308 1151 (version "0.0.8")
0791437f
RW
1152 (source (origin
1153 (method url-fetch)
1154 (uri (string-append
1155 "https://github.com/roelj/guile-sparql/releases/download/"
1156 version "/guile-sparql-" version ".tar.gz"))
1157 (sha256
22213308 1158 (base32 "1jf4972f9fpm0rd865xpnc9mzl3xv6vhfnp0iygadydy905z9nln"))))
0791437f 1159 (build-system gnu-build-system)
0791437f
RW
1160 (native-inputs
1161 `(("pkg-config" ,pkg-config)))
1162 (inputs
22213308 1163 `(("guile" ,guile-3.0)))
0791437f
RW
1164 (home-page "https://github.com/roelj/guile-sparql")
1165 (synopsis "SPARQL module for Guile")
1166 (description "This package provides the functionality to query a SPARQL
1167endpoint. Additionally, it provides an interface to write SPARQL queries
1168using S-expressions.")
1169 (license license:gpl3+)))
1170
1171(define-public guile-debbugs
1172 (package
1173 (name "guile-debbugs")
5144f542 1174 (version "0.0.3")
0791437f
RW
1175 (source (origin
1176 (method url-fetch)
1177 (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
1178 version ".tar.gz"))
1179 (sha256
1180 (base32
5144f542 1181 "1cc63nw3xdfjrfk8c58r6d5lidmfq5cpqcy32yd5xp81yccprvn9"))))
0791437f 1182 (build-system gnu-build-system)
5144f542
RW
1183 (propagated-inputs
1184 `(("guile-email" ,guile-email)))
0791437f 1185 (native-inputs
cd23eb06 1186 `(("guile" ,guile-3.0)
0791437f
RW
1187 ("pkg-config" ,pkg-config)))
1188 (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
1189 (synopsis "Guile interface to the Debbugs bug tracking service")
1190 (description
1191 "This package provides a Guile library to communicate with a Debbugs bug
1192tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
1193 (license license:gpl3+)))
1194
1195(define-public guile-email
50771f5b
AI
1196 (package
1197 (name "guile-email")
223cb7c6 1198 (version "0.2.2")
50771f5b
AI
1199 (source
1200 (origin
1201 (method url-fetch)
1202 (uri (string-append
db18d87a
AI
1203 "https://guile-email.systemreboot.net/releases/guile-email-"
1204 version ".tar.lz"))
50771f5b
AI
1205 (sha256
1206 (base32
223cb7c6 1207 "1rc8r0fgvflnyq5ckl7ii8sghpsgpkzxa8vskjr1ak2kyar6m35k"))))
50771f5b
AI
1208 (build-system gnu-build-system)
1209 (native-inputs
1210 `(("pkg-config" ,pkg-config)
db18d87a 1211 ("lzip" ,lzip)))
50771f5b 1212 (inputs
ca6c1509 1213 `(("guile" ,guile-3.0)))
db18d87a 1214 (arguments
2c33a849 1215 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
db18d87a 1216 (home-page "https://guile-email.systemreboot.net")
50771f5b 1217 (synopsis "Guile email parser")
db18d87a
AI
1218 (description "guile-email is a collection of email utilities implemented
1219in pure guile. It supports parsing MIME (Multipurpose Internet Mail
1220Extensions) compliant email messages and reading emails from the mbox
1221format.")
50771f5b 1222 (license license:agpl3+)))
0791437f 1223
8b3b1f34
RW
1224(define-public guile-email-latest
1225 (let ((commit "03e9cacb826bd4a56d3d834fe5526e497d7c57eb")
1226 (revision "1"))
1227 (package
1228 (inherit guile-email)
1229 (name "guile-email-latest")
1230 (version (git-version "0.2.2" revision commit))
1231 (source
1232 (origin
1233 (method git-fetch)
1234 (uri (git-reference
1235 (url "https://git.systemreboot.net/guile-email")
1236 (commit commit)))
1237 (file-name (git-file-name name version))
1238 (sha256
1239 (base32
1240 "1a15gdlbmzx220xg82fgyd0zk2wqn13ddmzs13nhgfzx8d5cns68"))))
1241 (native-inputs
1242 `(("pkg-config" ,pkg-config)
1243 ("autoconf" ,autoconf)
1244 ("automake" ,automake)
1245 ("texinfo" ,texinfo))))))
1246
ca6c1509 1247(define-public guile2.2-email
63a847cb
CB
1248 (package
1249 (inherit guile-email)
ca6c1509
LC
1250 (name "guile2.2-email")
1251 (inputs `(("guile" ,guile-2.2)
63a847cb
CB
1252 ,@(alist-delete "guile" (package-inputs guile-email))))))
1253
ca6c1509
LC
1254(define-public guile3.0-email
1255 (deprecated-package "guile3.0-email" guile-email))
1256
0791437f 1257(define-public guile-newt
442a11f6
MO
1258 (package
1259 (name "guile-newt")
f52c1f5f 1260 (version "0.0.2")
442a11f6
MO
1261 (source (origin
1262 (method git-fetch)
1263 (uri (git-reference
1264 (url "https://gitlab.com/mothacehe/guile-newt")
1265 (commit version)))
1266 (file-name (git-file-name name version))
1267 (sha256
1268 (base32
f52c1f5f 1269 "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09"))))
442a11f6
MO
1270 (build-system gnu-build-system)
1271 (arguments
1272 '(#:make-flags
1273 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1274 (inputs
b6bee63b 1275 `(("guile" ,guile-3.0)
442a11f6
MO
1276 ("newt" ,newt)))
1277 (native-inputs
1278 `(("autoconf" ,autoconf)
1279 ("automake" ,automake)
1280 ("pkg-config" ,pkg-config)))
1281 (synopsis "Guile bindings to Newt")
1282 (description
1283 "This package provides bindings for Newt, a programming library for
0791437f
RW
1284color text mode, widget based user interfaces. The bindings are written in pure
1285Scheme by using Guile’s foreign function interface.")
442a11f6
MO
1286 (home-page "https://gitlab.com/mothacehe/guile-newt")
1287 (license license:gpl3+)))
0791437f 1288
b6bee63b 1289(define-public guile2.2-newt
e7fc7746
LC
1290 (package
1291 (inherit guile-newt)
b6bee63b 1292 (name "guile2.2-newt")
318e1a93 1293 (inputs `(("guile" ,guile-2.2)
e7fc7746
LC
1294 ,@(alist-delete "guile" (package-inputs guile-newt))))))
1295
b6bee63b
LC
1296(define-public guile3.0-newt
1297 (deprecated-package "guile3.0-newt" guile-newt))
1298
0791437f
RW
1299(define-public guile-mastodon
1300 (package
1301 (name "guile-mastodon")
1302 (version "0.0.1")
1303 (source (origin
1304 (method git-fetch)
1305 (uri (git-reference
1306 (url "https://framagit.org/prouby/guile-mastodon.git")
1307 (commit (string-append "v" version))))
1308 (file-name (git-file-name name version))
1309 (sha256
1310 (base32
1311 "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
1312 (build-system gnu-build-system)
1313 (native-inputs
1314 `(("autoconf" ,autoconf)
1315 ("automake" ,automake)
1316 ("pkg-config" ,pkg-config)))
1317 (inputs
1318 `(("guile" ,guile-2.2)
1319 ("gnutls" ,gnutls)
91f55717 1320 ("guile-json" ,guile-json-1)))
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
RW
2508 (build-system gnu-build-system)
2509 (inputs
b6bee63b 2510 `(("guile" ,guile-3.0)))
0791437f
RW
2511 (native-inputs
2512 `(("pkg-config" ,pkg-config)))
2513 (synopsis "CommonMark parser for Guile")
2514 (description
2515 "guile-commonmark is a library for parsing CommonMark, a fully specified
2516variant of Markdown. The library is written in Guile Scheme and is designed
2517to transform a CommonMark document to SXML. guile-commonmark tries to closely
2518follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
2519is no support for parsing block and inline level HTML.")
2520 (home-page "https://github.com/OrangeShark/guile-commonmark")
2521 (license license:lgpl3+)))
2522
b6bee63b 2523(define-public guile2.2-commonmark
1fa34232
LC
2524 (package
2525 (inherit guile-commonmark)
b6bee63b
LC
2526 (name "guile2.2-commonmark")
2527 (inputs `(("guile" ,guile-2.2)))))
1fa34232 2528
0791437f
RW
2529(define-public guile2.0-commonmark
2530 (package
2531 (inherit guile-commonmark)
2532 (name "guile2.0-commonmark")
2533 (inputs `(("guile" ,guile-2.0)))))
2534
b6bee63b
LC
2535(define-public guile3.0-commonmark
2536 (deprecated-package "guile3.0-commonmark" guile-commonmark))
2537
0791437f
RW
2538(define-public mcron
2539 (package
2540 (name "mcron")
8b3b1988 2541 (version "1.2.0")
0791437f
RW
2542 (source (origin
2543 (method url-fetch)
2544 (uri (string-append "mirror://gnu/mcron/mcron-"
2545 version ".tar.gz"))
2546 (sha256
2547 (base32
8b3b1988 2548 "1midrn15d5kqy4zd2029bj1db6gnfhxg8mcgfy4bkp5p9nl4v4rd"))))
0791437f
RW
2549 (build-system gnu-build-system)
2550 (arguments
2551 '(#:phases (modify-phases %standard-phases
0791437f
RW
2552 (add-before 'check 'adjust-tests
2553 (lambda _
2554 (substitute* "tests/job-specifier.scm"
2555 ;; (getpw) fails with "entry not found" in the build
2556 ;; environment, so pass an argument.
2557 (("\\(getpw\\)")
2558 "(getpwnam (getuid))")
2559 ;; The build environment lacks an entry for root in
2560 ;; /etc/passwd.
2561 (("\\(getpw 0\\)")
2562 "(getpwnam \"nobody\")")
2563
2564 ;; FIXME: Skip the 4 faulty tests (see above).
2565 (("\\(test-equal \"next-year\"" all)
2566 (string-append "(test-skip 4)\n" all)))
2567 #t)))))
30ebff69 2568 (native-inputs `(("pkg-config" ,pkg-config)
bbd9c9c9
LC
2569 ("tzdata" ,tzdata-for-tests)
2570 ("guile-native" ;for 'guild compile'
2571 ,@(assoc-ref (package-inputs this-package) "guile"))))
b6bee63b 2572 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
2573 (home-page "https://www.gnu.org/software/mcron/")
2574 (synopsis "Run jobs at scheduled times")
2575 (description
2576 "GNU Mcron is a complete replacement for Vixie cron. It is used to run
2577tasks on a schedule, such as every hour or every Monday. Mcron is written in
2578Guile, so its configuration can be written in Scheme; the original cron
2579format is also supported.")
2580 (license license:gpl3+)))
2581
b6bee63b 2582(define-public guile2.2-mcron
3de0d20b
LC
2583 (package
2584 (inherit mcron)
b6bee63b
LC
2585 (name "guile2.2-mcron")
2586 (inputs `(("guile" ,guile-2.2)))))
2587
2588(define-public guile3.0-mcron
2589 (deprecated-package "guile3.0-mcron" mcron))
3de0d20b 2590
6bb5f88e 2591(define-public guile-picture-language
b54b3f54
RW
2592 (let ((commit "291a746a1d3b4784d38b05239bdd7b8e796ce761")
2593 (revision "4"))
6bb5f88e
RW
2594 (package
2595 (name "guile-picture-language")
d1a3a8e1 2596 (version (git-version "0.0.1" revision commit))
6bb5f88e
RW
2597 (source (origin
2598 (method git-fetch)
2599 (uri (git-reference
2600 (url "https://git.elephly.net/software/guile-picture-language.git")
2601 (commit commit)))
f1d4d79f 2602 (file-name (git-file-name name version))
6bb5f88e
RW
2603 (sha256
2604 (base32
b54b3f54 2605 "0rnhf13ds92sbdicshy4sy4kl2kc431fy9vzm1divw974p7v57sd"))))
d1a3a8e1 2606 (build-system gnu-build-system)
6bb5f88e 2607 (inputs
b6bee63b 2608 `(("guile" ,guile-3.0)))
76171095 2609 (propagated-inputs
b54b3f54
RW
2610 `(("guile-cairo" ,guile-cairo)
2611 ("guile-rsvg" ,guile-rsvg)))
d1a3a8e1
RW
2612 (native-inputs
2613 `(("autoconf" ,autoconf)
2614 ("automake" ,automake)
76171095 2615 ("librsvg" ,librsvg)
d1a3a8e1
RW
2616 ("pkg-config" ,pkg-config)
2617 ("texinfo" ,texinfo)))
6bb5f88e
RW
2618 (home-page "https://git.elephly.net/software/guile-picture-language.git")
2619 (synopsis "Picture language for Guile")
2620 (description
2621 "This package provides a simple SVG-based picture language for Guile.
2622The picture values can directly be displayed in Geiser.")
76171095
RW
2623 ;; (pict base64) is under GPLv3+, the rest is under LGPLv3+
2624 (license (list license:lgpl3+
2625 license:gpl3+)))))
5531782d 2626
b6bee63b 2627(define-public guile2.2-picture-language
4f408684
LC
2628 (package
2629 (inherit guile-picture-language)
b6bee63b
LC
2630 (name "guile2.2-picture-language")
2631 (inputs `(("guile" ,guile-2.2)))))
2632
2633(define-public guile3.0-picture-language
2634 (deprecated-package "guile3.0-picture-language"
2635 guile-picture-language))
4f408684 2636
5531782d 2637(define-public guile-studio
edf0043a
RW
2638 (let ((commit "93622e788e727d3275291f999f7e570de6a5bb35")
2639 (revision "1"))
c6607797
RW
2640 (package
2641 (name "guile-studio")
edf0043a 2642 (version (git-version "0.1.0" revision commit))
c6607797
RW
2643 (source (origin
2644 (method git-fetch)
2645 (uri (git-reference
2646 (url "https://git.elephly.net/software/guile-studio.git")
2647 (commit commit)))
2648 (file-name (git-file-name name version))
2649 (sha256
2650 (base32
edf0043a 2651 "0n6y0bcmkx50m8rccz7a6h4yxmwq54pf2bfzpd5ndz2bsiwiq13l"))))
c6607797
RW
2652 (build-system gnu-build-system)
2653 (arguments
2654 `(#:modules
2655 ((ice-9 match)
2656 (srfi srfi-1)
2657 ,@%gnu-build-system-modules)
2658 #:tests? #f ; there are none
2659 #:make-flags
edf0043a 2660 (list (string-append "PICT_DIR="
c6607797
RW
2661 (assoc-ref %build-inputs "guile-picture-language"))
2662 (string-append "EMACS_DIR="
2663 (assoc-ref %build-inputs "emacs"))
2664 (string-append "GUILE_DIR="
2665 (assoc-ref %build-inputs "guile"))
2666 (string-join (cons "INPUTS="
2667 (filter-map
2668 (lambda (input)
2669 (match input
2670 ((label . pkg)
2671 (and (string-prefix? "emacs" label) pkg))))
2672 %build-inputs)))
2673 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2674 #:phases
2675 (modify-phases %standard-phases
2676 (delete 'configure)
2677 (delete 'install))))
2678 (inputs
2679 `(("guile" ,guile-3.0)
2680 ("guile-picture-language" ,guile-picture-language)
2681 ("emacs" ,emacs)
777ecc1e
RW
2682 ("emacs-f" ,emacs-f) ; needed by doom-modeline
2683 ("emacs-memoize" ,emacs-memoize) ; needed by all-the-icons
2684 ("emacs-all-the-icons" ,emacs-all-the-icons) ; needed by doom-modeline
edf0043a 2685 ("emacs-all-the-icons-dired" ,emacs-all-the-icons-dired)
6908552b 2686 ("emacs-dired-sidebar" ,emacs-dired-sidebar)
777ecc1e
RW
2687 ("emacs-doom-modeline" ,emacs-doom-modeline)
2688 ("emacs-modus-themes" ,emacs-modus-themes)
c6607797
RW
2689 ("emacs-geiser" ,emacs-geiser)
2690 ("emacs-company" ,emacs-company)
777ecc1e 2691 ("emacs-ivy" ,emacs-ivy)
c6607797 2692 ("emacs-flycheck" ,emacs-flycheck)
0e7731ba 2693 ("emacs-flycheck-guile" ,emacs-flycheck-guile)
edf0043a 2694 ("emacs-paren-face" ,emacs-paren-face)))
c6607797
RW
2695 (native-inputs
2696 `(("texinfo" ,texinfo)))
2697 (home-page "https://gnu.org/software/guile")
2698 (synopsis "IDE for Guile")
2699 (description
2700 "This is Emacs with a few settings that make working with Guile easier
5531782d
RW
2701for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
2702to evaluate Guile buffers, support for Guile's very own picture language, code
2703completion, a simple mode line, etc.")
c6607797 2704 (license license:gpl3+))))
9f8698ad
RW
2705
2706(define-public guile-stis-parser
3a71dac0
MB
2707 (package
2708 (name "guile-stis-parser")
2709 (version "1.2.4.1")
2710 (source (origin
2711 (method git-fetch)
2712 (uri (git-reference
2713 (url "https://gitlab.com/tampe/stis-parser")
2714 (commit (string-append "v" version))))
2715 (file-name (git-file-name name version))
2716 (sha256
2717 (base32
2718 "1fvxdfvc80zqhwzq5x3kxyr6j8p4b51yx85fx1gr3d4gy2ddpx5w"))))
2719 (build-system gnu-build-system)
2720 (arguments
2721 `(#:parallel-build? #f ; not supported
2722 #:phases
2723 (modify-phases %standard-phases
2724 (add-after 'unpack 'chdir
2725 (lambda _ (chdir "modules") #t))
2726 (add-after 'chdir 'delete-broken-symlink
2727 (lambda _
2728 (delete-file "parser/stis-parser/lang/.#calc.scm")
2729 #t)))))
2730 (inputs
2731 `(("guile" ,guile-3.0)))
2732 (native-inputs
2733 `(("autoconf" ,autoconf)
2734 ("automake" ,automake)
2735 ("pkg-config" ,pkg-config)))
2736 (home-page "https://gitlab.com/tampe/stis-parser")
2737 (synopsis "Parser combinator framework")
2738 (description
2739 "This package provides a functional parser combinator library that
9f8698ad
RW
2740supports backtracking and a small logical framework. The idea is to build up
2741chunks that are memoized and there is no clear scanner/parser separation,
2742chunks can be expressions as well as simple tokens.")
3a71dac0 2743 (license license:lgpl2.0+)))
12d73f9c
RW
2744
2745(define-public guile-persist
09f0bc87
MB
2746 (package
2747 (name "guile-persist")
2748 (version "1.2.3")
2749 (source (origin
2750 (method git-fetch)
2751 (uri (git-reference
2752 (url "https://gitlab.com/tampe/guile-persist")
2753 (commit (string-append "v" version))))
2754 (file-name (git-file-name name version))
2755 (sha256
2756 (base32
2757 "19f8hqcax4v40858kx2j8fy1cvzc2djj99r0n17dy1xxmwa097qi"))))
2758 (build-system gnu-build-system)
2759 (arguments
2760 `(#:phases
2761 (modify-phases %standard-phases
2762 (add-after 'unpack 'patch-prefix
2763 (lambda* (#:key inputs outputs #:allow-other-keys)
2764 (substitute* "src/Makefile.am"
2765 (("/usr/local/lib/guile")
2766 (string-append (assoc-ref outputs "out") "/lib/guile"))
2767 (("/usr/local/include/guile")
2768 (string-append (assoc-ref inputs "guile") "/include/guile"))
2769 (("-L/usr/local/lib")
2770 (string-append "-L" (assoc-ref inputs "guile") "/lib")))
2771 #t))
2772 (add-after 'unpack 'patch-library-reference
2773 (lambda* (#:key outputs #:allow-other-keys)
2774 (let ((out (assoc-ref outputs "out")))
2775 (substitute* "persist/persistance.scm"
2776 (("\"libguile-persist\"")
2777 (format #f "\"~a/lib/guile/3.0/extensions/libguile-persist\"" out)))
2778 #t))))))
2779 (inputs
2780 `(("guile" ,guile-3.0)))
2781 (native-inputs
2782 `(("autoconf" ,autoconf)
2783 ("automake" ,automake)
2784 ("libtool" ,libtool)
2785 ("pkg-config" ,pkg-config)))
2786 (home-page "https://gitlab.com/tampe/guile-persist")
2787 (synopsis "Persistence programming framework for Guile")
2788 (description
2789 "This is a serialization library for serializing objects like classes
12d73f9c
RW
2790and objects, closures and structs. This currently does not support
2791serializing continuations or delimited continuations.")
09f0bc87 2792 (license license:lgpl2.0+)))
6d37301b
RW
2793
2794(define-public python-on-guile
ac944584
MB
2795 (package
2796 (name "python-on-guile")
cdf6a118 2797 (version "1.2.3.5")
ac944584
MB
2798 (home-page "https://gitlab.com/python-on-guile/python-on-guile")
2799 (source (origin
2800 (method git-fetch)
2801 (uri (git-reference (url home-page)
2802 (commit (string-append "v" version))))
2803 (file-name (git-file-name name version))
2804 (sha256
2805 (base32
cdf6a118 2806 "05xrvcj6a4gzq1ybyin270qz8wamgc7w2skyi9iy6hkpgdhxy8vf"))))
ac944584
MB
2807 (build-system gnu-build-system)
2808 (arguments
2809 `(#:parallel-build? #f ;not supported
2810 #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
2811 #:phases
2812 (modify-phases %standard-phases
2813 (add-after 'unpack 'chdir
2814 (lambda _ (chdir "modules") #t))
2815 (add-after 'chdir 'augment-GUILE_LOAD_PATH
2816 (lambda _
2817 ;; TODO: It would be better to patch the Makefile.
2818 (setenv "GUILE_LOAD_PATH"
2819 (string-append ".:"
2820 (getenv "GUILE_LOAD_PATH")))
2821 #t))
2822 (add-after 'install 'wrap
2823 (lambda* (#:key outputs #:allow-other-keys)
2824 ;; Wrap the 'python' executable so it can find its
862d6a91
MB
2825 ;; dependencies and own modules.
2826 (let* ((out (assoc-ref outputs "out"))
2827 (guile-version ,(version-major+minor
2828 (package-version guile-3.0)))
2829 (scm (string-append out "/share/guile/site/"
2830 guile-version))
2831 (ccache (string-append out "/lib/guile/" guile-version
2832 "/site-ccache"))
2833 (load-path (string-join
2834 (cons scm
2835 ;; XXX: cdr because we augment it above.
2836 (cdr (string-split
2837 (getenv "GUILE_LOAD_PATH") #\:)))
2838 ":"))
2839 (compiled-path (string-append
2840 ccache ":"
2841 (getenv "GUILE_LOAD_COMPILED_PATH"))))
ac944584
MB
2842 (wrap-program (string-append out "/bin/python")
2843 `("GUILE_LOAD_PATH" ":" prefix
862d6a91 2844 (,load-path))
ac944584 2845 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
862d6a91 2846 (,compiled-path)))
ac944584
MB
2847 #t))))))
2848 (inputs
4f33bf57
MB
2849 `(("guile" ,guile-3.0)
2850 ("guile-persist" ,guile-persist)
ac944584
MB
2851 ("guile-readline" ,guile-readline)
2852 ("guile-stis-parser" ,guile-stis-parser)))
2853 (native-inputs
2854 `(("autoconf" ,autoconf)
2855 ("automake" ,automake)
2856 ("libtool" ,libtool)
2857 ("pkg-config" ,pkg-config)))
2858 (synopsis "Python implementation in Guile")
2859 (description
2860 "This package allows you to compile a Guile Python file to any target
6d37301b 2861from @code{tree-il}.")
ac944584 2862 (license license:lgpl2.0+)))
b97b4624
RW
2863
2864(define-public guile-file-names
2865 (package
2866 (name "guile-file-names")
72a0706f 2867 (version "0.3")
b97b4624
RW
2868 (source (origin
2869 (method url-fetch)
2870 (uri (string-append "http://brandon.invergo.net/software/download/"
2871 "guile-file-names/guile-file-names-"
2872 version ".tar.gz"))
2873 (sha256
2874 (base32
72a0706f 2875 "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz"))))
b97b4624
RW
2876 (build-system gnu-build-system)
2877 (arguments
2878 `(#:phases
2879 (modify-phases %standard-phases
481eca80 2880 (add-after 'unpack 'fix-target-directory
b97b4624 2881 (lambda _
481eca80 2882 (substitute* "src/Makefile.in"
b97b4624
RW
2883 (("guilemoddir = \\$\\(GUILE_SITE\\)")
2884 "guilemoddir = $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
2885 #t)))))
2886 (inputs
2887 `(("guile" ,guile-2.2)))
2888 (native-inputs
2889 `(("pkg-config" ,pkg-config)))
2890 (home-page "https://gitlab.com/brandoninvergo/guile-file-names")
2891 (synopsis "Manipulate file names")
2892 (description
2893 "The @code{(file-names)} module provides tools for manipulating file
2894names. The module was built on the idea that doing anything more than a
2895non-trivial modification of a file name string is a pain (making sure all
2896slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
2897Inevitably, you have to break the string up into chunks and operate on that
2898list of components. This module takes care of that for you.")
2899 (license license:lgpl3+)))
bdf2dd79
JN
2900
2901(define-public guile-gi
bb6c8f20
RW
2902 (package
2903 (name "guile-gi")
8ab08495 2904 (version "0.3.1")
bb6c8f20
RW
2905 (source (origin
2906 (method url-fetch)
2907 (uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
2908 version ".tar.gz"))
2909 (sha256
2910 (base32
8ab08495 2911 "1ljcfyar1nb6h4jskxnnzrcxcsblawc50qqfdn8cax3zqfskmvzj"))))
e4ef0d7c 2912 (build-system glib-or-gtk-build-system)
bb6c8f20 2913 (arguments
b5d4d5b9 2914 `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
e4ef0d7c 2915 #:modules ((guix build glib-or-gtk-build-system)
a431a635
RW
2916 (guix build utils)
2917 (ice-9 popen)
2918 (ice-9 rdelim))
b5d4d5b9
RW
2919 #:phases
2920 (modify-phases %standard-phases
a431a635
RW
2921 (add-after 'unpack 'patch-references-to-extension
2922 (lambda* (#:key outputs #:allow-other-keys)
2923 (let ((effective (read-line
2924 (open-pipe* OPEN_READ
2925 "guile" "-c"
2926 "(display (effective-version))"))))
d414327a 2927 (substitute* (find-files "module" ".*\\.scm")
a431a635
RW
2928 (("\\(load-extension \"libguile-gi\" \"(.*)\"\\)" m arg)
2929 (format #f "~s"
2930 `(load-extension
2931 (format #f "~alibguile-gi"
2932 (if (getenv "GUILE_GI_UNINSTALLED")
2933 ""
e4ef0d7c 2934 ,(format #f "~a/lib/guile/~a/extensions/"
a431a635
RW
2935 (assoc-ref outputs "out")
2936 effective)))
2937 ,arg)))))
2938 (setenv "GUILE_GI_UNINSTALLED" "1")
2939 #t))
b5d4d5b9
RW
2940 (add-before 'check 'start-xorg-server
2941 (lambda* (#:key inputs #:allow-other-keys)
2942 ;; The init_check test requires a running X server.
2943 (system (format #f "~a/bin/Xvfb :1 &"
2944 (assoc-ref inputs "xorg-server")))
2945 (setenv "DISPLAY" ":1")
2946 #t)))))
bb6c8f20 2947 (native-inputs
f2d97d57 2948 `(("gettext" ,gettext-minimal)
6153fa0a 2949 ("glib:bin" ,glib "bin") ; for glib-compile-resources
bb6c8f20 2950 ("libtool" ,libtool)
b5d4d5b9
RW
2951 ("pkg-config" ,pkg-config)
2952 ("xorg-server" ,xorg-server)))
bb6c8f20
RW
2953 (propagated-inputs
2954 `(("glib" ,glib)
2955 ("gobject-introspection" ,gobject-introspection)
2956 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
2957 ("gtk+" ,gtk+)
2958 ("guile-lib" ,guile-lib)
2959 ("webkitgtk" ,webkitgtk)))
b6bee63b 2960 (inputs `(("guile" ,guile-3.0)))
bb6c8f20
RW
2961 (home-page "https://github.com/spk121/guile-gi")
2962 (synopsis "GObject bindings for Guile")
2963 (description
2964 "Guile-GI is a library for Guile that allows using GObject-based
bdf2dd79
JN
2965libraries, such as GTK+3. Its README comes with the disclaimer: This is
2966pre-alpha code.")
bb6c8f20 2967 (license license:gpl3+)))
dec4b3aa 2968
b6bee63b 2969(define-public guile2.2-gi
bfb51f5e
RW
2970 (package
2971 (inherit guile-gi)
b6bee63b 2972 (name "guile2.2-gi")
3d633a1e 2973 (inputs
b6bee63b 2974 `(("guile" ,guile-2.2)
3d633a1e 2975 ,@(alist-delete "guile" (package-inputs guile-gi))))))
bfb51f5e 2976
b6bee63b
LC
2977(define-public guile3.0-gi
2978 (deprecated-package "guile3.0-gi" guile-gi))
2979
fb6b9f3b
MB
2980(define-public guile-srfi-89
2981 (package
2982 (name "guile-srfi-89")
2983 (version "0.0.1")
2984 (source
2985 (origin
2986 (method git-fetch)
2987 (uri (git-reference
2988 (url "https://gitlab.com/mjbecze/guile-srfi-89.git")
2989 (commit version)))
2990 (sha256
2991 (base32
2992 "1981c0rrzxqx3md9jx8ir7j3m2mzg9m72b33p5jvw36zirbzpl20"))
2993 (file-name (git-file-name name version))))
2994 (build-system guile-build-system)
2995 (native-inputs
2996 `(("guile" ,guile-3.0)))
2997 (home-page "https://gitlab.com/mjbecze/guile-srfi-89")
2998 (synopsis "Hygienic implementation of SRFI-89 for Guile")
2999 (description
3000 "This package provides SRFI-89 optional positional and named
3001parameters, which define* and lambda* special forms")
3002 (license license:gpl3+)))
3003
7afbaefe
MB
3004(define-public guile-srfi-145
3005 (package
3006 (name "guile-srfi-145")
3007 (version "0.0.1")
3008 (source
3009 (origin
3010 (method git-fetch)
3011 (uri (git-reference
3012 (url "https://gitlab.com/mjbecze/guile-srfi-145.git")
3013 (commit version)))
3014 (sha256
3015 (base32
3016 "1gssa8cmcp8640fil9z8dpil8v5l279wlalqjcx3fls5jwv13q1b"))
3017 (file-name (git-file-name name version))))
3018 (build-system guile-build-system)
3019 (native-inputs
3020 `(("guile" ,guile-3.0)))
3021 (home-page "https://gitlab.com/mjbecze/guile-srfi-145")
3022 (synopsis "SRFI-145 port for Guile")
3023 (description
3024 "This package provides SRFI-145. This provides the means to
3025denote the invalidity of certain code paths in a Scheme program.")
3026 (license license:gpl3+)))
3027
e0607093
MB
3028(define-public guile-srfi-158
3029 (package
3030 (name "guile-srfi-158")
3031 (version "0.0.1")
3032 (source
3033 (origin
3034 (method git-fetch)
3035 (uri (git-reference
3036 (url "https://gitlab.com/mjbecze/guile-srfi-158.git")
3037 (commit version)))
3038 (sha256
3039 (base32
3040 "0b8hlv1bldbcwkcxi9y8mm6xp5gbgpg7b15bwqxv70iynl9d9a7c"))
3041 (file-name (git-file-name name version))))
3042 (build-system gnu-build-system)
3043 (native-inputs
3044 `(("autoconf" ,autoconf)
3045 ("automake" ,automake)
3046 ("pkg-config" ,pkg-config)))
3047 (inputs
3048 `(("guile" ,guile-3.0)))
3049 (home-page "https://gitlab.com/samplet/guile-srfi-158")
3050 (synopsis "SRFI 158 (Generators and Accumulators) for Guile")
3051 (description "This package provides an implementation of SRFI 158
3052for Guile. SRFI 158 defines utility procedures that create,
3053transform, and consume generators. It also defines procedures that
3054return accumulators. It is implemented by wrapping the sample
3055implementation in a thin Guile compatibility layer.")
3056 (license license:gpl3+)))
3057
dec4b3aa
LC
3058(define-public guile-srfi-159
3059 (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
3060 (revision "0"))
3061 (package
3062 (name "guile-srfi-159")
3063 (version (git-version "0" revision commit))
3064 (home-page "https://bitbucket.org/bjoli/guile-srfi-159")
3065 (source (origin
3066 (method hg-fetch)
3067 (uri (hg-reference (changeset commit)
3068 (url home-page)))
3069 (sha256
3070 (base32
3071 "1zw6cmcy7xdbfiz3nz9arqnn7l2daidaps6ixkcrc9b6k51fdv3p"))
3072 (file-name (git-file-name name version))))
3073 (build-system guile-build-system)
3074 (arguments
3075 ;; The *-impl.scm files are actually included from module files; they
3076 ;; should not be compiled separately, but they must be installed.
3077 '(#:not-compiled-file-regexp "-impl\\.scm$"))
3078 (inputs
3079 `(("guile" ,guile-2.2)))
3080 (synopsis "Formatting combinators for Guile")
3081 (description
3082 "The @code{(srfi-159)} module and its sub-modules implement the
3083formatting combinators specified by
3084@uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
3085more expressive and flexible than the traditional @code{format} procedure.")
3086 (license license:bsd-3))))
f0de9544 3087
08a8872f
MB
3088(define-public guile-srfi-180
3089 (let ((commit "9188bf9724c6d320ef804579d222e855b007b193")
3090 (revision "0"))
3091 (package
3092 (name "guile-srfi-180")
3093 (version (git-version "0" revision commit))
3094 (source
3095 (origin
3096 (method git-fetch)
3097 (uri (git-reference
8ed4c468 3098 (url "https://github.com/scheme-requests-for-implementation/srfi-180")
08a8872f
MB
3099 (commit commit)))
3100 (sha256
3101 (base32
3102 "08lf70rsak8mwfij55xc37pg9zg7c87fizmhz7ln46skzj68sl3y"))
3103 (modules '((guix build utils)))
3104 (snippet
3105 '(begin
3106 (delete-file-recursively "srfi/files")
3107 (delete-file "srfi/run-r7rs-checks.guile.scm")
3108 (delete-file "srfi/run-r7rs-checks.scm")
3109 (delete-file "srfi/check.scm")
3110 #t))
3111 (file-name (git-file-name name version))))
3112 (build-system guile-build-system)
3113 (arguments
3114 '(#:not-compiled-file-regexp "body\\.scm$"))
3115 (native-inputs
3116 `(("guile" ,guile-3.0)))
3117 (propagated-inputs
3118 `(("guile-srfi-145" ,guile-srfi-145)))
3119 (home-page "https://srfi.schemers.org/srfi-180/")
3120 (synopsis "JSON parser and printer for Guile")
3121 (description
3122 "This library implements a JavaScript Object Notation (JSON) parser and printer.
3123It also supports parsing JSON objects that may be bigger than memory with a streaming
3124API.")
3125 (license license:expat))))
3126
f0de9544 3127(define-public emacsy
48eb71ae
JN
3128 (package
3129 (name "emacsy")
3130 (version "0.4.1")
3131 (source (origin
3132 (method url-fetch)
475c3278
LC
3133 (uri (string-append "mirror://savannah/emacsy/emacsy-"
3134 version ".tar.gz"))
48eb71ae
JN
3135 (sha256
3136 (base32
475c3278
LC
3137 "1cpb85dl1nibd34c2x2h7vfmjpkgh353p5b1w20v6cs6gmvgg4np"))
3138 (modules '((guix build utils)))
3139 (snippet
3140 '(begin
3141 (substitute* "configure"
3142 ;; Allow builds with Guile 3.0.
3143 (("2\\.2 2\\.0")
3144 "3.0 2.2 2.0")
3145
3146 ;; Freeglut 3.2 provides 'glut.pc', not 'freeglut.pc'.
3147 (("freeglut >= ")
3148 "glut >= "))
3149
3150 (substitute* '("emacsy/emacsy.c"
3151 "example/hello-emacsy.c")
3152 (("#include <libguile\\.h>")
3153 (string-append "#include <stdlib.h>\n"
3154 "#include <stdio.h>\n"
3155 "#include <string.h>\n"
3156 "#include <unistd.h>\n"
3157 "#include <libguile.h>\n")))))))
48eb71ae
JN
3158 (build-system gnu-build-system)
3159 (native-inputs
475c3278
LC
3160 `(("bzip2" ,bzip2)
3161 ("guile" ,guile-3.0)
f2d97d57 3162 ("gettext" ,gettext-minimal)
48eb71ae
JN
3163 ("libtool" ,libtool)
3164 ("perl" ,perl)
3165 ("pkg-config" ,pkg-config)
3166 ("texinfo" ,texinfo)
1aa026aa 3167 ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
114f02ba 3168 (inputs
48eb71ae 3169 `(("dbus-glib" ,dbus-glib)
475c3278 3170 ("guile" ,guile-3.0)
48eb71ae
JN
3171 ("guile-lib" ,guile-lib)
3172 ("guile-readline" ,guile-readline)
48eb71ae 3173 ("freeglut" ,freeglut)
48eb71ae 3174 ("webkitgtk" ,webkitgtk)))
114f02ba
AS
3175 (propagated-inputs
3176 `(("glib-networking" ,glib-networking)
3177 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
48eb71ae 3178 (arguments
114f02ba
AS
3179 `(#:modules ((guix build gnu-build-system)
3180 (guix build utils)
3181 (ice-9 popen)
3182 (ice-9 rdelim)
3183 (ice-9 regex)
3184 (ice-9 ftw)
3185 (srfi srfi-26))
3186 #:phases
48eb71ae
JN
3187 (modify-phases %standard-phases
3188 (add-before 'configure 'setenv
3189 (lambda _
3190 (setenv "GUILE_AUTO_COMPILE" "0")
114f02ba
AS
3191 #t))
3192 (add-after 'install 'wrap-binaries
3193 (lambda* (#:key inputs outputs #:allow-other-keys)
3194 (let* ((out (assoc-ref outputs "out"))
3195 (effective (read-line
3196 (open-pipe* OPEN_READ
3197 "guile" "-c"
3198 "(display (effective-version))")))
3199 (deps (map (cut assoc-ref inputs <>)
3200 '("guile-lib" "guile-readline")))
3201 (scm-path (map (cut string-append <> "/share/guile/site/"
3202 effective) `(,out ,@deps)))
3203 (go-path (map (cut string-append <> "/lib/guile/" effective
3204 "/site-ccache/") `(,out ,@deps)))
3205 (examples (filter (cut string-match "emacsy" <>)
3206 (scandir (string-append out "/bin/"))))
3207 (progs (map (cut string-append out "/bin/" <>)
3208 examples)))
3209 (map (cut wrap-program <>
3210 `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
3211 `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))
3212 progs)
3213 #t))))))
48eb71ae
JN
3214 (home-page "https://savannah.nongnu.org/projects/emacsy")
3215 (synopsis "Embeddable GNU Emacs-like library using Guile")
3216 (description
3217 "Emacsy is an embeddable Emacs-like library that uses GNU Guile
f0de9544
JN
3218as extension language. Emacsy can give a C program an Emacsy feel with
3219keymaps, minibuffer, recordable macros, history, tab completion, major
3220and minor modes, etc., and can also be used as a pure Guile library. It
48eb71ae
JN
3221comes with a simple counter example using FreeGLUT and browser examples
3222in C using Gtk+-3 and WebKitGtk.")
3223 (license license:gpl3+)))
2135610c 3224
c99f32b9 3225(define-public emacsy-minimal
e9db965f 3226 (let ((commit "v0.4.1-37-g5f91ee6"))
c99f32b9
AS
3227 (package
3228 (inherit emacsy)
3229 (name "emacsy-minimal")
9da87078 3230 (version (string-drop commit 1))
bdcb287e
MR
3231 (source
3232 (origin
3233 (method git-fetch)
3234 (uri (git-reference
3235 (url "https://git.savannah.gnu.org/git/emacsy.git")
3236 (commit commit)))
3237 (file-name (git-file-name name version))
3238 (sha256
e9db965f 3239 (base32 "03ym14g9qhjqmryr5z065kynqm8yhmvnbs2djl6vp3i9cmqln8cl"))))
c99f32b9
AS
3240 (build-system gnu-build-system)
3241 (inputs
3242 `(("guile" ,guile-2.2)
8d6ead32
MR
3243 ("guile-lib" ,guile2.2-lib)
3244 ("guile-readline" ,guile2.2-readline)))
c99f32b9
AS
3245 (propagated-inputs '())
3246 (arguments
3247 `(#:configure-flags '("--without-examples")
3248 #:phases
3249 (modify-phases %standard-phases
bdcb287e
MR
3250 (add-before 'configure 'setenv
3251 (lambda _
3252 (setenv "GUILE_AUTO_COMPILE" "0")
3253 #t))))))))
c99f32b9 3254
2135610c
LC
3255(define-public guile-jpeg
3256 (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
3257 (revision "0"))
3258 (package
3259 (name "guile-jpeg")
3260 (version (git-version "0.0" revision commit))
3261 (home-page "https://gitlab.com/wingo/guile-jpeg")
3262 (source (origin
3263 (method git-fetch)
3264 (uri (git-reference (url home-page)
3265 (commit commit)))
3266 (sha256
3267 (base32
3268 "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
3269 (file-name (git-file-name name version))
3270 (modules '((guix build utils)))
3271 (snippet
3272 '(begin
3273 ;; Install .go files in the right place.
3274 (substitute* "Makefile.am"
3275 (("/ccache") "/site-ccache"))
3276 #t))))
3277 (build-system gnu-build-system)
3278 (native-inputs
3279 `(("autoconf" ,autoconf)
3280 ("automake" ,automake)
3281 ("pkg-config" ,pkg-config)
3282 ("guile" ,guile-2.2)))
3283 (synopsis "JPEG file parsing library for Guile")
3284 (description
3285 "Guile-JPEG is a Scheme library to parse JPEG image files and to
3286perform geometrical transforms on JPEG images.")
3287 (license license:gpl3+))))
e8c2da41
AS
3288
3289(define-public nomad
3290 (package
3291 (name "nomad")
569cd538 3292 (version "0.2.0-alpha-199-g3e7a475")
e8c2da41
AS
3293 (source (origin
3294 (method git-fetch)
3295 (uri (git-reference
0e5a68a2 3296 (url "https://git.savannah.gnu.org/git/nomad.git/")
e8c2da41
AS
3297 (commit version)))
3298 (file-name (git-file-name name version))
3299 (sha256
3300 (base32
569cd538 3301 "0p0ha6prp7pyadp61clbhc6b55023vxzfwy14j2qygb2mkq7fhic"))))
e8c2da41
AS
3302 (build-system gnu-build-system)
3303 (native-inputs
3304 `(("autoconf" ,autoconf)
3305 ("automake" ,automake)
3306 ("bash" ,bash)
3307 ("pkg-config" ,pkg-config)
3308 ("libtool" ,libtool)
3309 ("guile" ,guile-2.2)
5f1553ce
AS
3310 ("glib:bin" ,glib "bin")
3311 ("texinfo" ,texinfo)
fccc0127 3312 ("gettext" ,gettext-minimal)
5f1553ce 3313 ("perl" ,perl)))
e8c2da41 3314 (inputs
0e5a68a2
MR
3315 `(;; Guile
3316 ("guile" ,guile-2.2)
19cf8342 3317 ("guile-lib" ,guile2.2-lib)
19cf8342 3318 ("guile-readline" ,guile2.2-readline)
a987f128 3319 ("guile-gcrypt" ,guile2.2-gcrypt)
e8c2da41 3320 ("gnutls" ,gnutls)
0e5a68a2 3321 ("g-golf" ,g-golf)
e8c2da41
AS
3322 ("shroud" ,shroud)
3323 ("emacsy" ,emacsy-minimal)
0e5a68a2 3324 ;; Gtk
e8c2da41
AS
3325 ("glib" ,glib)
3326 ("dbus-glib" ,dbus-glib)
0e5a68a2 3327 ("glib-networking" ,glib-networking)
e8c2da41 3328 ("gtk+" ,gtk+)
a987f128 3329 ("gtk+:bin" ,gtk+ "bin")
e8c2da41 3330 ("webkitgtk" ,webkitgtk)
0e5a68a2 3331 ("gtksourceview" ,gtksourceview)
569cd538 3332 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
0e5a68a2
MR
3333 ("vte" ,vte)
3334 ;; Gstreamer
a987f128
MR
3335 ("gstreamer" ,gstreamer)
3336 ("gst-plugins-base" ,gst-plugins-base)
3337 ("gst-plugins-good" ,gst-plugins-good)
3338 ("gst-plugins-bad" ,gst-plugins-bad)
3339 ("gst-plugins-ugly" ,gst-plugins-ugly)
0e5a68a2
MR
3340 ;; Util
3341 ("xorg-server" ,xorg-server)))
e8c2da41
AS
3342 (arguments
3343 `(#:modules ((guix build gnu-build-system)
3344 (guix build utils)
3345 (ice-9 popen)
3346 (ice-9 rdelim)
3347 (srfi srfi-26))
3348 #:phases
3349 (modify-phases %standard-phases
3350 (add-before 'check 'start-xorg-server
3351 (lambda* (#:key inputs #:allow-other-keys)
3352 ;; The test suite requires a running X server.
3353 (system (format #f "~a/bin/Xvfb :1 &"
3354 (assoc-ref inputs "xorg-server")))
3355 (setenv "DISPLAY" ":1")
3356 #t))
3357 (add-after 'install 'wrap-binaries
3358 (lambda* (#:key inputs outputs #:allow-other-keys)
0e5a68a2
MR
3359 (let* ((out (assoc-ref outputs "out"))
3360 (effective (read-line (open-pipe*
3361 OPEN_READ
3362 "guile" "-c"
3363 "(display (effective-version))")))
3364 (gst-plugins (map (lambda (i)
3365 (string-append (assoc-ref inputs i)
3366 "/lib/gstreamer-1.0"))
3367 `("gstreamer"
3368 "gst-plugins-base"
3369 "gst-plugins-good"
3370 "gst-plugins-bad"
3371 "gst-plugins-ugly")))
3372 (out-append (lambda (. args)
3373 (apply string-append out args)))
3374 (gi-path (out-append "/lib/girepository-1.0"))
3375 (load-path (out-append "/share/guile/site/" effective))
3376 (comp-path (out-append "/lib/guile/"
3377 effective "/site-ccache"))
3378 (ext-path (out-append "/libexec/nomad")))
3379 (wrap-program (string-append out "/bin/nomad")
3380 `("GUILE_LOAD_PATH" ":" prefix
3381 (,load-path
3382 ,(getenv "GUILE_LOAD_PATH")))
3383 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
3384 (,comp-path
3385 ,(getenv "GUILE_LOAD_COMPILED_PATH")))
3386 `("GI_TYPELIB_PATH" ":" prefix
3387 (,gi-path ,(getenv "GI_TYPELIB_PATH")))
3388 `("GIO_EXTRA_MODULES" ":" prefix
3389 (,(getenv "GIO_EXTRA_MODULES")))
3390 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix ,gst-plugins)
3391 `("NOMAD_WEB_EXTENSION_DIR" ":" prefix (,ext-path)))
e8c2da41
AS
3392 #t))))))
3393 (home-page "https://savannah.nongnu.org/projects/nomad/")
3394 (synopsis "Extensible Web Browser in Guile Scheme")
a987f128
MR
3395 (description "Nomad is a Emacs-like web browser that consists of a modular
3396feature-set, fully programmable in Guile Scheme.")
e8c2da41 3397 (license license:gpl3+)))
248965c9
RW
3398
3399(define-public guile-cv
3400 (package
3401 (name "guile-cv")
3402 (version "0.2.1")
3403 (source (origin
3404 (method url-fetch)
3405 (uri (string-append "mirror://gnu/guile-cv/guile-cv-"
3406 version ".tar.gz"))
3407 (sha256
3408 (base32
3409 "0qdf0s2h1xj5lbhnc1pfw69i3zg08pqy2y6869b92ydfis8r82j9"))))
3410 (build-system gnu-build-system)
3411 (arguments
3412 `(#:phases
3413 (modify-phases %standard-phases
3414 (add-after 'unpack 'prepare-build
3415 (lambda* (#:key inputs outputs #:allow-other-keys)
3416 (substitute* "configure"
3417 (("SITEDIR=\"\\$datadir/guile-cv\"")
3418 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
3419 (("SITECCACHEDIR=\"\\$libdir/guile-cv/")
3420 "SITECCACHEDIR=\"$libdir/"))
3421 (substitute* "cv/init.scm"
3422 (("\\(dynamic-link \"libvigra_c\"\\)")
3423 (string-append "(dynamic-link \""
3424 (assoc-ref inputs "vigra-c")
3425 "/lib/libvigra_c\")"))
3426 (("\\(dynamic-link \"libguile-cv\"\\)")
3427 (format #f "~s"
3428 `(dynamic-link
3429 (format #f "~alibguile-cv"
3430 (if (getenv "GUILE_CV_UNINSTALLED")
3431 ""
3432 ,(format #f "~a/lib/"
3433 (assoc-ref outputs "out"))))))))
3434 (setenv "GUILE_CV_UNINSTALLED" "1")
3435 ;; Only needed to satisfy the configure script.
3436 (setenv "LD_LIBRARY_PATH"
3437 (string-append (assoc-ref inputs "vigra-c") "/lib"))
3438 #t)))))
3439 (inputs
3440 `(("vigra" ,vigra)
3441 ("vigra-c" ,vigra-c)
3442 ("guile" ,guile-2.2)))
3443 (native-inputs
3444 `(("texlive" ,(texlive-union (list texlive-booktabs
3445 texlive-lm
3446 texlive-siunitx
3447 texlive-standalone
3448 texlive-xcolor
3449 texlive-fonts-iwona)))
3450 ("pkg-config" ,pkg-config)))
3451 (propagated-inputs
3452 `(("guile-lib" ,guile-lib)))
3453 (home-page "https://www.gnu.org/software/guile-cv/")
3454 (synopsis "Computer vision library for Guile")
3455 (description "Guile-CV is a Computer Vision functional programming library
3456for the Guile Scheme language. It is based on Vigra (Vision with Generic
3457Algorithms), a C++ image processing and analysis library. Guile-CV contains
3458bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
3459enriched with pure Guile Scheme algorithms, all accessible through a nice,
3460clean and easy to use high level API.")
3461 (license license:gpl3+)))
7ff157c1
RW
3462
3463(define-public guile-ffi-fftw
353fb48f
RW
3464 (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
3465 (revision "2"))
7ff157c1
RW
3466 (package
3467 (name "guile-ffi-fftw")
3468 (version (git-version "0" revision commit))
3469 (source (origin
3470 (method git-fetch)
3471 (uri (git-reference
b0e7b699 3472 (url "https://github.com/lloda/guile-ffi-fftw")
7ff157c1
RW
3473 (commit commit)))
3474 (file-name (git-file-name "guile-ffi-fftw" version))
3475 (sha256
3476 (base32
353fb48f 3477 "08j40a5p6a8pgvhffmzb5rfdnrav2mksy3gfjkdqy93jfj1z5afg"))))
7ff157c1
RW
3478 (build-system guile-build-system)
3479 (arguments
3480 `(#:source-directory "mod"
3481 #:phases
3482 (modify-phases %standard-phases
3483 (add-after 'unpack 'prepare-build
3484 (lambda* (#:key inputs #:allow-other-keys)
3485 (substitute* "mod/ffi/fftw.scm"
3486 (("\\(getenv \"GUILE_FFI_FFTW_LIBFFTW3_PATH\"\\)")
3487 (format #f "\"~a/lib\"" (assoc-ref inputs "fftw"))))
3488 #t))
3489 (add-after 'build 'check
3490 (lambda _
3491 (invoke "guile" "-L" "mod"
3492 "-s" "test/test-ffi-fftw.scm"))))))
3493 (inputs
3494 `(("fftw" ,fftw)
3495 ("guile" ,guile-2.2)))
3496 (home-page "https://github.com/lloda/guile-ffi-fftw/")
3497 (synopsis "Access FFTW through Guile's FFI")
3498 (description "This is a minimal set of Guile FFI bindings for the FFTW
3499library's ‘guru interface’. It provides two functions: @code{fftw-dft! rank
3500sign in out} and @code{fftw-dft rank sign in}. These bindings being minimal,
3501there is no support for computing & reusing plans, or split r/i transforms, or
3502anything other than straight complex DFTs.")
353fb48f 3503 (license license:lgpl3+))))
f9ec89f4
TS
3504
3505(define-public srfi-64-driver
3506 (package
3507 (name "srfi-64-driver")
3508 (version "0.1")
3509 (source (origin
3510 (method url-fetch)
3511 (uri (string-append "https://files.ngyro.com/srfi-64-driver/"
3512 "srfi-64-driver-" version ".tar.gz"))
3513 (sha256
3514 (base32
3515 "188b6mb7sjjg0a8zldikinglf40ky8mg8rwh5768gjmch6gkk3ph"))))
3516 (build-system gnu-build-system)
3517 (arguments
3518 `(#:tests? #f
3519 #:phases
3520 (modify-phases %standard-phases
3521 (delete 'build))))
3522 (native-inputs
3523 `(("pkg-config" ,pkg-config)))
3524 (inputs
3525 `(("guile" ,guile-2.2)))
3526 (home-page "https://ngyro.com/software/srfi-64-driver.html")
3527 (synopsis "Automake test driver for SRFI 64 test suites")
3528 (description "This package provides an Automake test driver that can
3529run SRFI 64 test suites. It gives Automake insight into the individual
3530tests being run, resulting clearer and more specific output.")
3531 (license license:gpl3+)))
f6bf4b2c
TS
3532
3533(define-public guile-semver
3534 (package
3535 (name "guile-semver")
85ced665 3536 (version "0.1.1")
f6bf4b2c
TS
3537 (source (origin
3538 (method url-fetch)
3539 (uri (string-append "https://files.ngyro.com/guile-semver/"
3540 "guile-semver-" version ".tar.gz"))
3541 (sha256
3542 (base32
85ced665 3543 "109p4n39ln44cxvwdccf9kgb96qx54makvd2ir521ssz6wchjyag"))))
f6bf4b2c
TS
3544 (build-system gnu-build-system)
3545 (native-inputs
85ced665 3546 `(("pkg-config" ,pkg-config)))
f6bf4b2c 3547 (inputs
720e87fe 3548 `(("guile" ,guile-3.0)))
f6bf4b2c
TS
3549 (home-page "https://ngyro.com/software/guile-semver.html")
3550 (synopsis "Semantic Versioning (SemVer) for Guile")
3551 (description "This Guile library provides tools for reading,
3552comparing, and writing Semantic Versions. It also includes ranges in
3553the style of the Node Package Manager (NPM).")
3554 (license license:gpl3+)))
d67fa5c8 3555
b488b64a 3556(define-public guile3.0-semver
720e87fe
LC
3557 (deprecated-package "guile3.0-semver" guile-semver))
3558
3559(define-public guile2.2-semver
b488b64a
MB
3560 (package
3561 (inherit guile-semver)
720e87fe 3562 (name "guile2.2-semver")
b488b64a 3563 (inputs
720e87fe 3564 `(("guile" ,guile-2.2)))))
b488b64a 3565
d67fa5c8
LC
3566(define-public guile-hashing
3567 (package
3568 (name "guile-hashing")
3569 (version "1.2.0")
3570 (home-page "https://github.com/weinholt/hashing")
3571 (source (origin
3572 (method git-fetch)
3573 (uri (git-reference
3574 (url home-page)
3575 (commit (string-append "v" version))))
3576 (file-name (git-file-name name version))
3577 (sha256
3578 (base32
3579 "1362d3lmpv7slmv1zmr9wy8panq9sjr9787gc2hagd646mpsfpkl"))))
3580 (build-system guile-build-system)
3581 (arguments
3582 `(#:modules ((guix build guile-build-system)
3583 (guix build utils)
3584 (srfi srfi-26)
3585 (ice-9 ftw))
3586 #:implicit-inputs? #f ;needs nothing but Guile
3587 #:phases (modify-phases %standard-phases
3588 (add-before 'build 'move-sls-files
3589 (lambda _
3590 ;; Move the source under hashing/ in order to match
3591 ;; module names, and rename .sls files to .scm.
3592 (define (target file)
3593 (string-append "hashing/" file))
3594
3595 (define (sls->scm sls)
3596 (string-append (string-drop-right sls 4)
3597 ".scm"))
3598
3599 (mkdir "hashing")
3600 (for-each (lambda (file)
3601 (rename-file file (sls->scm file)))
3602 (find-files "." "\\.sls$"))
3603 (for-each (lambda (file)
3604 (rename-file file (target file)))
3605 (scandir "." (cut string-suffix? ".scm" <>)))
3606 (rename-file "private" "hashing/private")
3607 #t)))))
3608 (native-inputs
b6bee63b 3609 `(("guile" ,guile-3.0)))
d67fa5c8
LC
3610 (synopsis "Cryprographic hash functions implemented in Scheme")
3611 (description
3612 "The @code{(hashing @dots{})} modules implement cryptographic hash
3613functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
3614SHA-512).")
3615 (license license:expat)))
f918a8d9 3616
b6bee63b 3617(define-public guile2.2-hashing
f918a8d9
LC
3618 (package
3619 (inherit guile-hashing)
b6bee63b 3620 (name "guile2.2-hashing")
f918a8d9 3621 (native-inputs
318e1a93 3622 `(("guile" ,guile-2.2)))))
ef2b1d2c 3623
b6bee63b
LC
3624(define-public guile3.0-hashing
3625 (deprecated-package "guile3.0-hashing" guile-hashing))
3626
60c9264b
LC
3627(define-public guile-packrat
3628 (package
3629 (name "guile-packrat")
3630 (version "0.1.1")
3631 (home-page "https://github.com/weinholt/packrat")
3632 (source (origin
3633 (method git-fetch)
3634 (uri (git-reference
3635 (url home-page)
3636 (commit (string-append "v" version))))
3637 (file-name (git-file-name name version))
3638 (sha256
3639 (base32
3640 "1aga17164fkhbgllqc7ni6fk5zl8mkmgkl5zcsy67x7ngpyalbby"))))
3641 (build-system guile-build-system)
3642 (arguments
3643 `(#:implicit-inputs? #f ;needs nothing but Guile
3644 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3645 #:not-compiled-file-regexp "/extensible\\.scm$"
3646 #:phases (modify-phases %standard-phases
3647 (add-before 'build 'no-srfi-23
3648 (lambda _
3649 (substitute* "packrat.sls"
3650 (("\\(srfi :23 error\\)")
3651 (object->string '(only (guile) error))))
3652 #t)))))
3653 (native-inputs
3654 `(("guile" ,guile-3.0)))
3655 (synopsis "Packrat parser library in R6RS Scheme")
3656 (description
3657 "This is an R6RS Scheme adaptation of the
3658@uref{https://bford.info/packrat/, packrat parsing}. Packrat parsing is a
3659memoizing, backtracking, recursive-descent parsing technique that runs in time
3660and space linear in the size of the input text.")
3661 (license license:expat)))
3662
97a77eab
LC
3663(define-public guile-ac-d-bus
3664 (package
3665 (name "guile-ac-d-bus")
933fdd55 3666 (version "1.0.0-beta.0")
97a77eab
LC
3667 (home-page "https://gitlab.com/weinholt/ac-d-bus/")
3668 (source (origin
3669 (method git-fetch)
3670 (uri (git-reference
3671 (url home-page)
3672 (commit (string-append "v" version))))
3673 (file-name (git-file-name name version))
3674 (sha256
3675 (base32
933fdd55 3676 "0rl809qimhgz6b0rixakb42r2l4g53jr09a2g0s1hxgab0blz0kb"))))
97a77eab
LC
3677 (build-system guile-build-system)
3678 (arguments
3679 `(#:implicit-inputs? #f ;needs nothing but Guile
3680 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3681 #:phases (modify-phases %standard-phases
3682 (add-before 'build 'adjust-for-guile
3683 (lambda _
3684 ;; Adjust source file names for Guile.
3685 (define (guile-sls->sls file)
3686 (string-append (string-drop-right
3687 file (string-length ".guile.sls"))
3688 ".sls"))
3689
3690 ;; Remove files targeting other implementations:
3691 ;; *.mosh.sls, etc.
3692 (for-each delete-file
3693 (find-files
3694 "compat"
3695 (lambda (file stat)
3696 (not (string-contains file ".guile.")))))
3697
3698 ;; Rename *.guile.sls to *.sls so the ".guile" bit does
3699 ;; not appear in .go file names.
3700 (for-each (lambda (file)
3701 (rename-file file (guile-sls->sls file)))
3702 (find-files "compat" "\\.guile\\.sls"))
3703
3704 ;; Move directories under d-bus/ to match module names.
3705 (mkdir "d-bus")
3706 (for-each (lambda (directory)
3707 (rename-file directory
3708 (string-append "d-bus/"
3709 directory)))
3710 '("compat" "protocol"))
3711
3712 #t)))))
3713 (native-inputs
3714 `(("guile" ,guile-3.0)))
3715 (propagated-inputs
3716 `(("guile-packrat" ,guile-packrat)))
3717 (synopsis "D-Bus protocol implementation in R6RS Scheme")
3718 (description
3719 "AC/D-Bus is an implementation of the D-Bus wire protocol. D-Bus is an
3720interprocess communication protocol popular on GNU/Linux systems to
3721communicate with a variety of services. Originally designed for desktop
3722environments, it is now used by programs like VLC media player, BlueZ,
3723NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit,
3724gnome-keyring, and many more.")
3725 (license license:expat)))
3726
ef2b1d2c
RW
3727(define-public guile-webutils
3728 (let ((commit "8541904f761066dc9c27b1153e9a838be9a55299")
3729 (revision "0"))
3730 (package
3731 (name "guile-webutils")
3732 (version (git-version "0.1" revision commit))
3733 (source (origin
3734 (method git-fetch)
3735 (uri (git-reference
3736 (url "https://notabug.org/cwebber/guile-webutils.git")
3737 (commit commit)))
3738 (file-name (git-file-name name version))
3739 (sha256
3740 (base32
0a76d7a9
RW
3741 "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64"))
3742 (modules '((guix build utils)))
3743 (snippet
3744 '(begin
3745 ;; Allow builds with Guile 3.0.
3746 (substitute* "configure.ac"
3747 (("2\\.2 2\\.0")
3748 "3.0 2.2 2.0"))
3749 #t))))
ef2b1d2c
RW
3750 (build-system gnu-build-system)
3751 (native-inputs
3752 `(("autoconf" ,autoconf)
3753 ("automake" ,automake)
3754 ("pkg-config" ,pkg-config)
3755 ("texinfo" ,texinfo)))
3756 (inputs
0a76d7a9 3757 `(("guile" ,guile-3.0)))
ef2b1d2c
RW
3758 (propagated-inputs
3759 `(("guile-irregex" ,guile-irregex)
3760 ("guile-gcrypt" ,guile-gcrypt)))
3761 (home-page "https://notabug.org/cwebber/guile-webutils")
3762 (synopsis "Web application authoring utilities for Guile")
3763 (description
3764 "This package provides tooling to write web applications in Guile, such
3765as signed sessions, multipart message support, etc.")
3766 (license license:gpl3+))))
5479cef8 3767
0a76d7a9
RW
3768(define-public guile2.2-webutils
3769 (package
3770 (inherit guile-webutils)
3771 (name "guile2.2-webutils")
3772 (inputs
3773 `(("guile" ,guile-2.2)))
3774 (propagated-inputs
3775 `(("guile-irregex" ,guile2.2-irregex)
3776 ("guile-gcrypt" ,guile2.2-gcrypt)))))
3777
5479cef8
RW
3778(define-public guile-lens
3779 (let ((commit "14b15d07255f9d3f55d40a3b750d13c9ee3a154f")
3780 (revision "0"))
3781 (package
3782 (name "guile-lens")
3783 (version (git-version "0.1" revision commit))
3784 (source (origin
3785 (method git-fetch)
3786 (uri (git-reference
3787 (url "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3788 (commit commit)))
3789 (file-name (git-file-name name version))
3790 (sha256
3791 (base32
3792 "0w8jzqyla56yrgj7acsgd4nspyir6zgp3vgxid4xmwhg9wmf1ida"))))
3793 (build-system gnu-build-system)
3794 (arguments
3795 '(#:phases
3796 (modify-phases %standard-phases
3797 (add-after 'unpack 'run-hall
3798 (lambda _
3799 (setenv "HOME" "/tmp") ; for ~/.hall
3800 (invoke "hall" "dist" "-x"))))))
3801 (native-inputs
3802 `(("autoconf" ,autoconf)
3803 ("automake" ,automake)
ca24b3fb 3804 ("guile" ,guile-3.0)
5479cef8
RW
3805 ("guile-hall" ,guile-hall)
3806 ("pkg-config" ,pkg-config)
3807 ("texinfo" ,texinfo)))
3808 (home-page "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3809 (synopsis "Composable lenses for data structures in Guile")
3810 (description
3811 "Guile-Lens is a library implementing lenses in Guile. The library is
3812currently a re-implementation of the lentes library for Clojure. Lenses
3813provide composable procedures, which can be used to focus, apply functions
3814over, or update a value in arbitrary data structures.")
3815 (license license:gpl3+))))
69bb61f1 3816
ca24b3fb
RW
3817(define-public guile2.2-lens
3818 (package
3819 (inherit guile-lens)
3820 (name "guile2.2-lens")
3821 (native-inputs
3822 `(("guile" ,guile-2.2)
3823 ,@(alist-delete "guile" (package-native-inputs guile-lens))))))
3824
69bb61f1 3825(define-public guile-xapian
d10e7a34
RW
3826 (package
3827 (name "guile-xapian")
3828 (version "0.1.0")
3829 (home-page "https://git.systemreboot.net/guile-xapian")
3830 (source
3831 (origin
3832 (method git-fetch)
3833 (uri (git-reference (url home-page)
3834 (commit (string-append "v" version))))
3835 (file-name (git-file-name name version))
3836 (sha256
3837 (base32
3838 "16k61f1jn3g48jaf3730b9l0izr5j933jzyri73nmcnjd09gm35i"))))
3839 (build-system gnu-build-system)
3840 (arguments
3841 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
3842 (inputs
93989aed 3843 `(("guile" ,guile-3.0)
d10e7a34
RW
3844 ("xapian" ,xapian)
3845 ("zlib" ,zlib)))
3846 (native-inputs
3847 `(("autoconf" ,autoconf)
3848 ("autoconf-archive" ,autoconf-archive)
3849 ("automake" ,automake)
3850 ("libtool" ,libtool)
3851 ("pkg-config" ,pkg-config)
3852 ("swig" ,swig)))
3853 (synopsis "Guile bindings for Xapian")
3854 (description "@code{guile-xapian} provides Guile bindings for Xapian, a
69bb61f1
AI
3855search engine library. Xapian is a highly adaptable toolkit which allows
3856developers to easily add advanced indexing and search facilities to their own
3857applications. It has built-in support for several families of weighting
3858models and also supports a rich set of boolean query operators.")
d10e7a34 3859 (license license:gpl2+)))
69bb61f1 3860
93989aed 3861(define-public guile2.2-xapian
69bb61f1
AI
3862 (package
3863 (inherit guile-xapian)
93989aed 3864 (name "guile2.2-xapian")
69bb61f1 3865 (inputs
93989aed 3866 `(("guile" ,guile-2.2)
69bb61f1 3867 ,@(alist-delete "guile" (package-inputs guile-xapian))))))
be789065 3868
93989aed
LC
3869(define-public guile3.0-xapian
3870 (deprecated-package "guile3.0-xapian" guile-xapian))
3871
be789065
AS
3872(define-public guile-torrent
3873 (package
3874 (name "guile-torrent")
3875 (version "0.1.3")
3876 (source (origin (method git-fetch)
3877 (uri (git-reference
3878 (url
8ed4c468 3879 "https://github.com/o-nly/torrent")
be789065
AS
3880 (commit version)))
3881 (file-name (git-file-name name version))
3882 (sha256
3883 (base32
3884 "1yiagi55ncq1x7s9n7salzywjm4l96y3n7y3s47a9anvz87mrmim"))))
3885 (build-system gnu-build-system)
3886 (native-inputs
3887 `(("autoconf" ,autoconf)
3888 ("automake" ,automake)
3889 ("guile" ,guile-2.2)
3890 ("texinfo" ,texinfo)
3891 ("perl" ,perl)
3892 ("pkg-config" ,pkg-config)))
3893 (propagated-inputs
3894 `(("guile-gcrypt" ,guile-gcrypt)))
3895 (home-page "https://github.com/o-nly/torrent")
3896 (synopsis "Torrent library for GNU Guile")
3897 (description "This package provides facilities for working with
3898@code{.torrent} or metainfo files. Implements a bencode reader and writer
3899according to Bitorrent BEP003.")
3900 (license license:gpl3+)))
3c0456c6
RW
3901
3902(define-public guile-irc
3903 (let ((commit "375d3bde9c6ae7ccc9d7cc65817966b6fda8f26a")
3904 (revision "0"))
3905 (package
3906 (name "guile-irc")
3907 (version (git-version "0.3.0" revision commit))
3908 (source (origin
3909 (method git-fetch)
3910 (uri (git-reference
b0e7b699 3911 (url "https://github.com/rekado/guile-irc")
3c0456c6
RW
3912 (commit commit)))
3913 (file-name (git-file-name name version))
3914 (sha256
3915 (base32
3916 "113lcckcywrz9060w1c3fnvr8d7crdsjgsv4h47hgmr1slgadl4y"))))
3917 (build-system gnu-build-system)
3918 (arguments
3919 `(#:configure-flags '("--enable-gnutls=yes")))
3920 (native-inputs
3921 `(("autoconf" ,autoconf)
3922 ("automake" ,automake)
3923 ("texinfo" ,texinfo)))
3924 (inputs
3925 `(("gnutls" ,gnutls)
b4412382 3926 ("guile" ,guile-3.0)))
3c0456c6
RW
3927 (home-page "https://github.com/rekado/guile-irc")
3928 (synopsis "IRC library for Guile")
3929 (description "This package provides a Guile library for @dfn{Internet
3930Relay Chat} (IRC).")
3931 ;; Some file headers incorrectly say LGPLv2+.
3932 (license license:lgpl2.1+))))
8ffc20ef 3933
b141e1d5 3934(define-public guile-websocket
8ffc20ef
ES
3935 (let ((commit "c854e0f84a40d972cbd532bbb89c97ca0126a7cf"))
3936 (package
b141e1d5 3937 (name "guile-websocket")
8ffc20ef
ES
3938 (version "0.1")
3939 (source
3940 (origin
3941 (method git-fetch)
3942 (uri (git-reference
3943 (url "git://dthompson.us/guile-websocket.git")
3944 (commit commit)))
3945 (file-name (git-file-name name version))
3946 (sha256
3947 (base32
3948 "1hymvsfrmq9qxr5cxnsgdz7y757yp1cpsgxmdp3f5wxxxpqgsmzx"))))
3949 (build-system gnu-build-system)
3950 (arguments
3951 '(#:make-flags
3952 '("GUILE_AUTO_COMPILE=0")
3953 #:phases
3954 (modify-phases %standard-phases
3955 ;; The package was developed for Guile 2.0 and has this version
3956 ;; hardcoded in the configure.ac and Makefile.am files. Substitute
3957 ;; 3.0 instead so it can support Guile 3.0.
3958 (add-after 'unpack 'update-guile-version
3959 (lambda _
3960 (substitute* "configure.ac"
3961 (("2.0.9") "3.0.0"))
3962 (substitute* "Makefile.am"
cea91813
LC
3963 (("2.0") "3.0")
3964
3965 ;; Install .go files where they belong.
3966 (("/ccache") "/site-ccache"))
8ffc20ef
ES
3967 #t)))))
3968 (native-inputs
3969 `(("autoconf" ,autoconf)
3970 ("automake" ,automake)))
3971 (inputs
b141e1d5 3972 `(("guile" ,guile-3.0)))
8ffc20ef
ES
3973 (synopsis "Websocket server/client for Guile")
3974 (description "Guile-websocket provides an implementation of the
3975WebSocket protocol as defined by RFC 6455.")
3976 (home-page "https://git.dthompson.us/guile-websocket.git")
3977 (license license:lgpl3+))))
b141e1d5
LC
3978
3979(define-public guile3.0-websocket
3980 (deprecated-package "guile3.0-websocket" guile-websocket))
c08f235b
JL
3981
3982(define-public guile-rdf
3983 (package
3984 (name "guile-rdf")
3985 (version "1.0")
3986 (source
3987 (origin
3988 (method git-fetch)
3989 (uri (git-reference
3990 (url "https://framagit.org/tyreunom/guile-rdf")
3991 (commit version)))
3992 (file-name (git-file-name name version))
3993 (sha256
3994 (base32
3995 "0dwn3app1fscbpmpgvjs5jy1y0gwy3j5gdx8br79af6a88zjlnqf"))))
3996 (build-system gnu-build-system)
3997 (arguments
3998 `(#:tests? #f)); tests require network
3999 (inputs
4000 `(("guile" ,guile-3.0)))
4001 (native-inputs
4002 `(("automake" ,automake)
4003 ("autoconf" ,autoconf)
4004 ("pkg-config" ,pkg-config)
4005 ("texinfo" ,texinfo)))
4006 (home-page "https://framagit.org/tyreunom/guile-rdf")
4007 (synopsis "Guile implementation of the RDF abstract and concrete syntaxes")
4008 (description "Guile RDF is an implementation of the RDF (Resource Description
4009Framework) format defined by the W3C for GNU Guile. RDF structures include
4010triples (facts with a subject, a predicate and an object), graphs which are
4011sets of triples, and datasets, which are collections of graphs.
4012
4013RDF specifications include the specification of concrete syntaxes and of
4014operations on graphs. This library implements some basic functionalities,
4015such as parsing and producing turtle and nquads syntax, as well as
4016manipulating graphs and datasets.")
4017 (license license:gpl3+)))
d1fa24af
JL
4018
4019(define-public guile-jsonld
4020 (package
4021 (name "guile-jsonld")
1bad456e 4022 (version "1.0.2")
d1fa24af
JL
4023 (source
4024 (origin
4025 (method git-fetch)
4026 (uri (git-reference
4027 (url "https://framagit.org/tyreunom/guile-jsonld")
4028 (commit version)))
4029 (file-name (git-file-name name version))
4030 (sha256
4031 (base32
1bad456e 4032 "1ryyvh71899z2inivqglb8d78zzp1sd0wv9a56kvcmrxf1966z6r"))))
d1fa24af
JL
4033 (build-system gnu-build-system)
4034 (arguments
4035 `(#:tests? #f)); require network
4036 (propagated-inputs
4037 `(("guile-gnutls" ,gnutls)
1bad456e 4038 ("guile-json" ,guile-json-4)
d1fa24af
JL
4039 ("guile-rdf" ,guile-rdf)))
4040 (inputs
4041 `(("guile" ,guile-3.0)))
4042 (native-inputs
4043 `(("automake" ,automake)
4044 ("autoconf" ,autoconf)
4045 ("pkg-config" ,pkg-config)
4046 ("texinfo" ,texinfo)))
4047 (home-page "https://framagit.org/tyreunom/guile-jsonld")
4048 (synopsis "Guile implementation of the JsonLD API specification")
4049 (description "Guile JsonLD is an implementation of the JsonLD (Json for
4050Linked Data) API defined by the W3C for GNU Guile. It allows you to express links
4051between data, in a way that is very similar to WikiData or RDF for instance.
4052An object can have relations (in the form of an IRI) that relates it to one or
4053more objects or strings, represented by a Json object or an IRI.")
4054 (license license:gpl3+)))
a684e6e2
MB
4055
4056(define-public guile-struct-pack
4057 (package
4058 (name "guile-struct-pack")
4059 (version "1.1.1")
4060 (source
4061 (origin
4062 (method git-fetch)
4063 (uri (git-reference
4064 (url "https://github.com/weinholt/struct-pack")
4065 (commit (string-append "v" version))))
4066 (file-name (git-file-name name version))
4067 (sha256
4068 (base32 "0hd72m821pahjphzyjn26i55542v8makr55xzjll2cycja4wsbc1"))))
4069 (build-system guile-build-system)
4070 (arguments
4071 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
4072 #:modules ((guix build guile-build-system)
4073 (guix build utils)
4074 (srfi srfi-26)
4075 (ice-9 ftw))
4076 #:phases (modify-phases %standard-phases
4077 (add-before 'build 'move-sls-files
4078 (lambda _
4079 ;; Move files under a struct/ directory to reflect the
4080 ;; module hierarchy.
4081 (define dst-folder "struct")
4082 (define (target file)
4083 (string-append dst-folder "/" file))
4084 (define files
4085 (scandir "." (negate (cut member <> '("." "..")))))
4086 (mkdir dst-folder)
4087 (for-each (lambda (file)
4088 (rename-file file (target file)))
4089 files)
4090 #t)))))
4091 (native-inputs
4092 `(("guile" ,guile-3.0)))
4093 (home-page "https://github.com/weinholt/struct-pack")
4094 (synopsis "R6RS library for working with packed byte structures")
4095 (description
4096 "This is an R6RS library for working with packed byte structures. It is
4097similar to struct in Python or pack and unpack in Perl.")
4098 (license license:expat)))
199da208
MB
4099
4100(define-public guile-machine-code
4101 (package
4102 (name "guile-machine-code")
4103 (version "2.1.0")
4104 (source
4105 (origin
4106 (method git-fetch)
4107 (uri (git-reference
4108 (url "https://github.com/weinholt/machine-code")
4109 (commit (string-append "v" version))))
4110 (file-name (git-file-name name version))
4111 (sha256
4112 (base32 "0wzj3caj2jypzyjqfkfqkvr3kkbjabsnhldv9kvnx9w9qnria5yd"))))
4113 (build-system guile-build-system)
4114 (arguments
4115 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
4116 #:modules ((guix build guile-build-system)
4117 (guix build utils)
4118 (srfi srfi-26)
4119 (ice-9 ftw))
4120 #:phases (modify-phases %standard-phases
4121 (add-before 'build 'move-sls-files
4122 (lambda _
4123 ;; Move files under a struct/ directory to reflect the
4124 ;; module hierarchy.
4125 (define dst-folder "machine-code")
4126 (define (target file)
4127 (string-append dst-folder "/" file))
4128 (define files
4129 (scandir "." (negate (cut member <> '("." "..")))))
4130 (mkdir dst-folder)
4131 (for-each (lambda (file)
4132 (rename-file file (target file)))
4133 files)
4134 #t)))))
4135 (native-inputs
4136 `(("guile" ,guile-3.0)))
4137 (propagated-inputs
4138 `(("guile-struct-pack" ,guile-struct-pack)))
4139 (home-page "https://github.com/weinholt/machine-code")
4140 (synopsis "Tools that relate to machine code and object formats")
4141 (description
4142 "This project is about the development of tools that relate to machine
4143code and object formats; for all architectures. Here you'll find libraries
4144for working with binary code: assembly, disassembly, instruction tables,
4145object formats and related areas.")
4146 (license license:expat)))
3826288f
MB
4147
4148(define-public guile-laesare
4149 (package
4150 (name "guile-laesare")
4151 (version "1.0.0")
4152 (source
4153 (origin
4154 (method git-fetch)
4155 (uri (git-reference
4156 (url "https://github.com/weinholt/laesare")
4157 (commit (string-append "v" version))))
4158 (file-name (git-file-name name version))
4159 (sha256
4160 (base32 "15q619gzw717r8r1ql23zfdaibpnp9qqs96032vdc3rj74msxc92"))))
4161 (build-system guile-build-system)
4162 (arguments
4163 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
4164 #:modules ((guix build guile-build-system)
4165 (guix build utils)
4166 (srfi srfi-26)
4167 (ice-9 ftw))
4168 #:phases (modify-phases %standard-phases
4169 (add-before 'build 'move-sls-files
4170 (lambda _
4171 ;; Move files under a laesare directory to reflect
4172 ;; the module hierarchy.
4173 (define dst-folder "laesare")
4174 (define (target file)
4175 (string-append dst-folder "/" file))
4176 (define files
4177 (scandir "." (negate (cut member <> '("." "..")))))
4178 (mkdir dst-folder)
4179 (for-each (lambda (file)
4180 (rename-file file (target file)))
4181 files)
4182 #t)))))
4183 (native-inputs
4184 `(("guile" ,guile-3.0)))
4185 (home-page "https://github.com/weinholt/laesare")
4186 (synopsis "R6RS Scheme library that provides a reader")
4187 (description
4188 "This is an R6RS Scheme library that provides a reader with some extra
4189features not found in the standard read procedure such as a compatible mode
4190with support for other RnRS standards and a tolerant mode that continues on
4191errors.")
4192 (license license:expat)))
465a951c
MO
4193
4194(define-public guile-avahi
d7f2b1e5
MO
4195 (let ((commit "6d43caf64f672a9694bf6c98bbf7a734f17a51e8")
4196 (revision "1"))
4197 (package
4198 (name "guile-avahi")
4199 (version (git-version "0.4.0" revision commit))
4200 (source (origin
4201 (method git-fetch)
4202 (uri (git-reference
4203 (url "git://git.sv.gnu.org/guile-avahi.git")
4204 (commit commit)))
4205 (file-name (git-file-name name version))
4206 (sha256
4207 (base32
4208 "0fvrf8x22yvc71180hd3xkhspg9yvadi0pbv8shzlsaxqncwy1m9"))
4209 (modules '((guix build utils)))))
4210 (build-system gnu-build-system)
4211 (arguments
4212 `(#:modules (((guix build guile-build-system)
4213 #:select (target-guile-effective-version))
4214 ,@%gnu-build-system-modules)
4215 #:imported-modules ((guix build guile-build-system)
4216 ,@%gnu-build-system-modules)
4217 #:make-flags
4218 '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
4219 #:phases
4220 (modify-phases %standard-phases
4221 (add-before 'check 'fix-guile-avahi-file-name
4222 (lambda* (#:key outputs #:allow-other-keys)
4223 (with-directory-excursion "src"
4224 (invoke "make" "install"
4225 "-j" (number->string
4226 (parallel-job-count))))
4227 (let* ((out (assoc-ref outputs "out"))
4228 (files (find-files "modules" ".scm")))
4229 (substitute* files
4230 (("\"guile-avahi-v-0\"")
4231 (format #f "\"~a/lib/guile/~a/extensions/guile-avahi-v-0\""
4232 out (target-guile-effective-version))))
4233 #t))))))
4234 (inputs
4235 `(("guile" ,guile-3.0)
4236 ("avahi" ,avahi)))
4237 (native-inputs
4238 `(("autoconf" ,autoconf)
4239 ("automake" ,automake)
4240 ("libtool" ,libtool)
d7f2b1e5
MO
4241 ("pkg-config" ,pkg-config)
4242 ("texinfo" ,texinfo)))
4243 (synopsis "Guile bindings to Avahi")
4244 (description
4245 "This package provides bindings for Avahi. It allows programmers to
4246use functionalities of the Avahi client library from Guile Scheme programs.
4247Avahi itself is an implementation of multicast DNS (mDNS) and DNS Service
465a951c 4248Discovery (DNS-SD).")
d7f2b1e5
MO
4249 (home-page "https://www.nongnu.org/guile-avahi/")
4250 (license license:lgpl3+))))
a8c1eaba 4251
4252(define-public guile-mkdir-p
4253 (package
4254 (name "guile-mkdir-p")
4255 (version "1.0.1")
4256 (source
4257 (origin
4258 (method git-fetch)
4259 (uri (git-reference
4260 (url "https://code.divoplade.fr/mkdir-p.git")
4261 (commit (string-append "v" version))))
4262 (sha256
4263 (base32 "01k20rjcv6p0spmw8ls776aar6bfw0jxw46d2n12w0cb2p79xjv8"))
4264 (file-name (git-file-name name version))
4265 (snippet
4266 `(begin
4267 (with-output-to-file ".tarball-version"
4268 (lambda _ (format #t "~a~%" ,version)))
4269 #t))))
4270 (build-system gnu-build-system)
4271 (arguments `())
4272 (native-inputs
4273 `(("guile" ,guile-3.0)
4274 ("texinfo" ,texinfo)
4275 ("autoconf" ,autoconf)
4276 ("autoconf-archive" ,autoconf-archive)
4277 ("automake" ,automake)
4278 ("pkg-config" ,pkg-config)
fccc0127 4279 ("gettext" ,gettext-minimal)))
a8c1eaba 4280 (inputs `(("guile" ,guile-3.0)))
4281 (synopsis "Implementation of a recursive @code{mkdir} for Guile")
4282 (description
4283 "This package provides within the @code{(mkdir-p)} module the
4284@code{mkdir-p} function that tries to create the chain of directories
4285recursively. It also provides new versions of @code{open-output-file},
4286@code{call-with-output-file} and @code{with-output-to-file} to create the
4287directory of its argument if it does not exist.")
4288 (home-page "https://mkdir-p.divoplade.fr")
4289 (license license:asl2.0)))
f53c1005 4290
01b59dea
RW
4291(define-public guile-jwt
4292 (package
4293 (name "guile-jwt")
4294 (version "0.2.0")
4295 (source
4296 (origin
4297 (method git-fetch)
4298 (uri (git-reference
4299 (url "https://github.com/aconchillo/guile-jwt")
4300 (commit version)))
4301 (file-name (git-file-name name version))
4302 (sha256
4303 (base32
4304 "1p8sapiv5im18rjnzc8xnw6y7dr661rycf9g10z5ww0dl4rfz3z1"))))
4305 (build-system gnu-build-system)
4306 (native-inputs
4307 `(("autoconf" ,autoconf)
4308 ("automake" ,automake)
4309 ("pkg-config" ,pkg-config)))
4310 (propagated-inputs
4311 `(("guile-json" ,guile-json-4)))
4312 (inputs
4313 `(("guile" ,guile-3.0)))
4314 (home-page "https://github.com/aconchillo/guile-jwt")
4315 (synopsis "JSON Web Token library for Guile")
4316 (description
4317 "guile-jwt is a JSON Web Token module for Guile. JSON Web Tokens are an
4318open, industry standard (RFC 7519) method for representing claims securely
4319between two parties. guile-jwt allows you to decode, verify and generate
4320JWT. Supported algorithms: HS256, HS384, HS512.")
4321 (license license:gpl3+)))
4322
f53c1005 4323(define-public guile-sodium
4324 (package
4325 (name "guile-sodium")
4326 (version "0.1.0")
4327 (source
4328 (origin
4329 (method git-fetch)
4330 (uri (git-reference
4331 (url "https://inqlab.net/git/guile-sodium.git")
4332 (commit (string-append "v" version))))
4333 (file-name (git-file-name name version))
4334 (sha256 (base32 "189jsj87hycs57a54x0b9lifwvhr63nypb9vfxdrq7rwrpcvi5f8"))))
4335 (build-system gnu-build-system)
4336 (arguments `())
4337 (native-inputs
4338 `(("autoconf" ,autoconf)
4339 ("automake" ,automake)
4340 ("pkg-config" ,pkg-config)
4341 ("texinfo" ,texinfo)))
4342 (inputs `(("guile" ,guile-3.0)))
4343 (propagated-inputs `(("libsodium" ,libsodium)))
4344 (synopsis "Guile bindings to the libsodium cryptographic library")
4345 (description
4346 "This package provides Guile bindings to the libsodium cryptographic library
4347which provides core cryptographic primitives needed to build higher-level
4348tools.")
4349 (home-page "https://inqlab.net/git/guile-sodium.git")
4350 (license license:gpl3+)))
208cb960 4351
4352(define-public guile-eris
4353 (package
4354 (name "guile-eris")
4355 (version "0.2.0")
4356 (source
4357 (origin
4358 (method git-fetch)
4359 (uri (git-reference
4360 (url "https://inqlab.net/git/eris.git")
4361 (commit (string-append "v" version))))
4362 (file-name (git-file-name name version))
4363 (sha256 (base32 "1ijglmwkdy1l87gj429qfjis0v8b1zlxhbyfhx5za8664h68nqka"))))
4364 (build-system gnu-build-system)
4365 (arguments '())
4366 (native-inputs
4367 `(("autoconf" ,autoconf)
4368 ("automake" ,automake)
4369 ("pkg-config" ,pkg-config)
4370 ("texinfo" ,texinfo)
4371 ;; test dependency
4372 ("guile-srfi-180" ,guile-srfi-180)))
4373 (inputs `(("guile" ,guile-3.0)))
4374 (propagated-inputs
4375 `(("guile-sodium" ,guile-sodium)))
4376 (synopsis "Guile implementation of the Encoding for Robust Immutable Storage (ERIS)")
4377 (description
4378 "Guile-ERIS is the reference implementation of the Encoding for Robust
4379Immutable Storage (ERIS). ERIS allows arbirtary content to be encoded into
4380uniformly sized, encrypted blocks that can be reassembled using a short
4381read-capability.")
4382 (home-page "https://inqlab.net/git/eris.git")
4383 (license license:gpl3+)))
67a60840
RW
4384
4385(define-public guile-r6rs-protobuf
4386 (package
4387 (name "guile-r6rs-protobuf")
4388 (version "0.9")
4389 (source
4390 (origin
4391 (method git-fetch)
4392 (uri (git-reference
4393 (url "https://gitlab.com/joolean/r6rs-protobuf")
4394 (commit (string-append "v" version))))
4395 (file-name (git-file-name name version))
4396 (sha256
4397 (base32
4398 "1xmn7jlr1xiqgd35klq910p1bnil1iwdvqxkjr3zzml3spy8p2aa"))))
4399 (build-system guile-build-system)
4400 (arguments
4401 `(#:compile-flags '("--r6rs")))
4402 (inputs
4403 `(("guile" ,guile-3.0)))
4404 (home-page "https://gitlab.com/joolean/r6rs-protobuf/")
4405 (synopsis "Scheme implementation of Protocol Buffers")
4406 (description
4407 "This project provides a pure Scheme implementation of Protocol Buffers,
4408including parsing and code generation.")
4409 (license license:gpl3+)))
e47a5711
RW
4410
4411(define-public guile-shapefile
4412 (package
4413 (name "guile-shapefile")
4414 (version "0.1.2")
4415 (source
4416 (origin
4417 (method git-fetch)
4418 (uri (git-reference
4419 (url "https://github.com/HugoNikanor/guile-shapefile")
4420 (commit (string-append "v" version))))
4421 (file-name (git-file-name name version))
4422 (sha256
4423 (base32
4424 "1zvrpc8bshw9w0vhdpmhv00j07mzsdyg2f9hfabr83v08zhfi8ml"))))
4425 (build-system guile-build-system)
4426 (arguments
4427 `(#:phases
4428 (modify-phases %standard-phases
4429 (add-after 'unpack 'delete-pre-generated-docs
4430 (lambda _
4431 (delete-file-recursively "docs")
4432 #t))
4433 (add-after 'install 'install-info-documentation
4434 (lambda* (#:key outputs #:allow-other-keys)
4435 (let* ((share (string-append (assoc-ref outputs "out") "/share"))
4436 (doc (string-append share "/doc/" ,name "-" ,version))
4437 (info (string-append share "/info/"))
4438 (makeinfo (string-append (assoc-ref %build-inputs "texinfo")
4439 "/bin/makeinfo")))
4440 (invoke makeinfo "guile-shapefile.texi" "-o" info)
4441 #t))))))
4442 (inputs
4443 `(("guile" ,guile-3.0)))
4444 (native-inputs
4445 `(("texinfo" ,texinfo)))
4446 (home-page "https://github.com/HugoNikanor/guile-shapefile")
4447 (synopsis "Parse shapefiles in Guile")
4448 (description
4449 "Guile Shapefile is a Guile library for reading shapefiles.")
4450 (license license:expat)))
0a40da60 4451
559feb66
RW
4452(define-public guile-libyaml
4453 (let ((commit "f5d33a6880e96571d3cb079ed7755ffc156cac46")
4454 (revision "1"))
4455 (package
4456 (name "guile-libyaml")
4457 (version (git-version "0" revision commit))
4458 (source
4459 (origin
4460 (method git-fetch)
4461 (uri (git-reference
4462 (url "https://github.com/mwette/guile-libyaml")
4463 (commit commit)))
4464 (file-name (git-file-name name version))
4465 (sha256
4466 (base32
4467 "12x91983fh1j39zy7kbk19acc1rqdh8515ddx1mh7l26j04k9wgq"))))
4468 (build-system gnu-build-system)
4469 (arguments
4470 `(#:modules (((guix build guile-build-system)
4471 #:prefix guile:)
4472 ,@%gnu-build-system-modules)
4473 #:imported-modules ((guix build guile-build-system)
4474 ,@%gnu-build-system-modules)
4475 #:tests? #false ; there are none
4476 #:phases
4477 (modify-phases %standard-phases
4478 (delete 'configure)
4479 (add-after 'unpack 'remove-unused-files
4480 (lambda* (#:key inputs #:allow-other-keys)
4481 (for-each delete-file
4482 '("guix.scm" "demo1.yml" "demo1.scm"
4483 "yaml/libyaml.scm"
4484 ;; This file is mismatched with the generated FFI code.
4485 "yaml/ffi-help-rt.scm"))
4486 (copy-file (string-append (assoc-ref inputs "nyacc")
4487 "/share/guile/site/3.0/system/ffi-help-rt.scm")
4488 "yaml/ffi-help-rt.scm")
4489 (substitute* "yaml/ffi-help-rt.scm"
4490 (("system ffi-help-rt") "yaml ffi-help-rt"))
4491 #true))
4492 (add-before 'build 'build-ffi
4493 (lambda* (#:key inputs #:allow-other-keys)
4494 (invoke "guild" "compile-ffi"
4495 "--no-exec" ; allow us to patch the generated file
4496 "yaml/libyaml.ffi")
4497 (substitute* "yaml/libyaml.scm"
4498 (("system ffi-help-rt") "yaml ffi-help-rt")
4499 (("dynamic-link \"libyaml\"")
4500 (format #false "dynamic-link \"~a/lib/libyaml\""
4501 (assoc-ref inputs "libyaml"))))
4502 #true))
4503 (replace 'build
4504 (assoc-ref guile:%standard-phases 'build))
4505 (delete 'install))))
4506 (inputs
4507 `(("guile" ,guile-3.0)
4508 ("libyaml" ,libyaml)))
4509 (propagated-inputs
4510 `(("guile-bytestructures" ,guile-bytestructures)))
4511 (native-inputs
4512 `(("nyacc" ,nyacc)))
4513 (home-page "https://github.com/mwette/guile-libyaml")
4514 (synopsis "Guile wrapper for libyaml")
4515 (description
4516 "This package provides a simple yaml module for Guile using the
4517ffi-helper from nyacc.")
4518 (license license:lgpl3+))))
4519
0a40da60
RW
4520(define-public schmutz
4521 (let ((commit "add24588c59552537b8f1316df99a0cdd62c221e")
4522 (revision "1"))
4523 (package
4524 (name "schmutz")
4525 (version (git-version "0" revision commit))
4526 (source (origin
4527 (method git-fetch)
4528 (uri (git-reference
4529 (url "https://github.com/arximboldi/schmutz")
4530 (commit commit)))
4531 (file-name (git-file-name name version))
4532 (sha256
4533 (base32
4534 "1z3n61sj62lnn15mandvyrpjzli07rp9r62ypvgg3a8bvh37yc89"))))
4535 (build-system cmake-build-system)
4536 (arguments `(#:tests? #f))
4537 (native-inputs
4538 `(("pkg-config" ,pkg-config)))
4539 (inputs
4540 `(("guile" ,guile-2.2)))
4541 (home-page "https://github.com/arximboldi/schmutz")
4542 (synopsis "Bind C++ code to Scheme")
4543 (description "Schmutz is a header-only library to declare Scheme bindings
4544for C++ code using a simple embedded DSL. Think of it as @code{Boost.Python}
4545or @code{LuaBind} but for Scheme.")
4546 (license license:boost1.0))))