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