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