gnu: Add cxxopts.
[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
CB
703(define-public guile-squee
704 (let ((commit "a85902a92bf6f58a1d35fd974a01ade163deda8d")
705 (revision "0"))
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
717 "0p1lpsp4kx57j3ai1dkxilm4ziavzzx8wbbc42m3hpziq0a7qz5z"))))
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
CB
847(define-public guile-prometheus
848 (let ((commit "cbc6e1b03512443a03d66414c426adb8470b5f2b")
849 (revision "0"))
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
860 "1k1qg4ia87w2ipnf8cpikdc67lxi5bmahkhgk2x0i9ibdyvqb7np"))
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)
866 ("automake" ,automake)))
867 (inputs
868 `(("guile" ,guile-3.0)))
869 (home-page "https://git.cbaines.net/guile/prometheus")
870 (synopsis "Prometheus client library for Guile")
871 (description
872 "This Guile library provides instrumentation code intended to be used
873with the Prometheus time series service. Counter, gauge and histogram metric
874types are supported.")
875 (license license:gpl3+))))
876
b6bee63b 877(define-public guile2.2-pfds
77c95ee6
RW
878 (package
879 (inherit guile-pfds)
b6bee63b
LC
880 (name "guile2.2-pfds")
881 (native-inputs `(("guile" ,guile-2.2)))
77c95ee6 882 (arguments
0dd1e277
RW
883 (substitute-keyword-arguments (package-arguments guile-pfds)
884 ((#:phases phases)
885 `(modify-phases ,phases
45231d17
MB
886 (delete 'work-around-guile-bug)
887 (add-after 'move-files-around 'sls->scm
888 (lambda _
889 ;; In Guile <= 2.2.4, there's no way to tell 'guild
890 ;; compile' to accept the ".sls" extension. So...
891 (for-each (lambda (file)
892 (rename-file file
893 (string-append
894 (string-drop-right file 4)
895 ".scm")))
896 (find-files "." "\\.sls$"))
897 #t))))))))
b6bee63b
LC
898
899(define-public guile3.0-pfds
900 (deprecated-package "guile3.0-pfds" guile-pfds))
77c95ee6 901
0791437f
RW
902(define-public guile-aa-tree
903 (package
904 (name "guile-aa-tree")
905 (version "3.1.1")
906 (source (origin
907 (method url-fetch)
908 (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
909 version ".tar.gz"))
910 (sha256
911 (base32
912 "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
913 (build-system guile-build-system)
914 (native-inputs `(("guile" ,guile-2.2)))
915 ;; https://savannah.nongnu.org/projects/guile-aa-tree
916 (home-page "https://qlfiles.net/guile-aa-tree/")
917 (synopsis "AA tree data structure for Guile")
918 (description
919 "This package provides an implementation of @dfn{AA trees}, a
920self-balancing binary tree data structure, for Guile. It ensure @math{O(log
921n)} worst case performance for core operations. The module provides
922non-mutating insert, delete, and search operations, with support for
923convenient nested tree operations.")
924 (license license:gpl3+)))
925
926(define-public guile-simple-zmq
927 (let ((commit "68bedb6679716214fb9d3472da57544526f7a618")
928 (revision "3"))
929 (package
930 (name "guile-simple-zmq")
931 (version (git-version "0.0.0" revision commit))
932 (source
933 (origin
934 (method git-fetch)
935 (uri (git-reference
936 (url "https://github.com/jerry40/guile-simple-zmq")
937 (commit commit)))
938 (sha256
939 (base32
940 "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli"))
941 (file-name (git-file-name name version))))
942 (build-system guile-build-system)
943 (arguments
944 `(#:source-directory "src"
945 #:phases (modify-phases %standard-phases
946 (add-after 'unpack 'set-libzmq-file-name
947 (lambda* (#:key inputs #:allow-other-keys)
948 (substitute* "src/simple-zmq.scm"
949 (("\\(dynamic-link \"libzmq\"\\)")
950 (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
951 (assoc-ref inputs "zeromq"))))
952 #t)))))
953 (native-inputs
b6bee63b 954 `(("guile" ,guile-3.0)))
0791437f
RW
955 (inputs
956 `(("zeromq" ,zeromq)))
957 (home-page "https://github.com/jerry40/guile-simple-zmq")
958 (synopsis "Guile wrapper over ZeroMQ library")
959 (description
960 "This package provides a Guile programming interface to the ZeroMQ
961messaging library.")
962 (license license:gpl3+))))
963
b6bee63b 964(define-public guile2.2-simple-zmq
015bb1c8
LC
965 (package
966 (inherit guile-simple-zmq)
b6bee63b
LC
967 (name "guile2.2-simple-zmq")
968 (native-inputs `(("guile" ,guile-2.2)))))
969
970(define-public guile3.0-simple-zmq
971 (deprecated-package "guile3.0-simple-zmq" guile-simple-zmq))
015bb1c8 972
0791437f 973(define-public jupyter-guile-kernel
c984b70c
JG
974 (let ((commit "f25fb90b95529b17a006a807bd04e6aee12ea304")
975 (revision "2"))
0791437f
RW
976 (package
977 (name "jupyter-guile-kernel")
978 (version (git-version "0.0.0" revision commit))
979 (source
980 (origin
981 (method git-fetch)
982 (uri (git-reference
983 (url "https://github.com/jerry40/guile-kernel")
984 (commit commit)))
f1d4d79f 985 (file-name (git-file-name name version))
0791437f
RW
986 (sha256
987 (base32
c984b70c 988 "0zr1fasdb2yv9kn21yll993y9higqss4jnfs030ndhjb93raa9sr"))))
0791437f
RW
989 (build-system guile-build-system)
990 (arguments
991 '(#:phases (modify-phases %standard-phases
992 (add-after 'unpack 'set-openssl-file-name
993 (lambda* (#:key inputs #:allow-other-keys)
994 ;; Record the absolute file name of the 'openssl'
995 ;; command.
996 (substitute* "src/hmac.scm"
997 (("openssl")
998 (string-append (assoc-ref inputs "openssl")
999 "/bin/openssl")))
1000 #t))
1001
1002 ;; XXX: The code uses 'include' to include its own source
1003 ;; files, and "-L src" isn't enough in this case.
1004 (add-before 'build 'chdir
1005 (lambda _ (chdir "src") #t))
1006 (add-after 'build 'chdir-back
1007 (lambda _ (chdir "..") #t))
1008
1009 (add-after 'install 'install-kernel
1010 (lambda* (#:key inputs outputs #:allow-other-keys)
1011 (let* ((out (assoc-ref outputs "out"))
1012 (json (assoc-ref inputs "guile-json"))
1013 (zmq (assoc-ref inputs "guile-simple-zmq"))
1014 (deps (list json zmq))
1015 (dir (string-append
1016 out "/share/jupyter/kernels/guile"))
1017 (effective (target-guile-effective-version)))
1018 ;; Install kernel.
1019 (install-file "src/kernel.json" dir)
1020
1021 ;; Fix hard-coded file name in the kernel.
1022 (substitute* (string-append dir "/kernel.json")
c984b70c 1023 (("/usr/local/.*/guile-jupyter-kernel.scm")
0791437f
RW
1024 (string-append out "/share/guile/site/"
1025 (target-guile-effective-version)
1026 "/guile-jupyter-kernel.scm"))
1027 (("\"guile\"")
1028 (string-append "\"" (assoc-ref inputs "guile")
1029 "/bin/guile\""))
1030 (("-s")
1031 ;; Add '-L' and '-C' flags so that the kernel
1032 ;; finds its dependencies.
1033 (let ((-L (map (lambda (item)
1034 (string-append "\"" item
1035 "/share/guile/site/"
1036 effective "\""))
1037 deps))
1038 (-C (map (lambda (item)
1039 (string-append "\"" item
1040 "/lib/guile/"
1041 effective
1042 "/site-ccache\""))
1043 deps)))
c984b70c
JG
1044 (string-append "--no-auto-compile\""
1045 (string-join -L ", \"-L\", "
1046 'prefix)
1047 (string-join -C ", \"-C\", "
1048 'prefix)
1049 ", \"-s"))))
0791437f
RW
1050 #t))))))
1051 (inputs
1052 `(("openssl" ,openssl)
c984b70c
JG
1053 ("guile" ,guile-3.0)
1054 ("guile-json" ,guile-json-3)
0791437f
RW
1055 ("guile-simple-zmq" ,guile-simple-zmq)))
1056 (synopsis "Guile kernel for the Jupyter Notebook")
1057 (description
1058 "This package provides a Guile 2.x kernel for the Jupyter Notebook. It
1059allows users to interact with the Guile REPL through Jupyter.")
1060 (home-page "https://github.com/jerry40/guile-kernel")
1061 (license license:gpl3+))))
1062
1063(define-public guile-sparql
1064 (package
1065 (name "guile-sparql")
1066 (version "0.0.7")
1067 (source (origin
1068 (method url-fetch)
1069 (uri (string-append
1070 "https://github.com/roelj/guile-sparql/releases/download/"
1071 version "/guile-sparql-" version ".tar.gz"))
1072 (sha256
1073 (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd"))))
1074 (build-system gnu-build-system)
1075 (arguments `(#:tests? #f)) ; There are no tests.
1076 (native-inputs
1077 `(("pkg-config" ,pkg-config)))
1078 (inputs
1079 `(("guile" ,guile-2.2)))
1080 (home-page "https://github.com/roelj/guile-sparql")
1081 (synopsis "SPARQL module for Guile")
1082 (description "This package provides the functionality to query a SPARQL
1083endpoint. Additionally, it provides an interface to write SPARQL queries
1084using S-expressions.")
1085 (license license:gpl3+)))
1086
1087(define-public guile-debbugs
1088 (package
1089 (name "guile-debbugs")
5144f542 1090 (version "0.0.3")
0791437f
RW
1091 (source (origin
1092 (method url-fetch)
1093 (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
1094 version ".tar.gz"))
1095 (sha256
1096 (base32
5144f542 1097 "1cc63nw3xdfjrfk8c58r6d5lidmfq5cpqcy32yd5xp81yccprvn9"))))
0791437f 1098 (build-system gnu-build-system)
5144f542
RW
1099 (propagated-inputs
1100 `(("guile-email" ,guile-email)))
0791437f 1101 (native-inputs
cd23eb06 1102 `(("guile" ,guile-3.0)
0791437f
RW
1103 ("pkg-config" ,pkg-config)))
1104 (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
1105 (synopsis "Guile interface to the Debbugs bug tracking service")
1106 (description
1107 "This package provides a Guile library to communicate with a Debbugs bug
1108tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
1109 (license license:gpl3+)))
1110
1111(define-public guile-email
50771f5b
AI
1112 (package
1113 (name "guile-email")
223cb7c6 1114 (version "0.2.2")
50771f5b
AI
1115 (source
1116 (origin
1117 (method url-fetch)
1118 (uri (string-append
db18d87a
AI
1119 "https://guile-email.systemreboot.net/releases/guile-email-"
1120 version ".tar.lz"))
50771f5b
AI
1121 (sha256
1122 (base32
223cb7c6 1123 "1rc8r0fgvflnyq5ckl7ii8sghpsgpkzxa8vskjr1ak2kyar6m35k"))))
50771f5b
AI
1124 (build-system gnu-build-system)
1125 (native-inputs
1126 `(("pkg-config" ,pkg-config)
db18d87a 1127 ("lzip" ,lzip)))
50771f5b 1128 (inputs
ca6c1509 1129 `(("guile" ,guile-3.0)))
db18d87a 1130 (arguments
2c33a849 1131 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
db18d87a 1132 (home-page "https://guile-email.systemreboot.net")
50771f5b 1133 (synopsis "Guile email parser")
db18d87a
AI
1134 (description "guile-email is a collection of email utilities implemented
1135in pure guile. It supports parsing MIME (Multipurpose Internet Mail
1136Extensions) compliant email messages and reading emails from the mbox
1137format.")
50771f5b 1138 (license license:agpl3+)))
0791437f 1139
ca6c1509 1140(define-public guile2.2-email
63a847cb
CB
1141 (package
1142 (inherit guile-email)
ca6c1509
LC
1143 (name "guile2.2-email")
1144 (inputs `(("guile" ,guile-2.2)
63a847cb
CB
1145 ,@(alist-delete "guile" (package-inputs guile-email))))))
1146
ca6c1509
LC
1147(define-public guile3.0-email
1148 (deprecated-package "guile3.0-email" guile-email))
1149
0791437f 1150(define-public guile-newt
442a11f6
MO
1151 (package
1152 (name "guile-newt")
f52c1f5f 1153 (version "0.0.2")
442a11f6
MO
1154 (source (origin
1155 (method git-fetch)
1156 (uri (git-reference
1157 (url "https://gitlab.com/mothacehe/guile-newt")
1158 (commit version)))
1159 (file-name (git-file-name name version))
1160 (sha256
1161 (base32
f52c1f5f 1162 "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09"))))
442a11f6
MO
1163 (build-system gnu-build-system)
1164 (arguments
1165 '(#:make-flags
1166 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1167 (inputs
b6bee63b 1168 `(("guile" ,guile-3.0)
442a11f6
MO
1169 ("newt" ,newt)))
1170 (native-inputs
1171 `(("autoconf" ,autoconf)
1172 ("automake" ,automake)
1173 ("pkg-config" ,pkg-config)))
1174 (synopsis "Guile bindings to Newt")
1175 (description
1176 "This package provides bindings for Newt, a programming library for
0791437f
RW
1177color text mode, widget based user interfaces. The bindings are written in pure
1178Scheme by using Guile’s foreign function interface.")
442a11f6
MO
1179 (home-page "https://gitlab.com/mothacehe/guile-newt")
1180 (license license:gpl3+)))
0791437f 1181
b6bee63b 1182(define-public guile2.2-newt
e7fc7746
LC
1183 (package
1184 (inherit guile-newt)
b6bee63b 1185 (name "guile2.2-newt")
318e1a93 1186 (inputs `(("guile" ,guile-2.2)
e7fc7746
LC
1187 ,@(alist-delete "guile" (package-inputs guile-newt))))))
1188
b6bee63b
LC
1189(define-public guile3.0-newt
1190 (deprecated-package "guile3.0-newt" guile-newt))
1191
0791437f
RW
1192(define-public guile-mastodon
1193 (package
1194 (name "guile-mastodon")
1195 (version "0.0.1")
1196 (source (origin
1197 (method git-fetch)
1198 (uri (git-reference
1199 (url "https://framagit.org/prouby/guile-mastodon.git")
1200 (commit (string-append "v" version))))
1201 (file-name (git-file-name name version))
1202 (sha256
1203 (base32
1204 "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
1205 (build-system gnu-build-system)
1206 (native-inputs
1207 `(("autoconf" ,autoconf)
1208 ("automake" ,automake)
1209 ("pkg-config" ,pkg-config)))
1210 (inputs
1211 `(("guile" ,guile-2.2)
1212 ("gnutls" ,gnutls)
91f55717 1213 ("guile-json" ,guile-json-1)))
0791437f
RW
1214 (home-page "https://framagit.org/prouby/guile-mastodon")
1215 (synopsis "Guile Mastodon REST API module")
1216 (description "This package provides Guile modules to access the
1217@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
1218microblogging service.")
1219 (license license:gpl3+)))
1220
0791437f 1221(define-public guile-parted
dbcd503c
MO
1222 (package
1223 (name "guile-parted")
575032c8 1224 (version "0.0.4")
dbcd503c
MO
1225 (source (origin
1226 (method git-fetch)
1227 (uri (git-reference
1228 (url "https://gitlab.com/mothacehe/guile-parted")
1229 (commit version)))
1230 (file-name (git-file-name name version))
1231 (sha256
1232 (base32
575032c8 1233 "0b7h8psfm9gmmwb65pp5zwzglvwnfmw5j40g09hhf3f7kwxc0mv2"))
f6145358 1234 (modules '((guix build utils)))))
dbcd503c
MO
1235 (build-system gnu-build-system)
1236 (arguments
1237 '(#:make-flags
1238 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1239 (inputs
b6bee63b 1240 `(("guile" ,guile-3.0)
dbcd503c
MO
1241 ("parted" ,parted)))
1242 (propagated-inputs
1243 `(("guile-bytestructures" ,guile-bytestructures)))
1244 (native-inputs
1245 `(("autoconf" ,autoconf)
1246 ("automake" ,automake)
1247 ("pkg-config" ,pkg-config)))
1248 (synopsis "Guile bindings to GNU Parted")
1249 (description
1250 "This package provides bindings for GNU Parted library, a C library
1251allowing disk partition tables creation and manipulation. The bindings are
0791437f 1252written in pure Scheme by using Guile's foreign function interface.")
dbcd503c
MO
1253 (home-page "https://gitlab.com/mothacehe/guile-parted")
1254 (license license:gpl3+)))
0791437f 1255
b6bee63b 1256(define-public guile2.2-parted
e5b95558
LC
1257 (package
1258 (inherit guile-parted)
b6bee63b 1259 (name "guile2.2-parted")
318e1a93 1260 (inputs `(("guile" ,guile-2.2)
e5b95558
LC
1261 ,@(alist-delete "guile" (package-inputs guile-parted))))
1262 (propagated-inputs
b6bee63b
LC
1263 `(("guile-bytestructures" ,guile2.2-bytestructures)))))
1264
1265(define-public guile3.0-parted
1266 (deprecated-package "guile3.0-parted" guile-parted))
e5b95558 1267
0791437f
RW
1268(define-public guile-xosd
1269 (package
1270 (name "guile-xosd")
1271 (version "0.2.1")
1272 (source (origin
1273 (method url-fetch)
1274 (uri (string-append "https://github.com/alezost/" name
1275 "/releases/download/v" version
1276 "/" name "-" version ".tar.gz"))
1277 (sha256
1278 (base32
1279 "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p"))))
1280 (build-system gnu-build-system)
1281 (native-inputs
1282 `(("pkg-config" ,pkg-config)))
1283 (inputs
1284 `(("guile" ,guile-2.2)
1285 ("libx11" ,libx11)
1286 ("libxext" ,libxext)
1287 ("libxinerama" ,libxinerama)
1288 ("xosd" ,xosd)))
1289 (home-page "https://github.com/alezost/guile-xosd")
1290 (synopsis "XOSD bindings for Guile")
1291 (description
1292 "Guile-XOSD provides Guile bindings for @code{libxosd},
1293@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display
1294library}.")
1295 (license license:gpl3+)))
1296
1297(define-public guile-dbi
1298 (package
1299 (name "guile-dbi")
1300 (version "2.1.6")
1301 (source (origin
1302 (method url-fetch)
1303 (uri (string-append
1304 "http://download.gna.org/guile-dbi/guile-dbi-"
1305 version ".tar.gz"))
1306 (sha256
1307 (base32
1308 "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n"))))
1309 (build-system gnu-build-system)
1310 (arguments
1311 '(#:configure-flags
1312 (list (string-append
1313 "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
1314 #:make-flags
406ef442
CB
1315 (list (string-append
1316 "LDFLAGS=-Wl,-rpath=" %output "/lib:"
1317 (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib" ":"
1318 (assoc-ref %build-inputs "guile-dbd-postgresql") "/lib"))
0791437f
RW
1319 #:phases
1320 (modify-phases %standard-phases
1321 (add-after 'install 'patch-extension-path
1322 (lambda* (#:key outputs #:allow-other-keys)
1323 (let* ((out (assoc-ref outputs "out"))
1324 (dbi.scm (string-append
1325 out "/share/guile/site/2.2/dbi/dbi.scm"))
1326 (ext (string-append out "/lib/libguile-dbi")))
1327 (substitute* dbi.scm (("libguile-dbi") ext))
1328 #t))))))
1329 (inputs
406ef442
CB
1330 `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3)
1331 ("guile-dbd-postgresql" ,guile-dbd-postgresql))) ; only shared library, no scheme files
0791437f
RW
1332 (propagated-inputs
1333 `(("guile" ,guile-2.2)))
1334 (synopsis "Guile database abstraction layer")
1335 (home-page "http://home.gna.org/guile-dbi/guile-dbi.html")
1336 (description
1337 "guile-dbi is a library for Guile that provides a convenient interface to
1338SQL databases. Database programming with guile-dbi is generic in that the same
1339programming interface is presented regardless of which database system is used.
1340It currently supports MySQL, Postgres and SQLite3.")
1341 (license license:gpl2+)))
1342
1343(define guile-dbi-bootstrap
1344 (package
1345 (inherit guile-dbi)
1346 (name "guile-dbi-bootstrap")
1347 (inputs '())
1348 (arguments
1349 (substitute-keyword-arguments (package-arguments guile-dbi)
1350 ((#:make-flags _) '(list))))))
1351
1352(define-public guile-dbd-sqlite3
1353 (package
1354 (name "guile-dbd-sqlite3")
1355 (version "2.1.6")
1356 (source (origin
1357 (method url-fetch)
1358 (uri (string-append
1359 "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-"
1360 version ".tar.gz"))
1361 (sha256
1362 (base32
1363 "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
1364 (build-system gnu-build-system)
1365 (native-inputs
1366 `(("pkg-config" ,pkg-config)
1367 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
1368 (inputs
1369 `(("sqlite" ,sqlite)
1370 ("zlib" ,(@ (gnu packages compression) zlib))))
1371 (synopsis "Guile DBI driver for SQLite")
1372 (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
1373 (description
1374 "guile-dbi is a library for Guile that provides a convenient interface to
1375SQL databases. This package implements the interface for SQLite.")
1376 (license license:gpl2+)))
1377
406ef442
CB
1378(define-public guile-dbd-postgresql
1379 (let ((commit "e97589b6b018b206c901e4cc24db463407a4036b")
1380 (revision 0))
1381 (package
1382 (name "guile-dbd-postgresql")
1383 (version (string-append
1384 "2.1.6-" (number->string revision) "." (string-take commit 7)))
1385 (source
1386 (origin
1387 (method git-fetch)
1388 (uri (git-reference
b0e7b699 1389 (url "https://github.com/opencog/guile-dbi")
406ef442
CB
1390 (commit commit)))
1391 (file-name (git-file-name name version))
1392 (sha256
1393 (base32 "0n1gv9a0kdys10a4qmnrwvg5sydwb03880asri4gqdchcj3fimni"))))
1394 (build-system gnu-build-system)
1395 (arguments
1396 '(#:phases
1397 (modify-phases %standard-phases
1398 (add-after 'unpack 'chdir
1399 (lambda _
1400 ;; The upstream Git repository contains all the code, so change
1401 ;; to the relevant directory.
1402 (chdir "guile-dbd-postgresql")
1403 #t))
1404 (add-after 'chdir 'patch-src/Makefile.am
1405 (lambda* (#:key inputs #:allow-other-keys)
1406 (substitute* "src/Makefile.am"
1407 (("/usr/include")
1408 (string-append (assoc-ref inputs "postgresql") "/include")))
1409 #t))
1410 (add-after 'patch-src/Makefile.am 'patch-src
1411 (lambda _
1412 (substitute* "src/guile-dbd-postgresql.c"
1413 (("postgresql/libpq-fe\\.h") "libpq-fe.h"))
1414 #t)))))
1415 (native-inputs
1416 `(("pkg-config" ,pkg-config)
1417 ("automake" ,automake)
1418 ("autoconf" ,autoconf)
1419 ("perl" ,perl)
1420 ("libtool" ,libtool)
1421 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap)))
1422 (inputs
1423 `(("postgresql" ,postgresql)
1424 ("zlib" ,zlib)))
1425 (synopsis "Guile DBI driver for PostgreSQL")
1426 (home-page
1427 "https://github.com/opencog/guile-dbi/tree/master/guile-dbd-postgresql")
1428 (description
1429 "@code{guile-dbi} is a library for Guile that provides a convenient
1430interface to SQL databases. This package implements the interface for
1431PostgreSQL.")
1432 (license license:gpl2+))))
1433
0791437f
RW
1434(define-public guile-config
1435 (package
1436 (name "guile-config")
aed0d0fd 1437 (version "0.4.2")
0791437f
RW
1438 (source
1439 (origin
1440 (method git-fetch)
1441 (uri (git-reference
1442 (url "https://gitlab.com/a-sassmannshausen/guile-config")
529d1d96 1443 (commit version)))
91e29547
AS
1444 (file-name (git-file-name name version))
1445 (sha256 (base32
aed0d0fd 1446 "09028ylbddjdp3d67zdjz3pnsjqz6zs2bfck5rr3dfaa0qjap40n"))))
0791437f
RW
1447 (build-system gnu-build-system)
1448 (native-inputs
1449 `(("autoconf" ,autoconf)
1450 ("automake" ,automake)
1451 ("pkg-config" ,pkg-config)
1452 ("texinfo" ,texinfo)))
b6bee63b 1453 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
1454 (synopsis
1455 "Guile application configuration parsing library.")
1456 (description
1457 "Guile Config is a library providing a declarative approach to
1458application configuration specification. The library provides clean
1459configuration declaration forms, and processors that take care of:
1460configuration file creation; configuration file parsing; command-line
1461parameter parsing using getopt-long; basic GNU command-line parameter
1462generation (--help, --usage, --version); automatic output generation for the
1463above command-line parameters.")
1464 (home-page
1465 "https://gitlab.com/a-sassmannshausen/guile-config")
1466 (license license:gpl3+)))
1467
b6bee63b 1468(define-public guile2.2-config
0ac6b836
AS
1469 (package
1470 (inherit guile-config)
b6bee63b
LC
1471 (name "guile2.2-config")
1472 (inputs `(("guile" ,guile-2.2)
0ac6b836
AS
1473 ,@(alist-delete "guile" (package-inputs guile-config))))))
1474
b6bee63b
LC
1475(define-public guile3.0-config
1476 (deprecated-package "guile3.0-config" guile-config))
1477
0791437f
RW
1478(define-public guile-hall
1479 (package
1480 (name "guile-hall")
63fe1dc0 1481 (version "0.3.1")
0791437f 1482 (source
feb11b08
RW
1483 (origin
1484 (method git-fetch)
1485 (uri (git-reference
1486 (url "https://gitlab.com/a-sassmannshausen/guile-hall")
a3dfe052 1487 (commit version)))
63fe1dc0 1488 (file-name "guile-hall-0.3.1-checkout")
a3dfe052 1489 (sha256
63fe1dc0 1490 (base32 "1s24nigdra6rvclvy15l2aw00c3aq9vv8qwxylzs60darbl36206"))))
0791437f
RW
1491 (build-system gnu-build-system)
1492 (arguments
63bf0afd
AS
1493 `(#:modules
1494 ((ice-9 match)
1495 (ice-9 ftw)
1496 ,@%gnu-build-system-modules)
1497 #:phases
1498 (modify-phases
1499 %standard-phases
1500 (add-after 'install 'hall-wrap-binaries
1501 (lambda* (#:key inputs outputs #:allow-other-keys)
1502 (let* ((compiled-dir
1503 (lambda (out version)
1504 (string-append
1505 out "/lib/guile/" version "/site-ccache")))
1506 (uncompiled-dir
1507 (lambda (out version)
1508 (string-append
1509 out "/share/guile/site"
1510 (if (string-null? version) "" "/") version)))
1511 (dep-path
1512 (lambda (env modules path)
1513 (list env ":" 'prefix
1514 (cons modules
1515 (map (lambda (input)
1516 (string-append
1517 (assoc-ref inputs input)
1518 path))
1519 ,''("guile-config"))))))
1520 (out (assoc-ref outputs "out"))
1521 (bin (string-append out "/bin/"))
1522 (site (uncompiled-dir out "")))
1523 (match (scandir site)
1524 (("." ".." version)
1525 (for-each
1526 (lambda (file)
1527 (wrap-program
1528 (string-append bin file)
1529 (dep-path
1530 "GUILE_LOAD_PATH"
1531 (uncompiled-dir out version)
1532 (uncompiled-dir "" version))
1533 (dep-path
1534 "GUILE_LOAD_COMPILED_PATH"
1535 (compiled-dir out version)
1536 (compiled-dir "" version))))
1537 ,''("hall"))
1538 #t))))))))
0791437f 1539 (native-inputs
63bf0afd
AS
1540 `(("autoconf" ,autoconf)
1541 ("automake" ,automake)
1542 ("pkg-config" ,pkg-config)
1543 ("texinfo" ,texinfo)))
b6bee63b 1544 (inputs `(("guile" ,guile-3.0)))
0791437f 1545 (propagated-inputs
3c3e6620 1546 `(("guile-config" ,guile-config)))
0791437f
RW
1547 (synopsis "Guile project tooling")
1548 (description
3c3e6620
RW
1549 "Hall is a command-line application and a set of Guile libraries that
1550allow you to quickly create and publish Guile projects. It allows you to
1551transparently support the GNU build system, manage a project hierarchy &
1552provides tight coupling to Guix.")
1553 (home-page "https://gitlab.com/a-sassmannshausen/guile-hall")
06085fac 1554 (license license:gpl3+)))
0791437f 1555
b6bee63b 1556(define-public guile2.2-hall
df18ea6f
AS
1557 (package
1558 (inherit guile-hall)
b6bee63b
LC
1559 (name "guile2.2-hall")
1560 (inputs `(("guile" ,guile-2.2)
df18ea6f
AS
1561 ,@(alist-delete "guile" (package-inputs guile-hall))))
1562 (propagated-inputs
b6bee63b 1563 `(("guile-config" ,guile2.2-config)
df18ea6f
AS
1564 ,@(alist-delete "guile-config"
1565 (package-propagated-inputs guile-hall))))))
1566
b6bee63b
LC
1567(define-public guile3.0-hall
1568 (deprecated-package "guile3.0-hall" guile-hall))
1569
0791437f
RW
1570(define-public guile-ics
1571 (package
1572 (name "guile-ics")
1573 (version "0.2.0")
1574 (source (origin
1575 (method git-fetch)
1576 (uri (git-reference
1577 (url "https://github.com/artyom-poptsov/guile-ics")
1578 (commit (string-append "v" version))))
1579 (file-name (string-append name "-" version "-checkout"))
1580 (sha256
1581 (base32
6713589d
LC
1582 "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))
1583 (modules '((guix build utils)))
1584 (snippet
1585 '(begin
1586 ;; Allow builds with Guile 3.0.
1587 (substitute* "configure.ac"
1588 (("^GUILE_PKG.*")
1589 "GUILE_PKG([3.0 2.2 2.0])\n"))
1590 #t))))
0791437f
RW
1591 (build-system gnu-build-system)
1592 (native-inputs
1593 `(("autoconf" ,autoconf-wrapper)
1594 ("automake" ,automake)
1595 ("texinfo" ,texinfo)
1596 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
1597 ("gettext" ,gettext-minimal)
1598 ("pkg-config" ,pkg-config)))
b6bee63b 1599 (inputs `(("guile" ,guile-3.0) ("which" ,which)))
0791437f
RW
1600 (propagated-inputs `(("guile-lib" ,guile-lib)))
1601 (home-page "https://github.com/artyom-poptsov/guile-ics")
1602 (synopsis "Guile parser library for the iCalendar format")
1603 (description
1604 "Guile-ICS is an iCalendar (RFC5545) format parser library written in
1605pure Scheme. The library can be used to read and write iCalendar data.
1606
1607The library is shipped with documentation in Info format and usage examples.")
1608 (license license:gpl3+)))
1609
b6bee63b 1610(define-public guile2.2-ics
6713589d
LC
1611 (package
1612 (inherit guile-ics)
b6bee63b
LC
1613 (name "guile2.2-ics")
1614 (inputs `(("guile" ,guile-2.2)
6713589d 1615 ,@(alist-delete "guile" (package-inputs guile-ics))))
b6bee63b
LC
1616 (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
1617
1618(define-public guile3.0-ics
1619 (deprecated-package "guile3.0-ics" guile-ics))
6713589d 1620
0791437f
RW
1621(define-public guile-wisp
1622 (package
1623 (name "guile-wisp")
8b030edf 1624 (version "1.0.3")
0791437f 1625 (source (origin
8b030edf
AB
1626 (method hg-fetch)
1627 (uri (hg-reference
1628 (url "https://hg.sr.ht/~arnebab/wisp")
1629 (changeset (string-append "v" version))))
1630 (file-name (git-file-name name version))
0791437f
RW
1631 (sha256
1632 (base32
8b030edf 1633 "10g97jz3ahpb5mg933ajsc3pa9jxlg14f42yf01qwx0dwq1b06d5"))))
0791437f
RW
1634 (build-system gnu-build-system)
1635 (arguments
1636 `(#:modules ((guix build gnu-build-system)
15218d4e 1637 ((guix build emacs-build-system) #:prefix emacs:)
0791437f 1638 (guix build utils)
15218d4e 1639 (guix build emacs-utils)
0791437f
RW
1640 (ice-9 rdelim)
1641 (ice-9 popen))
15218d4e
RW
1642 #:imported-modules (,@%gnu-build-system-modules
1643 (guix build emacs-build-system)
1644 (guix build emacs-utils))
0791437f
RW
1645 #:phases
1646 (modify-phases %standard-phases
8b030edf 1647 (replace 'bootstrap
b6bee63b 1648 (lambda _
8b030edf 1649 (invoke "autoreconf" "-vif")
b6bee63b 1650 #t))
0791437f
RW
1651 (add-before 'configure 'patch-/usr/bin/env
1652 (lambda _
1653 (substitute* "Makefile.in"
65610f73 1654 (("/usr/bin/env bash") (which "bash")))
0791437f
RW
1655 #t))
1656 ;; auto compilation breaks, but if we set HOME to /tmp,
1657 ;; that works ok
1658 (add-before 'check 'auto-compile-hacky-workaround
1659 (lambda _ (setenv "HOME" "/tmp") #t))
1660 (add-after 'install 'install-go-files
1661 (lambda* (#:key outputs inputs #:allow-other-keys)
1662 (let* ((out (assoc-ref outputs "out"))
1663 (effective (read-line
1664 (open-pipe* OPEN_READ
1665 "guile" "-c"
1666 "(display (effective-version))")))
1667 (module-dir (string-append out "/share/guile/site/"
1668 effective))
1669 (object-dir (string-append out "/lib/guile/" effective
1670 "/site-ccache"))
1671 (prefix (string-length module-dir)))
1672 ;; compile to the destination
1673 (for-each (lambda (file)
1674 (let* ((base (string-drop (string-drop-right file 4)
1675 prefix))
1676 (go (string-append object-dir base ".go")))
1677 (invoke "guild" "compile" "-L" module-dir
1678 file "-o" go)))
1679 (find-files module-dir "\\.scm$"))
15218d4e
RW
1680 #t)))
1681 (add-after 'install 'install-emacs-files
1682 (assoc-ref emacs:%standard-phases 'install))
1683 (add-after 'install-emacs-files 'compile-emacs-files
1684 (assoc-ref emacs:%standard-phases 'build))
1685 (add-after 'compile-emacs-files 'make-autoloads
1686 (assoc-ref emacs:%standard-phases 'make-autoloads)))))
17f90b67 1687 (home-page "https://www.draketo.de/english/wisp")
0791437f 1688 (inputs
b6bee63b 1689 `(("guile" ,guile-3.0)))
0791437f 1690 (native-inputs
8b030edf
AB
1691 `(("autoconf" ,autoconf)
1692 ("automake" ,automake)
1693 ("emacs" ,emacs-minimal)
15218d4e 1694 ("python" ,python)
0791437f
RW
1695 ("pkg-config" ,pkg-config)))
1696 (synopsis "Whitespace to lisp syntax for Guile")
1697 (description "Wisp is a syntax for Guile which provides a Python-like
1698whitespace-significant language. It may be easier on the eyes for some
1699users and in some situations.")
1700 (license license:gpl3+)))
1701
b6bee63b 1702(define-public guile2.2-wisp
b0b725ed
RW
1703 (package
1704 (inherit guile-wisp)
b6bee63b
LC
1705 (name "guile2.2-wisp")
1706 (inputs `(("guile" ,guile-2.2)))))
1707
1708(define-public guile3.0-wisp
1709 (deprecated-package "guile3.0-wisp" guile-wisp))
b0b725ed 1710
0791437f
RW
1711(define-public guile-sly
1712 (package
1713 (name "guile-sly")
1714 (version "0.1")
1715 (source (origin
1716 (method url-fetch)
1717 (uri (string-append "https://files.dthompson.us/sly/sly-"
1718 version ".tar.gz"))
1719 (sha256
1720 (base32
1721 "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
1722 (modules '((guix build utils)))
1723 (snippet
1724 '(begin
1725 (substitute* "configure"
1726 (("_guile_required_version=\"2.0.11\"")
1727 "_guile_required_version=\"2\"")
1728 (("ac_subst_vars='")
1729 "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
1730 (substitute* (find-files "." "Makefile.in")
1731 (("moddir = .*$")
1732 (string-append
1733 "moddir = "
1734 "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
1735 (("godir = .*$")
1736 (string-append
1737 "godir = "
1738 "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
1739 #t))))
1740 (build-system gnu-build-system)
1741 (arguments
1742 '(#:configure-flags
1743 (list (string-append "--with-libfreeimage-prefix="
1744 (assoc-ref %build-inputs "freeimage"))
1745 (string-append "--with-libgslcblas-prefix="
1746 (assoc-ref %build-inputs "gsl")))))
1747 (native-inputs
1748 `(("pkg-config" ,pkg-config)))
1749 (propagated-inputs
1750 `(("guile-sdl" ,guile-sdl)
1751 ("guile-opengl" ,guile-opengl)))
1752 (inputs
1753 `(("guile" ,guile-2.2)
1754 ("gsl" ,gsl)
1755 ("freeimage" ,freeimage)
1756 ("mesa" ,mesa)))
1757 (synopsis "2D/3D game engine for GNU Guile")
1758 (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly
1759features a functional reactive programming interface and live coding
1760capabilities.")
1761 (home-page "https://dthompson.us/projects/sly.html")
1762 (license license:gpl3+)))
1763
dfe277a5 1764(define-public g-golf
30d59b31
MR
1765 (let ((commit "84e894eb7945c3bcdf7f8d5135c1be3efa524c92")
1766 (revision "822"))
dfe277a5
VS
1767 (package
1768 (name "g-golf")
30d59b31
MR
1769 (version (git-version "0.1.0" revision commit))
1770 (source
1771 (origin
1772 (method git-fetch)
1773 (uri (git-reference
1774 (url "https://git.savannah.gnu.org/git/g-golf.git")
1775 (commit commit)))
1776 (file-name (git-file-name name version))
1777 (sha256
1778 (base32 "1pkcij65zy2lkip5yrfzj85nq17pp9mrf0d4sk6hpjqr4kd0bxd5"))))
dfe277a5
VS
1779 (build-system gnu-build-system)
1780 (native-inputs
1781 `(("autoconf" ,autoconf)
1782 ("automake" ,automake)
1783 ("texinfo" ,texinfo)
1784 ("gettext" ,gettext-minimal)
1785 ("libtool" ,libtool)
85fcceee
MR
1786 ("pkg-config" ,pkg-config)
1787 ("xorg-server" ,xorg-server)))
dfe277a5
VS
1788 (inputs
1789 `(("guile" ,guile-2.2)
85fcceee 1790 ("guile-lib" ,guile2.2-lib)
dfe277a5
VS
1791 ("clutter" ,clutter)
1792 ("gtk" ,gtk+)
1793 ("glib" ,glib)))
1794 (propagated-inputs
1795 `(("gobject-introspection" ,gobject-introspection)))
1796 (arguments
1797 `(#:phases
1798 (modify-phases %standard-phases
1799 (add-before 'configure 'tests-work-arounds
1800 (lambda* (#:key inputs #:allow-other-keys)
1801 ;; In build environment, There is no /dev/tty
1802 (substitute*
1803 "test-suite/tests/gobject.scm"
1804 (("/dev/tty") "/dev/null"))))
1805 (add-before 'configure 'substitute-libs
1806 (lambda* (#:key inputs outputs #:allow-other-keys)
1807 (let* ((get (lambda (key lib)
1808 (string-append (assoc-ref inputs key) "/lib/" lib)))
1809 (libgi (get "gobject-introspection" "libgirepository-1.0"))
1810 (libglib (get "glib" "libglib-2.0"))
1811 (libgobject (get "glib" "libgobject-2.0"))
1812 (libgdk (get "gtk" "libgdk-3")))
1813 (substitute* "configure"
1814 (("SITEDIR=\"\\$datadir/g-golf\"")
1815 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
1816 (("SITECCACHEDIR=\"\\$libdir/g-golf/")
1817 "SITECCACHEDIR=\"$libdir/"))
1818 (substitute* "g-golf/init.scm"
1819 (("libgirepository-1.0") libgi)
1820 (("libglib-2.0") libglib)
1821 (("libgdk-3") libgdk)
1822 (("libgobject-2.0") libgobject)
1823 (("\\(dynamic-link \"libg-golf\"\\)")
1824 (format #f "~s"
1825 `(dynamic-link
1826 (format #f "~alibg-golf"
1827 (if (getenv "GUILE_GGOLF_UNINSTALLED")
1828 ""
1829 ,(format #f "~a/lib/"
1830 (assoc-ref outputs "out"))))))))
1831 (setenv "GUILE_AUTO_COMPILE" "0")
1832 (setenv "GUILE_GGOLF_UNINSTALLED" "1")
85fcceee
MR
1833 #t)))
1834 (add-before 'check 'start-xorg-server
1835 (lambda* (#:key inputs #:allow-other-keys)
1836 ;; The test suite requires a running X server.
1837 (system (format #f "~a/bin/Xvfb :1 &"
1838 (assoc-ref inputs "xorg-server")))
1839 (setenv "DISPLAY" ":1")
1840 #t)))))
dfe277a5
VS
1841 (home-page "https://www.gnu.org/software/g-golf/")
1842 (synopsis "Guile bindings for GObject Introspection")
1843 (description
1844 "G-Golf (Gnome: (Guile Object Library for)) is a library for developing
1845modern applications in Guile Scheme. It comprises a direct binding to the
1846GObject Introspection API and higher-level functionality for importing Gnome
1847libraries and making GObject classes (and methods) available in Guile's
1848object-oriented programming system, GOOPS.")
1849 (license license:lgpl3+))))
1850
0791437f
RW
1851(define-public g-wrap
1852 (package
1853 (name "g-wrap")
1854 (version "1.9.15")
1855 (source (origin
1856 (method url-fetch)
1857 (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
1858 version ".tar.gz"))
1859 (sha256
1860 (base32
1861 "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
1862 (build-system gnu-build-system)
1863 (native-inputs
1864 `(("pkg-config" ,pkg-config)))
1865 (propagated-inputs
1866 `(("guile" ,guile-2.2)
1867 ("guile-lib" ,guile-lib)))
1868 (inputs
1869 `(("libffi" ,libffi)))
1870 (arguments
1871 `(#:configure-flags '("--disable-Werror")
1872 #:phases
1873 (modify-phases %standard-phases
1874 (add-before 'configure 'pre-configure
1875 (lambda* (#:key outputs #:allow-other-keys)
1876 (let ((out (assoc-ref outputs "out")))
1877 (substitute* (find-files "." "^Makefile.in$")
1878 (("guilemoduledir =.*guile/site" all)
1879 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
1880 #t))))))
1881 (synopsis "Generate C bindings for Guile")
1882 (description "G-Wrap is a tool and Guile library for generating function
1883wrappers for inter-language calls. It currently only supports generating Guile
1884wrappers for C functions. Given a definition of the types and prototypes for
1885a given C interface, G-Wrap will automatically generate the C code that
1886provides access to that interface and its types from the Scheme level.")
1887 (home-page "https://www.nongnu.org/g-wrap/index.html")
1888 (license license:lgpl2.1+)))
1889
1890(define-public guile-miniadapton
1891 (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
1892 (revision "1"))
1893 (package
1894 (name "guile-miniadapton")
1895 (version (string-append "0-" revision "." (string-take commit 9)))
1896 (source (origin
1897 (method git-fetch)
1898 (uri (git-reference
b0e7b699 1899 (url "https://github.com/fisherdj/miniAdapton")
0791437f
RW
1900 (commit commit)))
1901 (file-name (string-append name "-" version "-checkout"))
1902 (sha256
1903 (base32
1904 "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
1905 (build-system guile-build-system)
1906 (native-inputs
1907 `(("guile" ,guile-2.2)))
1908 (home-page "https://github.com/fisherdj/miniAdapton")
1909 (synopsis "Minimal implementation of incremental computation in Guile
1910Scheme")
1911 (description "This package provides a complete Scheme implementation of
1912miniAdapton, which implements the core functionality of the Adapton system for
1913incremental computation (also known as self-adjusting computation). Like
1914Adapton, miniAdapton allows programmers to safely combine mutation and
1915memoization. miniAdapton is built on top of an even simpler system,
1916microAdapton. Both miniAdapton and microAdapton are designed to be easy to
1917understand, extend, and port to host languages other than Scheme.")
1918 (license license:expat))))
1919
1920(define-public guile-reader
1921 (package
1922 (name "guile-reader")
a7c69419 1923 (version "0.6.3")
0791437f
RW
1924 (source (origin
1925 (method url-fetch)
1926 (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
1927 version ".tar.gz"))
1928 (sha256
1929 (base32
a7c69419 1930 "1fyjckmygkhq22lq8nqc86yl5zzbqd7a944dnz5c1f6vx92b9hiq"))))
0791437f
RW
1931 (build-system gnu-build-system)
1932 (native-inputs `(("pkgconfig" ,pkg-config)
a7c69419 1933 ("gperf" ,gperf)))
c20e697e 1934 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
1935 (synopsis "Framework for building readers for GNU Guile")
1936 (description
1937 "Guile-Reader is a simple framework for building readers for GNU Guile.
1938
1939The idea is to make it easy to build procedures that extend Guile’s read
1940procedure. Readers supporting various syntax variants can easily be written,
1941possibly by re-using existing “token readers” of a standard Scheme
1942readers. For example, it is used to implement Skribilo’s R5RS-derived
1943document syntax.
1944
1945Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
1946hopefully more powerful and flexible (for instance, one may instantiate as
1947many readers as needed).")
1948 (home-page "https://www.nongnu.org/guile-reader/")
1949 (license license:gpl3+)))
1950
c20e697e
LC
1951(define-public guile2.2-reader
1952 (package
1953 (inherit guile-reader)
1954 (name "guile2.2-reader")
1955 (inputs `(("guile" ,guile-2.2)))))
1956
0791437f
RW
1957(define-public guile-ncurses
1958 (package
1959 (name "guile-ncurses")
2b155e3a 1960 (version "3.0")
0791437f
RW
1961 (source (origin
1962 (method url-fetch)
1963 (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
1964 version ".tar.gz"))
1965 (sha256
1966 (base32
2b155e3a 1967 "038xbffalhymg26lvmzgf7ljilxz2f2zmqg5r5nfzbipfbprwjhf"))))
0791437f
RW
1968 (build-system gnu-build-system)
1969 (inputs `(("ncurses" ,ncurses)
b01a73b0 1970 ("guile" ,guile-3.0)))
0791437f
RW
1971 (native-inputs `(("pkg-config" ,pkg-config)))
1972 (arguments
3c566eba
MB
1973 `(#:modules ((guix build gnu-build-system)
1974 ((guix build guile-build-system)
1975 #:select (target-guile-effective-version))
1976 (guix build utils))
1977 #:imported-modules ((guix build guile-build-system)
1978 ,@%gnu-build-system-modules)
1979 #:configure-flags (list "--with-ncursesw" ; Unicode support
0791437f
RW
1980 "--with-gnu-filesystem-hierarchy")
1981 #:phases
1982 (modify-phases %standard-phases
1983 (add-before 'build 'fix-libguile-ncurses-file-name
1984 (lambda* (#:key outputs #:allow-other-keys)
1985 (invoke "make" "install"
1986 "-C" "src/ncurses"
1987 "-j" (number->string
1988 (parallel-job-count)))
1989 (let* ((out (assoc-ref outputs "out"))
1990 (dir "src/ncurses")
1991 (files (find-files dir ".scm")))
1992 (substitute* files
1993 (("\"libguile-ncurses\"")
3c566eba
MB
1994 (format #f "\"~a/lib/guile/~a/libguile-ncurses\""
1995 out (target-guile-effective-version))))
0791437f
RW
1996 #t))))))
1997 (home-page "https://www.gnu.org/software/guile-ncurses/")
1998 (synopsis "Guile bindings to ncurses")
1999 (description
2000 "guile-ncurses provides Guile language bindings for the ncurses
2001library.")
2002 (license license:lgpl3+)))
2003
b01a73b0 2004(define-public guile2.2-ncurses
3c566eba
MB
2005 (package
2006 (inherit guile-ncurses)
b01a73b0 2007 (name "guile2.2-ncurses")
3c566eba 2008 (inputs `(("ncurses" ,ncurses)
b01a73b0
RW
2009 ("guile" ,guile-2.2)))))
2010
2011(define-public guile3.0-ncurses
2012 (deprecated-package "guile3.0-ncurses" guile-ncurses))
3c566eba 2013
0791437f
RW
2014(define-public guile-ncurses/gpm
2015 (package
2016 (inherit guile-ncurses)
2017 (name "guile-ncurses-with-gpm")
2018 (inputs `(("ncurses" ,ncurses/gpm)
2019 ("guile" ,guile-2.2)))))
2020
87001355
MB
2021(define-public guile3.0-ncurses/gpm
2022 (package
2023 (inherit guile3.0-ncurses)
2024 (name "guile3.0-ncurses-with-gpm")
2025 (inputs `(("ncurses" ,ncurses/gpm)
2026 ("guile" ,guile-3.0)))))
2027
0791437f
RW
2028(define-public guile-lib
2029 (package
2030 (name "guile-lib")
2031 (version "0.2.6.1")
2032 (source (origin
2033 (method url-fetch)
2034 (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
2035 version ".tar.gz"))
2036 (sha256
2037 (base32
675f1940
LC
2038 "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd"))
2039 (modules '((guix build utils)))
2040 (snippet
2041 '(begin
2042 ;; Work around miscompilation on Guile 3.0.0 at -O2:
2043 ;; <https://bugs.gnu.org/39251>.
2044 (substitute* "src/md5.scm"
2045 (("\\(define f-ash ash\\)")
2046 "(define f-ash (@ (guile) ash))\n")
2047 (("\\(define f-add \\+\\)")
2048 "(define f-add (@ (guile) +))\n"))
2049 #t))))
0791437f
RW
2050 (build-system gnu-build-system)
2051 (arguments
2052 '(#:make-flags
2053 '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors
2054 #:phases
2055 (modify-phases %standard-phases
2056 (add-before 'configure 'patch-module-dir
2057 (lambda _
2058 (substitute* "src/Makefile.in"
2059 (("^moddir = ([[:graph:]]+)")
2060 "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
2061 (("^godir = ([[:graph:]]+)")
2062 "godir = \
2063$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
2064 #t)))))
2065 (native-inputs `(("pkg-config" ,pkg-config)))
b6bee63b 2066 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
2067 (home-page "https://www.nongnu.org/guile-lib/")
2068 (synopsis "Collection of useful Guile Scheme modules")
2069 (description
2070 "Guile-Lib is intended as an accumulation place for pure-scheme Guile
2071modules, allowing for people to cooperate integrating their generic Guile
2072modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
2073for Guile\".")
2074
2075 ;; The whole is under GPLv3+, but some modules are under laxer
2076 ;; distribution terms such as LGPL and public domain. See `COPYING' for
2077 ;; details.
2078 (license license:gpl3+)))
2079
2080(define-public guile2.0-lib
2081 (package
2082 (inherit guile-lib)
2083 (name "guile2.0-lib")
2084 (inputs `(("guile" ,guile-2.0)))))
2085
b6bee63b 2086(define-public guile2.2-lib
675f1940
LC
2087 (package
2088 (inherit guile-lib)
b6bee63b
LC
2089 (name "guile2.2-lib")
2090 (inputs `(("guile" ,guile-2.2)))))
2091
2092(define-public guile3.0-lib
2093 (deprecated-package "guile3.0-lib" guile-lib))
675f1940 2094
0791437f
RW
2095(define-public guile-minikanren
2096 (package
2097 (name "guile-minikanren")
2098 (version "20150424.e844d85")
2099 (source (origin
2100 (method git-fetch)
2101 (uri (git-reference
b0e7b699 2102 (url "https://github.com/ijp/minikanren")
0791437f
RW
2103 (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
2104 (file-name (string-append name "-" version "-checkout"))
2105 (sha256
2106 (base32
2107 "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
2108 (build-system guile-build-system)
2109 (native-inputs
b6bee63b 2110 `(("guile" ,guile-3.0)))
0791437f
RW
2111 (home-page "https://github.com/ijp/minikanren")
2112 (synopsis "MiniKanren declarative logic system, packaged for Guile")
2113 (description
2114 "MiniKanren is a relational programming extension to the Scheme
2115programming Language, written as a smaller version of Kanren suitable for
2116pedagogical purposes. It is featured in the book, The Reasoned Schemer,
2117written by Dan Friedman, William Byrd, and Oleg Kiselyov.
2118
2119This is Ian Price's r6rs packaged version of miniKanren, which deviates
2120slightly from miniKanren mainline.
2121
2122See http://minikanren.org/ for more on miniKanren generally.")
2123 (license license:expat)))
2124
2125(define-public guile2.0-minikanren
2126 (package
2127 (inherit guile-minikanren)
2128 (name "guile2.0-minikanren")
2129 (native-inputs `(("guile" ,guile-2.0)))))
2130
b6bee63b 2131(define-public guile2.2-minikanren
89a99d53
LC
2132 (package
2133 (inherit guile-minikanren)
b6bee63b
LC
2134 (name "guile2.2-minikanren")
2135 (native-inputs `(("guile" ,guile-2.2)))))
2136
2137(define-public guile3.0-minikanren
2138 (deprecated-package "guile3.0-minikanren" guile-minikanren))
89a99d53 2139
0791437f
RW
2140(define-public guile-irregex
2141 (package
2142 (name "guile-irregex")
2143 (version "0.9.6")
2144 (source (origin
2145 (method url-fetch)
2146 (uri (string-append
2147 "http://synthcode.com/scheme/irregex/irregex-"
2148 version ".tar.gz"))
2149 (sha256
2150 (base32
2151 "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
2152 (build-system guile-build-system)
2153 (arguments
2154 '(#:phases (modify-phases %standard-phases
2155 (add-after 'unpack 'move-files-around
2156 (lambda _
2157 ;; Move the relevant source files to src/ and create the
2158 ;; rx/ directory to match the expected module hierarchy.
2159 (mkdir-p "src/rx/source")
2160 (rename-file "irregex-guile.scm"
2161 "src/rx/irregex.scm")
2162 (rename-file "irregex.scm"
2163 "src/rx/source/irregex.scm")
2164 ;; Not really reachable via guile's packaging system,
2165 ;; but nice to have around.
2166 (rename-file "irregex-utils.scm"
2167 "src/rx/source/irregex-utils.scm")
2168 #t)))
2169 #:source-directory "src"))
2170 (native-inputs
b6bee63b 2171 `(("guile" ,guile-3.0)))
0791437f
RW
2172 (home-page "http://synthcode.com/scheme/irregex")
2173 (synopsis "S-expression based regular expressions")
2174 (description
2175 "Irregex is an s-expression based alternative to your classic
2176string-based regular expressions. It implements SRFI 115 and is deeply
2177inspired by the SCSH regular expression system.")
2178 (license license:bsd-3)))
2179
2180(define-public guile2.0-irregex
2181 (package
2182 (inherit guile-irregex)
2183 (name "guile2.0-irregex")
2184 (native-inputs `(("guile" ,guile-2.0)))))
2185
b6bee63b 2186(define-public guile2.2-irregex
89a99d53
LC
2187 (package
2188 (inherit guile-irregex)
b6bee63b
LC
2189 (name "guile2.2-irregex")
2190 (native-inputs `(("guile" ,guile-2.2)))))
2191
2192(define-public guile3.0-irregex
2193 (deprecated-package "guile3.0-irregex" guile-irregex))
89a99d53 2194
0791437f
RW
2195(define-public haunt
2196 (package
2197 (name "haunt")
2198 (version "0.2.4")
2199 (source (origin
2200 (method url-fetch)
2201 (uri (string-append "https://files.dthompson.us/haunt/haunt-"
2202 version ".tar.gz"))
2203 (sha256
2204 (base32
93d94134
LC
2205 "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc"))
2206 (modules '((guix build utils)))
2207 (snippet
2208 '(begin
2209 ;; Allow builds with Guile 3.0.
2210 (substitute* "configure"
2211 (("2\\.2 2\\.0")
2212 "3.0 2.2 2.0"))
2213 #t))))
0791437f
RW
2214 (build-system gnu-build-system)
2215 (arguments
2216 `(#:modules ((ice-9 match) (ice-9 ftw)
2217 ,@%gnu-build-system-modules)
2218 #:tests? #f ; test suite is non-deterministic :(
2219 #:phases (modify-phases %standard-phases
2220 (add-after 'install 'wrap-haunt
2221 (lambda* (#:key inputs outputs #:allow-other-keys)
2222 ;; Wrap the 'haunt' command to refer to the right
2223 ;; modules.
2224 (let* ((out (assoc-ref outputs "out"))
2225 (bin (string-append out "/bin"))
2226 (site (string-append
2227 out "/share/guile/site"))
93d94134
LC
2228 (guile-reader (assoc-ref inputs "guile-reader"))
2229 (deps `(,@(if guile-reader
2230 (list guile-reader)
2231 '())
2232 ,(assoc-ref inputs "guile-commonmark"))))
0791437f
RW
2233 (match (scandir site)
2234 (("." ".." version)
2235 (let ((modules (string-append site "/" version))
2236 (compiled-modules (string-append
2237 out "/lib/guile/" version
2238 "/site-ccache")))
2239 (wrap-program (string-append bin "/haunt")
2240 `("GUILE_LOAD_PATH" ":" prefix
2241 (,modules
2242 ,@(map (lambda (dep)
2243 (string-append dep
2244 "/share/guile/site/"
2245 version))
2246 deps)))
2247 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
2248 (,compiled-modules
2249 ,@(map (lambda (dep)
2250 (string-append dep "/lib/guile/"
2251 version
2252 "/site-ccache"))
2253 deps))))
2254 #t)))))))))
2255 (native-inputs
2256 `(("pkg-config" ,pkg-config)
2257 ("texinfo" ,texinfo)))
2258 (inputs
b6bee63b 2259 `(("guile" ,guile-3.0)))
0791437f 2260 (propagated-inputs
c20e697e 2261 `(("guile-reader" ,guile-reader)
0791437f
RW
2262 ("guile-commonmark" ,guile-commonmark)))
2263 (synopsis "Functional static site generator")
2264 (description "Haunt is a static site generator written in Guile
2265Scheme. Haunt features a functional build system and an extensible
2266interface for reading articles in any format.")
2267 (home-page "http://haunt.dthompson.us")
2268 (license license:gpl3+)))
2269
b6bee63b 2270(define-public guile2.2-haunt
93d94134
LC
2271 (package
2272 (inherit haunt)
b6bee63b
LC
2273 (name "guile2.2-haunt")
2274 (inputs `(("guile" ,guile-2.2)))
93d94134 2275 (propagated-inputs
c20e697e 2276 `(("guile-reader" ,guile2.2-reader)
b6bee63b 2277 ("guile-commonmark" ,guile2.2-commonmark)))))
93d94134 2278
0791437f
RW
2279(define-public guile2.0-haunt
2280 (package
2281 (inherit haunt)
2282 (name "guile2.0-haunt")
2283 (inputs `(("guile" ,guile-2.0)))))
2284
b6bee63b
LC
2285(define-public guile3.0-haunt
2286 (deprecated-package "guile3.0-haunt" haunt))
2287
0791437f
RW
2288(define-public guile-redis
2289 (package
2290 (name "guile-redis")
f57bf15c 2291 (version "1.3.0")
0791437f
RW
2292 (home-page "https://github.com/aconchillo/guile-redis")
2293 (source (origin
29fde3bf
EF
2294 (method git-fetch)
2295 (uri (git-reference
2296 (url home-page)
2297 (commit version)))
2298 (file-name (git-file-name name version))
0791437f
RW
2299 (sha256
2300 (base32
29fde3bf 2301 "14izs8daxh7pb7vwpxi5g427qa31137jkaxrb1cy5rpjkwchy723"))))
0791437f
RW
2302 (build-system gnu-build-system)
2303 (native-inputs
2304 `(("autoconf" ,autoconf)
2305 ("automake" ,automake)
2306 ("pkg-config" ,pkg-config)
24e38f24 2307 ("guile" ,guile-3.0)))
0791437f
RW
2308 (synopsis "Redis client library for Guile")
2309 (description "Guile-redis provides a Scheme interface to the Redis
2310key-value cache and store.")
2311 (license license:lgpl3+)))
2312
24e38f24
RW
2313(define-public guile2.2-redis
2314 (package
2315 (inherit guile-redis)
2316 (name "guile2.2-redis")
2317 (native-inputs `(("guile" ,guile-2.2)
2318 ,@(alist-delete "guile"
2319 (package-native-inputs guile-redis))))))
2320
0791437f
RW
2321(define-public guile2.0-redis
2322 (package
2323 (inherit guile-redis)
2324 (name "guile2.0-redis")
2325 (native-inputs `(("guile" ,guile-2.0)
2326 ,@(alist-delete "guile"
2327 (package-native-inputs guile-redis))))))
2328
0791437f
RW
2329(define-public guile-commonmark
2330 (package
2331 (name "guile-commonmark")
b552e307 2332 (version "0.1.2")
0791437f
RW
2333 (source (origin
2334 (method url-fetch)
2335 (uri (string-append "https://github.com/OrangeShark/" name
2336 "/releases/download/v" version
2337 "/" name "-" version ".tar.gz"))
2338 (sha256
2339 (base32
1fa34232
LC
2340 "17lrsdisa3kckh24q114vfmzdc4wkqa6ccwl4hdlrng5wpn1iman"))
2341 (modules '((guix build utils)))
2342 (snippet
2343 '(begin
2344 ;; Allow builds with Guile 3.0.
2345 (substitute* "configure"
2346 (("2\\.2 2\\.0")
2347 "3.0 2.2 2.0"))
2348 #t))))
0791437f
RW
2349 (build-system gnu-build-system)
2350 (inputs
b6bee63b 2351 `(("guile" ,guile-3.0)))
0791437f
RW
2352 (native-inputs
2353 `(("pkg-config" ,pkg-config)))
2354 (synopsis "CommonMark parser for Guile")
2355 (description
2356 "guile-commonmark is a library for parsing CommonMark, a fully specified
2357variant of Markdown. The library is written in Guile Scheme and is designed
2358to transform a CommonMark document to SXML. guile-commonmark tries to closely
2359follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
2360is no support for parsing block and inline level HTML.")
2361 (home-page "https://github.com/OrangeShark/guile-commonmark")
2362 (license license:lgpl3+)))
2363
b6bee63b 2364(define-public guile2.2-commonmark
1fa34232
LC
2365 (package
2366 (inherit guile-commonmark)
b6bee63b
LC
2367 (name "guile2.2-commonmark")
2368 (inputs `(("guile" ,guile-2.2)))))
1fa34232 2369
0791437f
RW
2370(define-public guile2.0-commonmark
2371 (package
2372 (inherit guile-commonmark)
2373 (name "guile2.0-commonmark")
2374 (inputs `(("guile" ,guile-2.0)))))
2375
b6bee63b
LC
2376(define-public guile3.0-commonmark
2377 (deprecated-package "guile3.0-commonmark" guile-commonmark))
2378
0791437f
RW
2379(define-public mcron
2380 (package
2381 (name "mcron")
8b3b1988 2382 (version "1.2.0")
0791437f
RW
2383 (source (origin
2384 (method url-fetch)
2385 (uri (string-append "mirror://gnu/mcron/mcron-"
2386 version ".tar.gz"))
2387 (sha256
2388 (base32
8b3b1988 2389 "1midrn15d5kqy4zd2029bj1db6gnfhxg8mcgfy4bkp5p9nl4v4rd"))))
0791437f
RW
2390 (build-system gnu-build-system)
2391 (arguments
2392 '(#:phases (modify-phases %standard-phases
0791437f
RW
2393 (add-before 'check 'adjust-tests
2394 (lambda _
2395 (substitute* "tests/job-specifier.scm"
2396 ;; (getpw) fails with "entry not found" in the build
2397 ;; environment, so pass an argument.
2398 (("\\(getpw\\)")
2399 "(getpwnam (getuid))")
2400 ;; The build environment lacks an entry for root in
2401 ;; /etc/passwd.
2402 (("\\(getpw 0\\)")
2403 "(getpwnam \"nobody\")")
2404
2405 ;; FIXME: Skip the 4 faulty tests (see above).
2406 (("\\(test-equal \"next-year\"" all)
2407 (string-append "(test-skip 4)\n" all)))
2408 #t)))))
30ebff69 2409 (native-inputs `(("pkg-config" ,pkg-config)
bbd9c9c9
LC
2410 ("tzdata" ,tzdata-for-tests)
2411 ("guile-native" ;for 'guild compile'
2412 ,@(assoc-ref (package-inputs this-package) "guile"))))
b6bee63b 2413 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
2414 (home-page "https://www.gnu.org/software/mcron/")
2415 (synopsis "Run jobs at scheduled times")
2416 (description
2417 "GNU Mcron is a complete replacement for Vixie cron. It is used to run
2418tasks on a schedule, such as every hour or every Monday. Mcron is written in
2419Guile, so its configuration can be written in Scheme; the original cron
2420format is also supported.")
2421 (license license:gpl3+)))
2422
b6bee63b 2423(define-public guile2.2-mcron
3de0d20b
LC
2424 (package
2425 (inherit mcron)
b6bee63b
LC
2426 (name "guile2.2-mcron")
2427 (inputs `(("guile" ,guile-2.2)))))
2428
2429(define-public guile3.0-mcron
2430 (deprecated-package "guile3.0-mcron" mcron))
3de0d20b 2431
6bb5f88e 2432(define-public guile-picture-language
d1a3a8e1
RW
2433 (let ((commit "91d10c96708d732145006dd2802acc4de08b632e")
2434 (revision "1"))
6bb5f88e
RW
2435 (package
2436 (name "guile-picture-language")
d1a3a8e1 2437 (version (git-version "0.0.1" revision commit))
6bb5f88e
RW
2438 (source (origin
2439 (method git-fetch)
2440 (uri (git-reference
2441 (url "https://git.elephly.net/software/guile-picture-language.git")
2442 (commit commit)))
f1d4d79f 2443 (file-name (git-file-name name version))
6bb5f88e
RW
2444 (sha256
2445 (base32
d1a3a8e1
RW
2446 "1ydvw9dvssdvlvhh1dr8inyzy2x6m41qgp8hsivca1xysr4gc23a"))))
2447 (build-system gnu-build-system)
6bb5f88e 2448 (inputs
b6bee63b 2449 `(("guile" ,guile-3.0)))
d1a3a8e1
RW
2450 (native-inputs
2451 `(("autoconf" ,autoconf)
2452 ("automake" ,automake)
2453 ("imagemagick" ,imagemagick)
2454 ("pkg-config" ,pkg-config)
2455 ("texinfo" ,texinfo)))
6bb5f88e
RW
2456 (home-page "https://git.elephly.net/software/guile-picture-language.git")
2457 (synopsis "Picture language for Guile")
2458 (description
2459 "This package provides a simple SVG-based picture language for Guile.
2460The picture values can directly be displayed in Geiser.")
2461 (license license:lgpl3+))))
5531782d 2462
b6bee63b 2463(define-public guile2.2-picture-language
4f408684
LC
2464 (package
2465 (inherit guile-picture-language)
b6bee63b
LC
2466 (name "guile2.2-picture-language")
2467 (inputs `(("guile" ,guile-2.2)))))
2468
2469(define-public guile3.0-picture-language
2470 (deprecated-package "guile3.0-picture-language"
2471 guile-picture-language))
4f408684 2472
5531782d 2473(define-public guile-studio
0e7731ba 2474 (let ((commit "5c05b03e8a5c450f7358ceec7ea602f29c49d54e")
c6607797
RW
2475 (revision "1"))
2476 (package
2477 (name "guile-studio")
0e7731ba 2478 (version (git-version "0.0.3" revision commit))
c6607797
RW
2479 (source (origin
2480 (method git-fetch)
2481 (uri (git-reference
2482 (url "https://git.elephly.net/software/guile-studio.git")
2483 (commit commit)))
2484 (file-name (git-file-name name version))
2485 (sha256
2486 (base32
0e7731ba 2487 "11wyf6x7mhyhimv0cd57pl39zgav9hc9ljqi3g2g35b264hylpnx"))))
c6607797
RW
2488 (build-system gnu-build-system)
2489 (arguments
2490 `(#:modules
2491 ((ice-9 match)
2492 (srfi srfi-1)
2493 ,@%gnu-build-system-modules)
2494 #:tests? #f ; there are none
2495 #:make-flags
2496 (list (string-append "ICONS_DIR="
2497 (assoc-ref %build-inputs "adwaita-icon-theme")
2498 "/share/icons/Adwaita/")
2499 (string-append "PICT_DIR="
2500 (assoc-ref %build-inputs "guile-picture-language"))
2501 (string-append "EMACS_DIR="
2502 (assoc-ref %build-inputs "emacs"))
2503 (string-append "GUILE_DIR="
2504 (assoc-ref %build-inputs "guile"))
2505 (string-join (cons "INPUTS="
2506 (filter-map
2507 (lambda (input)
2508 (match input
2509 ((label . pkg)
2510 (and (string-prefix? "emacs" label) pkg))))
2511 %build-inputs)))
2512 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2513 #:phases
2514 (modify-phases %standard-phases
2515 (delete 'configure)
2516 (delete 'install))))
2517 (inputs
2518 `(("guile" ,guile-3.0)
2519 ("guile-picture-language" ,guile-picture-language)
2520 ("emacs" ,emacs)
2521 ("emacs-geiser" ,emacs-geiser)
2522 ("emacs-company" ,emacs-company)
2523 ("emacs-flycheck" ,emacs-flycheck)
0e7731ba 2524 ("emacs-flycheck-guile" ,emacs-flycheck-guile)
c6607797
RW
2525 ("emacs-smart-mode-line" ,emacs-smart-mode-line)
2526 ("emacs-paren-face" ,emacs-paren-face)
2527 ("adwaita-icon-theme" ,adwaita-icon-theme)))
2528 (native-inputs
2529 `(("texinfo" ,texinfo)))
2530 (home-page "https://gnu.org/software/guile")
2531 (synopsis "IDE for Guile")
2532 (description
2533 "This is Emacs with a few settings that make working with Guile easier
5531782d
RW
2534for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
2535to evaluate Guile buffers, support for Guile's very own picture language, code
2536completion, a simple mode line, etc.")
c6607797 2537 (license license:gpl3+))))
9f8698ad
RW
2538
2539(define-public guile-stis-parser
3a71dac0
MB
2540 (package
2541 (name "guile-stis-parser")
2542 (version "1.2.4.1")
2543 (source (origin
2544 (method git-fetch)
2545 (uri (git-reference
2546 (url "https://gitlab.com/tampe/stis-parser")
2547 (commit (string-append "v" version))))
2548 (file-name (git-file-name name version))
2549 (sha256
2550 (base32
2551 "1fvxdfvc80zqhwzq5x3kxyr6j8p4b51yx85fx1gr3d4gy2ddpx5w"))))
2552 (build-system gnu-build-system)
2553 (arguments
2554 `(#:parallel-build? #f ; not supported
2555 #:phases
2556 (modify-phases %standard-phases
2557 (add-after 'unpack 'chdir
2558 (lambda _ (chdir "modules") #t))
2559 (add-after 'chdir 'delete-broken-symlink
2560 (lambda _
2561 (delete-file "parser/stis-parser/lang/.#calc.scm")
2562 #t)))))
2563 (inputs
2564 `(("guile" ,guile-3.0)))
2565 (native-inputs
2566 `(("autoconf" ,autoconf)
2567 ("automake" ,automake)
2568 ("pkg-config" ,pkg-config)))
2569 (home-page "https://gitlab.com/tampe/stis-parser")
2570 (synopsis "Parser combinator framework")
2571 (description
2572 "This package provides a functional parser combinator library that
9f8698ad
RW
2573supports backtracking and a small logical framework. The idea is to build up
2574chunks that are memoized and there is no clear scanner/parser separation,
2575chunks can be expressions as well as simple tokens.")
3a71dac0 2576 (license license:lgpl2.0+)))
12d73f9c
RW
2577
2578(define-public guile-persist
09f0bc87
MB
2579 (package
2580 (name "guile-persist")
2581 (version "1.2.3")
2582 (source (origin
2583 (method git-fetch)
2584 (uri (git-reference
2585 (url "https://gitlab.com/tampe/guile-persist")
2586 (commit (string-append "v" version))))
2587 (file-name (git-file-name name version))
2588 (sha256
2589 (base32
2590 "19f8hqcax4v40858kx2j8fy1cvzc2djj99r0n17dy1xxmwa097qi"))))
2591 (build-system gnu-build-system)
2592 (arguments
2593 `(#:phases
2594 (modify-phases %standard-phases
2595 (add-after 'unpack 'patch-prefix
2596 (lambda* (#:key inputs outputs #:allow-other-keys)
2597 (substitute* "src/Makefile.am"
2598 (("/usr/local/lib/guile")
2599 (string-append (assoc-ref outputs "out") "/lib/guile"))
2600 (("/usr/local/include/guile")
2601 (string-append (assoc-ref inputs "guile") "/include/guile"))
2602 (("-L/usr/local/lib")
2603 (string-append "-L" (assoc-ref inputs "guile") "/lib")))
2604 #t))
2605 (add-after 'unpack 'patch-library-reference
2606 (lambda* (#:key outputs #:allow-other-keys)
2607 (let ((out (assoc-ref outputs "out")))
2608 (substitute* "persist/persistance.scm"
2609 (("\"libguile-persist\"")
2610 (format #f "\"~a/lib/guile/3.0/extensions/libguile-persist\"" out)))
2611 #t))))))
2612 (inputs
2613 `(("guile" ,guile-3.0)))
2614 (native-inputs
2615 `(("autoconf" ,autoconf)
2616 ("automake" ,automake)
2617 ("libtool" ,libtool)
2618 ("pkg-config" ,pkg-config)))
2619 (home-page "https://gitlab.com/tampe/guile-persist")
2620 (synopsis "Persistence programming framework for Guile")
2621 (description
2622 "This is a serialization library for serializing objects like classes
12d73f9c
RW
2623and objects, closures and structs. This currently does not support
2624serializing continuations or delimited continuations.")
09f0bc87 2625 (license license:lgpl2.0+)))
6d37301b
RW
2626
2627(define-public python-on-guile
ac944584
MB
2628 (package
2629 (name "python-on-guile")
cdf6a118 2630 (version "1.2.3.5")
ac944584
MB
2631 (home-page "https://gitlab.com/python-on-guile/python-on-guile")
2632 (source (origin
2633 (method git-fetch)
2634 (uri (git-reference (url home-page)
2635 (commit (string-append "v" version))))
2636 (file-name (git-file-name name version))
2637 (sha256
2638 (base32
cdf6a118 2639 "05xrvcj6a4gzq1ybyin270qz8wamgc7w2skyi9iy6hkpgdhxy8vf"))))
ac944584
MB
2640 (build-system gnu-build-system)
2641 (arguments
2642 `(#:parallel-build? #f ;not supported
2643 #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
2644 #:phases
2645 (modify-phases %standard-phases
2646 (add-after 'unpack 'chdir
2647 (lambda _ (chdir "modules") #t))
2648 (add-after 'chdir 'augment-GUILE_LOAD_PATH
2649 (lambda _
2650 ;; TODO: It would be better to patch the Makefile.
2651 (setenv "GUILE_LOAD_PATH"
2652 (string-append ".:"
2653 (getenv "GUILE_LOAD_PATH")))
2654 #t))
2655 (add-after 'install 'wrap
2656 (lambda* (#:key outputs #:allow-other-keys)
2657 ;; Wrap the 'python' executable so it can find its
862d6a91
MB
2658 ;; dependencies and own modules.
2659 (let* ((out (assoc-ref outputs "out"))
2660 (guile-version ,(version-major+minor
2661 (package-version guile-3.0)))
2662 (scm (string-append out "/share/guile/site/"
2663 guile-version))
2664 (ccache (string-append out "/lib/guile/" guile-version
2665 "/site-ccache"))
2666 (load-path (string-join
2667 (cons scm
2668 ;; XXX: cdr because we augment it above.
2669 (cdr (string-split
2670 (getenv "GUILE_LOAD_PATH") #\:)))
2671 ":"))
2672 (compiled-path (string-append
2673 ccache ":"
2674 (getenv "GUILE_LOAD_COMPILED_PATH"))))
ac944584
MB
2675 (wrap-program (string-append out "/bin/python")
2676 `("GUILE_LOAD_PATH" ":" prefix
862d6a91 2677 (,load-path))
ac944584 2678 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
862d6a91 2679 (,compiled-path)))
ac944584
MB
2680 #t))))))
2681 (inputs
4f33bf57
MB
2682 `(("guile" ,guile-3.0)
2683 ("guile-persist" ,guile-persist)
ac944584
MB
2684 ("guile-readline" ,guile-readline)
2685 ("guile-stis-parser" ,guile-stis-parser)))
2686 (native-inputs
2687 `(("autoconf" ,autoconf)
2688 ("automake" ,automake)
2689 ("libtool" ,libtool)
2690 ("pkg-config" ,pkg-config)))
2691 (synopsis "Python implementation in Guile")
2692 (description
2693 "This package allows you to compile a Guile Python file to any target
6d37301b 2694from @code{tree-il}.")
ac944584 2695 (license license:lgpl2.0+)))
b97b4624
RW
2696
2697(define-public guile-file-names
2698 (package
2699 (name "guile-file-names")
72a0706f 2700 (version "0.3")
b97b4624
RW
2701 (source (origin
2702 (method url-fetch)
2703 (uri (string-append "http://brandon.invergo.net/software/download/"
2704 "guile-file-names/guile-file-names-"
2705 version ".tar.gz"))
2706 (sha256
2707 (base32
72a0706f 2708 "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz"))))
b97b4624
RW
2709 (build-system gnu-build-system)
2710 (arguments
2711 `(#:phases
2712 (modify-phases %standard-phases
481eca80 2713 (add-after 'unpack 'fix-target-directory
b97b4624 2714 (lambda _
481eca80 2715 (substitute* "src/Makefile.in"
b97b4624
RW
2716 (("guilemoddir = \\$\\(GUILE_SITE\\)")
2717 "guilemoddir = $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
2718 #t)))))
2719 (inputs
2720 `(("guile" ,guile-2.2)))
2721 (native-inputs
2722 `(("pkg-config" ,pkg-config)))
2723 (home-page "https://gitlab.com/brandoninvergo/guile-file-names")
2724 (synopsis "Manipulate file names")
2725 (description
2726 "The @code{(file-names)} module provides tools for manipulating file
2727names. The module was built on the idea that doing anything more than a
2728non-trivial modification of a file name string is a pain (making sure all
2729slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
2730Inevitably, you have to break the string up into chunks and operate on that
2731list of components. This module takes care of that for you.")
2732 (license license:lgpl3+)))
bdf2dd79
JN
2733
2734(define-public guile-gi
bb6c8f20
RW
2735 (package
2736 (name "guile-gi")
c67db509 2737 (version "0.3.0")
bb6c8f20
RW
2738 (source (origin
2739 (method url-fetch)
2740 (uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
2741 version ".tar.gz"))
2742 (sha256
2743 (base32
c67db509 2744 "05xbwrk50h4f9fh8la8fk2wsxbnm0jcyb9phnpkkjq4sqkhkxlbj"))))
e4ef0d7c 2745 (build-system glib-or-gtk-build-system)
bb6c8f20 2746 (arguments
b5d4d5b9 2747 `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
e4ef0d7c 2748 #:modules ((guix build glib-or-gtk-build-system)
a431a635
RW
2749 (guix build utils)
2750 (ice-9 popen)
2751 (ice-9 rdelim))
b5d4d5b9
RW
2752 #:phases
2753 (modify-phases %standard-phases
a431a635
RW
2754 (add-after 'unpack 'patch-references-to-extension
2755 (lambda* (#:key outputs #:allow-other-keys)
2756 (let ((effective (read-line
2757 (open-pipe* OPEN_READ
2758 "guile" "-c"
2759 "(display (effective-version))"))))
2760 (substitute* '("module/gi.scm"
2761 "module/gi/oop.scm"
2762 "module/gi/documentation.scm"
2763 "module/gi/types.scm"
2764 "module/gi/repository.scm")
2765 (("\\(load-extension \"libguile-gi\" \"(.*)\"\\)" m arg)
2766 (format #f "~s"
2767 `(load-extension
2768 (format #f "~alibguile-gi"
2769 (if (getenv "GUILE_GI_UNINSTALLED")
2770 ""
e4ef0d7c 2771 ,(format #f "~a/lib/guile/~a/extensions/"
a431a635
RW
2772 (assoc-ref outputs "out")
2773 effective)))
2774 ,arg)))))
2775 (setenv "GUILE_GI_UNINSTALLED" "1")
2776 #t))
b5d4d5b9
RW
2777 (add-before 'check 'start-xorg-server
2778 (lambda* (#:key inputs #:allow-other-keys)
2779 ;; The init_check test requires a running X server.
2780 (system (format #f "~a/bin/Xvfb :1 &"
2781 (assoc-ref inputs "xorg-server")))
2782 (setenv "DISPLAY" ":1")
2783 #t)))))
bb6c8f20 2784 (native-inputs
f2d97d57 2785 `(("gettext" ,gettext-minimal)
6153fa0a 2786 ("glib:bin" ,glib "bin") ; for glib-compile-resources
bb6c8f20 2787 ("libtool" ,libtool)
b5d4d5b9
RW
2788 ("pkg-config" ,pkg-config)
2789 ("xorg-server" ,xorg-server)))
bb6c8f20
RW
2790 (propagated-inputs
2791 `(("glib" ,glib)
2792 ("gobject-introspection" ,gobject-introspection)
2793 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
2794 ("gtk+" ,gtk+)
2795 ("guile-lib" ,guile-lib)
2796 ("webkitgtk" ,webkitgtk)))
b6bee63b 2797 (inputs `(("guile" ,guile-3.0)))
bb6c8f20
RW
2798 (home-page "https://github.com/spk121/guile-gi")
2799 (synopsis "GObject bindings for Guile")
2800 (description
2801 "Guile-GI is a library for Guile that allows using GObject-based
bdf2dd79
JN
2802libraries, such as GTK+3. Its README comes with the disclaimer: This is
2803pre-alpha code.")
bb6c8f20 2804 (license license:gpl3+)))
dec4b3aa 2805
b6bee63b 2806(define-public guile2.2-gi
bfb51f5e
RW
2807 (package
2808 (inherit guile-gi)
b6bee63b 2809 (name "guile2.2-gi")
3d633a1e 2810 (inputs
b6bee63b 2811 `(("guile" ,guile-2.2)
3d633a1e 2812 ,@(alist-delete "guile" (package-inputs guile-gi))))))
bfb51f5e 2813
b6bee63b
LC
2814(define-public guile3.0-gi
2815 (deprecated-package "guile3.0-gi" guile-gi))
2816
fb6b9f3b
MB
2817(define-public guile-srfi-89
2818 (package
2819 (name "guile-srfi-89")
2820 (version "0.0.1")
2821 (source
2822 (origin
2823 (method git-fetch)
2824 (uri (git-reference
2825 (url "https://gitlab.com/mjbecze/guile-srfi-89.git")
2826 (commit version)))
2827 (sha256
2828 (base32
2829 "1981c0rrzxqx3md9jx8ir7j3m2mzg9m72b33p5jvw36zirbzpl20"))
2830 (file-name (git-file-name name version))))
2831 (build-system guile-build-system)
2832 (native-inputs
2833 `(("guile" ,guile-3.0)))
2834 (home-page "https://gitlab.com/mjbecze/guile-srfi-89")
2835 (synopsis "Hygienic implementation of SRFI-89 for Guile")
2836 (description
2837 "This package provides SRFI-89 optional positional and named
2838parameters, which define* and lambda* special forms")
2839 (license license:gpl3+)))
2840
7afbaefe
MB
2841(define-public guile-srfi-145
2842 (package
2843 (name "guile-srfi-145")
2844 (version "0.0.1")
2845 (source
2846 (origin
2847 (method git-fetch)
2848 (uri (git-reference
2849 (url "https://gitlab.com/mjbecze/guile-srfi-145.git")
2850 (commit version)))
2851 (sha256
2852 (base32
2853 "1gssa8cmcp8640fil9z8dpil8v5l279wlalqjcx3fls5jwv13q1b"))
2854 (file-name (git-file-name name version))))
2855 (build-system guile-build-system)
2856 (native-inputs
2857 `(("guile" ,guile-3.0)))
2858 (home-page "https://gitlab.com/mjbecze/guile-srfi-145")
2859 (synopsis "SRFI-145 port for Guile")
2860 (description
2861 "This package provides SRFI-145. This provides the means to
2862denote the invalidity of certain code paths in a Scheme program.")
2863 (license license:gpl3+)))
2864
e0607093
MB
2865(define-public guile-srfi-158
2866 (package
2867 (name "guile-srfi-158")
2868 (version "0.0.1")
2869 (source
2870 (origin
2871 (method git-fetch)
2872 (uri (git-reference
2873 (url "https://gitlab.com/mjbecze/guile-srfi-158.git")
2874 (commit version)))
2875 (sha256
2876 (base32
2877 "0b8hlv1bldbcwkcxi9y8mm6xp5gbgpg7b15bwqxv70iynl9d9a7c"))
2878 (file-name (git-file-name name version))))
2879 (build-system gnu-build-system)
2880 (native-inputs
2881 `(("autoconf" ,autoconf)
2882 ("automake" ,automake)
2883 ("pkg-config" ,pkg-config)))
2884 (inputs
2885 `(("guile" ,guile-3.0)))
2886 (home-page "https://gitlab.com/samplet/guile-srfi-158")
2887 (synopsis "SRFI 158 (Generators and Accumulators) for Guile")
2888 (description "This package provides an implementation of SRFI 158
2889for Guile. SRFI 158 defines utility procedures that create,
2890transform, and consume generators. It also defines procedures that
2891return accumulators. It is implemented by wrapping the sample
2892implementation in a thin Guile compatibility layer.")
2893 (license license:gpl3+)))
2894
dec4b3aa
LC
2895(define-public guile-srfi-159
2896 (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
2897 (revision "0"))
2898 (package
2899 (name "guile-srfi-159")
2900 (version (git-version "0" revision commit))
2901 (home-page "https://bitbucket.org/bjoli/guile-srfi-159")
2902 (source (origin
2903 (method hg-fetch)
2904 (uri (hg-reference (changeset commit)
2905 (url home-page)))
2906 (sha256
2907 (base32
2908 "1zw6cmcy7xdbfiz3nz9arqnn7l2daidaps6ixkcrc9b6k51fdv3p"))
2909 (file-name (git-file-name name version))))
2910 (build-system guile-build-system)
2911 (arguments
2912 ;; The *-impl.scm files are actually included from module files; they
2913 ;; should not be compiled separately, but they must be installed.
2914 '(#:not-compiled-file-regexp "-impl\\.scm$"))
2915 (inputs
2916 `(("guile" ,guile-2.2)))
2917 (synopsis "Formatting combinators for Guile")
2918 (description
2919 "The @code{(srfi-159)} module and its sub-modules implement the
2920formatting combinators specified by
2921@uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
2922more expressive and flexible than the traditional @code{format} procedure.")
2923 (license license:bsd-3))))
f0de9544 2924
08a8872f
MB
2925(define-public guile-srfi-180
2926 (let ((commit "9188bf9724c6d320ef804579d222e855b007b193")
2927 (revision "0"))
2928 (package
2929 (name "guile-srfi-180")
2930 (version (git-version "0" revision commit))
2931 (source
2932 (origin
2933 (method git-fetch)
2934 (uri (git-reference
2935 (url "https://github.com/scheme-requests-for-implementation/srfi-180.git")
2936 (commit commit)))
2937 (sha256
2938 (base32
2939 "08lf70rsak8mwfij55xc37pg9zg7c87fizmhz7ln46skzj68sl3y"))
2940 (modules '((guix build utils)))
2941 (snippet
2942 '(begin
2943 (delete-file-recursively "srfi/files")
2944 (delete-file "srfi/run-r7rs-checks.guile.scm")
2945 (delete-file "srfi/run-r7rs-checks.scm")
2946 (delete-file "srfi/check.scm")
2947 #t))
2948 (file-name (git-file-name name version))))
2949 (build-system guile-build-system)
2950 (arguments
2951 '(#:not-compiled-file-regexp "body\\.scm$"))
2952 (native-inputs
2953 `(("guile" ,guile-3.0)))
2954 (propagated-inputs
2955 `(("guile-srfi-145" ,guile-srfi-145)))
2956 (home-page "https://srfi.schemers.org/srfi-180/")
2957 (synopsis "JSON parser and printer for Guile")
2958 (description
2959 "This library implements a JavaScript Object Notation (JSON) parser and printer.
2960It also supports parsing JSON objects that may be bigger than memory with a streaming
2961API.")
2962 (license license:expat))))
2963
f0de9544 2964(define-public emacsy
48eb71ae
JN
2965 (package
2966 (name "emacsy")
2967 (version "0.4.1")
2968 (source (origin
2969 (method url-fetch)
2970 (uri (string-append
2971 "https://download.savannah.nongnu.org/releases/"
2972 name "/" name "-" version ".tar.gz"))
2973 (sha256
2974 (base32
2975 "1cpb85dl1nibd34c2x2h7vfmjpkgh353p5b1w20v6cs6gmvgg4np"))))
2976 (build-system gnu-build-system)
2977 (native-inputs
2978 `(("autoconf" ,autoconf)
2979 ("automake" ,automake)
2980 ("bzip2" ,bzip2)
2981 ("guile" ,guile-2.2)
f2d97d57 2982 ("gettext" ,gettext-minimal)
48eb71ae
JN
2983 ("libtool" ,libtool)
2984 ("perl" ,perl)
2985 ("pkg-config" ,pkg-config)
2986 ("texinfo" ,texinfo)
1aa026aa 2987 ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
114f02ba 2988 (inputs
48eb71ae
JN
2989 `(("dbus-glib" ,dbus-glib)
2990 ("guile" ,guile-2.2)
2991 ("guile-lib" ,guile-lib)
2992 ("guile-readline" ,guile-readline)
48eb71ae 2993 ("freeglut" ,freeglut)
48eb71ae 2994 ("webkitgtk" ,webkitgtk)))
114f02ba
AS
2995 (propagated-inputs
2996 `(("glib-networking" ,glib-networking)
2997 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
48eb71ae 2998 (arguments
114f02ba
AS
2999 `(#:modules ((guix build gnu-build-system)
3000 (guix build utils)
3001 (ice-9 popen)
3002 (ice-9 rdelim)
3003 (ice-9 regex)
3004 (ice-9 ftw)
3005 (srfi srfi-26))
3006 #:phases
48eb71ae
JN
3007 (modify-phases %standard-phases
3008 (add-before 'configure 'setenv
3009 (lambda _
3010 (setenv "GUILE_AUTO_COMPILE" "0")
114f02ba
AS
3011 #t))
3012 (add-after 'install 'wrap-binaries
3013 (lambda* (#:key inputs outputs #:allow-other-keys)
3014 (let* ((out (assoc-ref outputs "out"))
3015 (effective (read-line
3016 (open-pipe* OPEN_READ
3017 "guile" "-c"
3018 "(display (effective-version))")))
3019 (deps (map (cut assoc-ref inputs <>)
3020 '("guile-lib" "guile-readline")))
3021 (scm-path (map (cut string-append <> "/share/guile/site/"
3022 effective) `(,out ,@deps)))
3023 (go-path (map (cut string-append <> "/lib/guile/" effective
3024 "/site-ccache/") `(,out ,@deps)))
3025 (examples (filter (cut string-match "emacsy" <>)
3026 (scandir (string-append out "/bin/"))))
3027 (progs (map (cut string-append out "/bin/" <>)
3028 examples)))
3029 (map (cut wrap-program <>
3030 `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
3031 `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))
3032 progs)
3033 #t))))))
48eb71ae
JN
3034 (home-page "https://savannah.nongnu.org/projects/emacsy")
3035 (synopsis "Embeddable GNU Emacs-like library using Guile")
3036 (description
3037 "Emacsy is an embeddable Emacs-like library that uses GNU Guile
f0de9544
JN
3038as extension language. Emacsy can give a C program an Emacsy feel with
3039keymaps, minibuffer, recordable macros, history, tab completion, major
3040and minor modes, etc., and can also be used as a pure Guile library. It
48eb71ae
JN
3041comes with a simple counter example using FreeGLUT and browser examples
3042in C using Gtk+-3 and WebKitGtk.")
3043 (license license:gpl3+)))
2135610c 3044
c99f32b9 3045(define-public emacsy-minimal
bdcb287e 3046 (let ((commit "v0.4.1-31-g415d96f"))
c99f32b9
AS
3047 (package
3048 (inherit emacsy)
3049 (name "emacsy-minimal")
9da87078 3050 (version (string-drop commit 1))
bdcb287e
MR
3051 (source
3052 (origin
3053 (method git-fetch)
3054 (uri (git-reference
3055 (url "https://git.savannah.gnu.org/git/emacsy.git")
3056 (commit commit)))
3057 (file-name (git-file-name name version))
3058 (sha256
3059 (base32 "1cs1i1hxwrv0a512j54yrvfh743nci1chx6qjgp4jyzq98ncvxgg"))))
c99f32b9
AS
3060 (build-system gnu-build-system)
3061 (inputs
3062 `(("guile" ,guile-2.2)
8d6ead32
MR
3063 ("guile-lib" ,guile2.2-lib)
3064 ("guile-readline" ,guile2.2-readline)))
c99f32b9
AS
3065 (propagated-inputs '())
3066 (arguments
3067 `(#:configure-flags '("--without-examples")
3068 #:phases
3069 (modify-phases %standard-phases
bdcb287e
MR
3070 (add-before 'configure 'setenv
3071 (lambda _
3072 (setenv "GUILE_AUTO_COMPILE" "0")
3073 #t))))))))
c99f32b9 3074
2135610c
LC
3075(define-public guile-jpeg
3076 (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
3077 (revision "0"))
3078 (package
3079 (name "guile-jpeg")
3080 (version (git-version "0.0" revision commit))
3081 (home-page "https://gitlab.com/wingo/guile-jpeg")
3082 (source (origin
3083 (method git-fetch)
3084 (uri (git-reference (url home-page)
3085 (commit commit)))
3086 (sha256
3087 (base32
3088 "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
3089 (file-name (git-file-name name version))
3090 (modules '((guix build utils)))
3091 (snippet
3092 '(begin
3093 ;; Install .go files in the right place.
3094 (substitute* "Makefile.am"
3095 (("/ccache") "/site-ccache"))
3096 #t))))
3097 (build-system gnu-build-system)
3098 (native-inputs
3099 `(("autoconf" ,autoconf)
3100 ("automake" ,automake)
3101 ("pkg-config" ,pkg-config)
3102 ("guile" ,guile-2.2)))
3103 (synopsis "JPEG file parsing library for Guile")
3104 (description
3105 "Guile-JPEG is a Scheme library to parse JPEG image files and to
3106perform geometrical transforms on JPEG images.")
3107 (license license:gpl3+))))
e8c2da41
AS
3108
3109(define-public nomad
3110 (package
3111 (name "nomad")
0e5a68a2 3112 (version "0.2.0-alpha-100-g6a565d3")
e8c2da41
AS
3113 (source (origin
3114 (method git-fetch)
3115 (uri (git-reference
0e5a68a2 3116 (url "https://git.savannah.gnu.org/git/nomad.git/")
e8c2da41
AS
3117 (commit version)))
3118 (file-name (git-file-name name version))
3119 (sha256
3120 (base32
0e5a68a2 3121 "0anmprm63a88kii251rl296v1g4iq62r6n4nssx5jbc0hzkknanz"))))
e8c2da41
AS
3122 (build-system gnu-build-system)
3123 (native-inputs
3124 `(("autoconf" ,autoconf)
3125 ("automake" ,automake)
3126 ("bash" ,bash)
3127 ("pkg-config" ,pkg-config)
3128 ("libtool" ,libtool)
3129 ("guile" ,guile-2.2)
5f1553ce
AS
3130 ("glib:bin" ,glib "bin")
3131 ("texinfo" ,texinfo)
0e5a68a2 3132 ("gettext" ,gnu-gettext)
5f1553ce 3133 ("perl" ,perl)))
e8c2da41 3134 (inputs
0e5a68a2
MR
3135 `(;; Guile
3136 ("guile" ,guile-2.2)
19cf8342 3137 ("guile-lib" ,guile2.2-lib)
19cf8342 3138 ("guile-readline" ,guile2.2-readline)
a987f128 3139 ("guile-gcrypt" ,guile2.2-gcrypt)
e8c2da41 3140 ("gnutls" ,gnutls)
0e5a68a2 3141 ("g-golf" ,g-golf)
e8c2da41
AS
3142 ("shroud" ,shroud)
3143 ("emacsy" ,emacsy-minimal)
0e5a68a2 3144 ;; Gtk
e8c2da41
AS
3145 ("glib" ,glib)
3146 ("dbus-glib" ,dbus-glib)
0e5a68a2 3147 ("glib-networking" ,glib-networking)
e8c2da41 3148 ("gtk+" ,gtk+)
a987f128 3149 ("gtk+:bin" ,gtk+ "bin")
e8c2da41 3150 ("webkitgtk" ,webkitgtk)
0e5a68a2
MR
3151 ("gtksourceview" ,gtksourceview)
3152 ("vte" ,vte)
3153 ;; Gstreamer
a987f128
MR
3154 ("gstreamer" ,gstreamer)
3155 ("gst-plugins-base" ,gst-plugins-base)
3156 ("gst-plugins-good" ,gst-plugins-good)
3157 ("gst-plugins-bad" ,gst-plugins-bad)
3158 ("gst-plugins-ugly" ,gst-plugins-ugly)
0e5a68a2
MR
3159 ;; Util
3160 ("xorg-server" ,xorg-server)))
e8c2da41
AS
3161 (arguments
3162 `(#:modules ((guix build gnu-build-system)
3163 (guix build utils)
3164 (ice-9 popen)
3165 (ice-9 rdelim)
3166 (srfi srfi-26))
3167 #:phases
3168 (modify-phases %standard-phases
3169 (add-before 'check 'start-xorg-server
3170 (lambda* (#:key inputs #:allow-other-keys)
3171 ;; The test suite requires a running X server.
3172 (system (format #f "~a/bin/Xvfb :1 &"
3173 (assoc-ref inputs "xorg-server")))
3174 (setenv "DISPLAY" ":1")
3175 #t))
3176 (add-after 'install 'wrap-binaries
3177 (lambda* (#:key inputs outputs #:allow-other-keys)
0e5a68a2
MR
3178 (let* ((out (assoc-ref outputs "out"))
3179 (effective (read-line (open-pipe*
3180 OPEN_READ
3181 "guile" "-c"
3182 "(display (effective-version))")))
3183 (gst-plugins (map (lambda (i)
3184 (string-append (assoc-ref inputs i)
3185 "/lib/gstreamer-1.0"))
3186 `("gstreamer"
3187 "gst-plugins-base"
3188 "gst-plugins-good"
3189 "gst-plugins-bad"
3190 "gst-plugins-ugly")))
3191 (out-append (lambda (. args)
3192 (apply string-append out args)))
3193 (gi-path (out-append "/lib/girepository-1.0"))
3194 (load-path (out-append "/share/guile/site/" effective))
3195 (comp-path (out-append "/lib/guile/"
3196 effective "/site-ccache"))
3197 (ext-path (out-append "/libexec/nomad")))
3198 (wrap-program (string-append out "/bin/nomad")
3199 `("GUILE_LOAD_PATH" ":" prefix
3200 (,load-path
3201 ,(getenv "GUILE_LOAD_PATH")))
3202 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
3203 (,comp-path
3204 ,(getenv "GUILE_LOAD_COMPILED_PATH")))
3205 `("GI_TYPELIB_PATH" ":" prefix
3206 (,gi-path ,(getenv "GI_TYPELIB_PATH")))
3207 `("GIO_EXTRA_MODULES" ":" prefix
3208 (,(getenv "GIO_EXTRA_MODULES")))
3209 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix ,gst-plugins)
3210 `("NOMAD_WEB_EXTENSION_DIR" ":" prefix (,ext-path)))
e8c2da41
AS
3211 #t))))))
3212 (home-page "https://savannah.nongnu.org/projects/nomad/")
3213 (synopsis "Extensible Web Browser in Guile Scheme")
a987f128
MR
3214 (description "Nomad is a Emacs-like web browser that consists of a modular
3215feature-set, fully programmable in Guile Scheme.")
e8c2da41 3216 (license license:gpl3+)))
248965c9
RW
3217
3218(define-public guile-cv
3219 (package
3220 (name "guile-cv")
3221 (version "0.2.1")
3222 (source (origin
3223 (method url-fetch)
3224 (uri (string-append "mirror://gnu/guile-cv/guile-cv-"
3225 version ".tar.gz"))
3226 (sha256
3227 (base32
3228 "0qdf0s2h1xj5lbhnc1pfw69i3zg08pqy2y6869b92ydfis8r82j9"))))
3229 (build-system gnu-build-system)
3230 (arguments
3231 `(#:phases
3232 (modify-phases %standard-phases
3233 (add-after 'unpack 'prepare-build
3234 (lambda* (#:key inputs outputs #:allow-other-keys)
3235 (substitute* "configure"
3236 (("SITEDIR=\"\\$datadir/guile-cv\"")
3237 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
3238 (("SITECCACHEDIR=\"\\$libdir/guile-cv/")
3239 "SITECCACHEDIR=\"$libdir/"))
3240 (substitute* "cv/init.scm"
3241 (("\\(dynamic-link \"libvigra_c\"\\)")
3242 (string-append "(dynamic-link \""
3243 (assoc-ref inputs "vigra-c")
3244 "/lib/libvigra_c\")"))
3245 (("\\(dynamic-link \"libguile-cv\"\\)")
3246 (format #f "~s"
3247 `(dynamic-link
3248 (format #f "~alibguile-cv"
3249 (if (getenv "GUILE_CV_UNINSTALLED")
3250 ""
3251 ,(format #f "~a/lib/"
3252 (assoc-ref outputs "out"))))))))
3253 (setenv "GUILE_CV_UNINSTALLED" "1")
3254 ;; Only needed to satisfy the configure script.
3255 (setenv "LD_LIBRARY_PATH"
3256 (string-append (assoc-ref inputs "vigra-c") "/lib"))
3257 #t)))))
3258 (inputs
3259 `(("vigra" ,vigra)
3260 ("vigra-c" ,vigra-c)
3261 ("guile" ,guile-2.2)))
3262 (native-inputs
3263 `(("texlive" ,(texlive-union (list texlive-booktabs
3264 texlive-lm
3265 texlive-siunitx
3266 texlive-standalone
3267 texlive-xcolor
3268 texlive-fonts-iwona)))
3269 ("pkg-config" ,pkg-config)))
3270 (propagated-inputs
3271 `(("guile-lib" ,guile-lib)))
3272 (home-page "https://www.gnu.org/software/guile-cv/")
3273 (synopsis "Computer vision library for Guile")
3274 (description "Guile-CV is a Computer Vision functional programming library
3275for the Guile Scheme language. It is based on Vigra (Vision with Generic
3276Algorithms), a C++ image processing and analysis library. Guile-CV contains
3277bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
3278enriched with pure Guile Scheme algorithms, all accessible through a nice,
3279clean and easy to use high level API.")
3280 (license license:gpl3+)))
7ff157c1
RW
3281
3282(define-public guile-ffi-fftw
353fb48f
RW
3283 (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
3284 (revision "2"))
7ff157c1
RW
3285 (package
3286 (name "guile-ffi-fftw")
3287 (version (git-version "0" revision commit))
3288 (source (origin
3289 (method git-fetch)
3290 (uri (git-reference
b0e7b699 3291 (url "https://github.com/lloda/guile-ffi-fftw")
7ff157c1
RW
3292 (commit commit)))
3293 (file-name (git-file-name "guile-ffi-fftw" version))
3294 (sha256
3295 (base32
353fb48f 3296 "08j40a5p6a8pgvhffmzb5rfdnrav2mksy3gfjkdqy93jfj1z5afg"))))
7ff157c1
RW
3297 (build-system guile-build-system)
3298 (arguments
3299 `(#:source-directory "mod"
3300 #:phases
3301 (modify-phases %standard-phases
3302 (add-after 'unpack 'prepare-build
3303 (lambda* (#:key inputs #:allow-other-keys)
3304 (substitute* "mod/ffi/fftw.scm"
3305 (("\\(getenv \"GUILE_FFI_FFTW_LIBFFTW3_PATH\"\\)")
3306 (format #f "\"~a/lib\"" (assoc-ref inputs "fftw"))))
3307 #t))
3308 (add-after 'build 'check
3309 (lambda _
3310 (invoke "guile" "-L" "mod"
3311 "-s" "test/test-ffi-fftw.scm"))))))
3312 (inputs
3313 `(("fftw" ,fftw)
3314 ("guile" ,guile-2.2)))
3315 (home-page "https://github.com/lloda/guile-ffi-fftw/")
3316 (synopsis "Access FFTW through Guile's FFI")
3317 (description "This is a minimal set of Guile FFI bindings for the FFTW
3318library's ‘guru interface’. It provides two functions: @code{fftw-dft! rank
3319sign in out} and @code{fftw-dft rank sign in}. These bindings being minimal,
3320there is no support for computing & reusing plans, or split r/i transforms, or
3321anything other than straight complex DFTs.")
353fb48f 3322 (license license:lgpl3+))))
f9ec89f4
TS
3323
3324(define-public srfi-64-driver
3325 (package
3326 (name "srfi-64-driver")
3327 (version "0.1")
3328 (source (origin
3329 (method url-fetch)
3330 (uri (string-append "https://files.ngyro.com/srfi-64-driver/"
3331 "srfi-64-driver-" version ".tar.gz"))
3332 (sha256
3333 (base32
3334 "188b6mb7sjjg0a8zldikinglf40ky8mg8rwh5768gjmch6gkk3ph"))))
3335 (build-system gnu-build-system)
3336 (arguments
3337 `(#:tests? #f
3338 #:phases
3339 (modify-phases %standard-phases
3340 (delete 'build))))
3341 (native-inputs
3342 `(("pkg-config" ,pkg-config)))
3343 (inputs
3344 `(("guile" ,guile-2.2)))
3345 (home-page "https://ngyro.com/software/srfi-64-driver.html")
3346 (synopsis "Automake test driver for SRFI 64 test suites")
3347 (description "This package provides an Automake test driver that can
3348run SRFI 64 test suites. It gives Automake insight into the individual
3349tests being run, resulting clearer and more specific output.")
3350 (license license:gpl3+)))
f6bf4b2c
TS
3351
3352(define-public guile-semver
3353 (package
3354 (name "guile-semver")
85ced665 3355 (version "0.1.1")
f6bf4b2c
TS
3356 (source (origin
3357 (method url-fetch)
3358 (uri (string-append "https://files.ngyro.com/guile-semver/"
3359 "guile-semver-" version ".tar.gz"))
3360 (sha256
3361 (base32
85ced665 3362 "109p4n39ln44cxvwdccf9kgb96qx54makvd2ir521ssz6wchjyag"))))
f6bf4b2c
TS
3363 (build-system gnu-build-system)
3364 (native-inputs
85ced665 3365 `(("pkg-config" ,pkg-config)))
f6bf4b2c
TS
3366 (inputs
3367 `(("guile" ,guile-2.2)))
3368 (home-page "https://ngyro.com/software/guile-semver.html")
3369 (synopsis "Semantic Versioning (SemVer) for Guile")
3370 (description "This Guile library provides tools for reading,
3371comparing, and writing Semantic Versions. It also includes ranges in
3372the style of the Node Package Manager (NPM).")
3373 (license license:gpl3+)))
d67fa5c8 3374
b488b64a
MB
3375(define-public guile3.0-semver
3376 (package
3377 (inherit guile-semver)
3378 (name "guile3.0-semver")
3379 (inputs
3380 `(("guile" ,guile-3.0)))))
3381
d67fa5c8
LC
3382(define-public guile-hashing
3383 (package
3384 (name "guile-hashing")
3385 (version "1.2.0")
3386 (home-page "https://github.com/weinholt/hashing")
3387 (source (origin
3388 (method git-fetch)
3389 (uri (git-reference
3390 (url home-page)
3391 (commit (string-append "v" version))))
3392 (file-name (git-file-name name version))
3393 (sha256
3394 (base32
3395 "1362d3lmpv7slmv1zmr9wy8panq9sjr9787gc2hagd646mpsfpkl"))))
3396 (build-system guile-build-system)
3397 (arguments
3398 `(#:modules ((guix build guile-build-system)
3399 (guix build utils)
3400 (srfi srfi-26)
3401 (ice-9 ftw))
3402 #:implicit-inputs? #f ;needs nothing but Guile
3403 #:phases (modify-phases %standard-phases
3404 (add-before 'build 'move-sls-files
3405 (lambda _
3406 ;; Move the source under hashing/ in order to match
3407 ;; module names, and rename .sls files to .scm.
3408 (define (target file)
3409 (string-append "hashing/" file))
3410
3411 (define (sls->scm sls)
3412 (string-append (string-drop-right sls 4)
3413 ".scm"))
3414
3415 (mkdir "hashing")
3416 (for-each (lambda (file)
3417 (rename-file file (sls->scm file)))
3418 (find-files "." "\\.sls$"))
3419 (for-each (lambda (file)
3420 (rename-file file (target file)))
3421 (scandir "." (cut string-suffix? ".scm" <>)))
3422 (rename-file "private" "hashing/private")
3423 #t)))))
3424 (native-inputs
b6bee63b 3425 `(("guile" ,guile-3.0)))
d67fa5c8
LC
3426 (synopsis "Cryprographic hash functions implemented in Scheme")
3427 (description
3428 "The @code{(hashing @dots{})} modules implement cryptographic hash
3429functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
3430SHA-512).")
3431 (license license:expat)))
f918a8d9 3432
b6bee63b 3433(define-public guile2.2-hashing
f918a8d9
LC
3434 (package
3435 (inherit guile-hashing)
b6bee63b 3436 (name "guile2.2-hashing")
f918a8d9 3437 (native-inputs
318e1a93 3438 `(("guile" ,guile-2.2)))))
ef2b1d2c 3439
b6bee63b
LC
3440(define-public guile3.0-hashing
3441 (deprecated-package "guile3.0-hashing" guile-hashing))
3442
60c9264b
LC
3443(define-public guile-packrat
3444 (package
3445 (name "guile-packrat")
3446 (version "0.1.1")
3447 (home-page "https://github.com/weinholt/packrat")
3448 (source (origin
3449 (method git-fetch)
3450 (uri (git-reference
3451 (url home-page)
3452 (commit (string-append "v" version))))
3453 (file-name (git-file-name name version))
3454 (sha256
3455 (base32
3456 "1aga17164fkhbgllqc7ni6fk5zl8mkmgkl5zcsy67x7ngpyalbby"))))
3457 (build-system guile-build-system)
3458 (arguments
3459 `(#:implicit-inputs? #f ;needs nothing but Guile
3460 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3461 #:not-compiled-file-regexp "/extensible\\.scm$"
3462 #:phases (modify-phases %standard-phases
3463 (add-before 'build 'no-srfi-23
3464 (lambda _
3465 (substitute* "packrat.sls"
3466 (("\\(srfi :23 error\\)")
3467 (object->string '(only (guile) error))))
3468 #t)))))
3469 (native-inputs
3470 `(("guile" ,guile-3.0)))
3471 (synopsis "Packrat parser library in R6RS Scheme")
3472 (description
3473 "This is an R6RS Scheme adaptation of the
3474@uref{https://bford.info/packrat/, packrat parsing}. Packrat parsing is a
3475memoizing, backtracking, recursive-descent parsing technique that runs in time
3476and space linear in the size of the input text.")
3477 (license license:expat)))
3478
97a77eab
LC
3479(define-public guile-ac-d-bus
3480 (package
3481 (name "guile-ac-d-bus")
933fdd55 3482 (version "1.0.0-beta.0")
97a77eab
LC
3483 (home-page "https://gitlab.com/weinholt/ac-d-bus/")
3484 (source (origin
3485 (method git-fetch)
3486 (uri (git-reference
3487 (url home-page)
3488 (commit (string-append "v" version))))
3489 (file-name (git-file-name name version))
3490 (sha256
3491 (base32
933fdd55 3492 "0rl809qimhgz6b0rixakb42r2l4g53jr09a2g0s1hxgab0blz0kb"))))
97a77eab
LC
3493 (build-system guile-build-system)
3494 (arguments
3495 `(#:implicit-inputs? #f ;needs nothing but Guile
3496 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3497 #:phases (modify-phases %standard-phases
3498 (add-before 'build 'adjust-for-guile
3499 (lambda _
3500 ;; Adjust source file names for Guile.
3501 (define (guile-sls->sls file)
3502 (string-append (string-drop-right
3503 file (string-length ".guile.sls"))
3504 ".sls"))
3505
3506 ;; Remove files targeting other implementations:
3507 ;; *.mosh.sls, etc.
3508 (for-each delete-file
3509 (find-files
3510 "compat"
3511 (lambda (file stat)
3512 (not (string-contains file ".guile.")))))
3513
3514 ;; Rename *.guile.sls to *.sls so the ".guile" bit does
3515 ;; not appear in .go file names.
3516 (for-each (lambda (file)
3517 (rename-file file (guile-sls->sls file)))
3518 (find-files "compat" "\\.guile\\.sls"))
3519
3520 ;; Move directories under d-bus/ to match module names.
3521 (mkdir "d-bus")
3522 (for-each (lambda (directory)
3523 (rename-file directory
3524 (string-append "d-bus/"
3525 directory)))
3526 '("compat" "protocol"))
3527
3528 #t)))))
3529 (native-inputs
3530 `(("guile" ,guile-3.0)))
3531 (propagated-inputs
3532 `(("guile-packrat" ,guile-packrat)))
3533 (synopsis "D-Bus protocol implementation in R6RS Scheme")
3534 (description
3535 "AC/D-Bus is an implementation of the D-Bus wire protocol. D-Bus is an
3536interprocess communication protocol popular on GNU/Linux systems to
3537communicate with a variety of services. Originally designed for desktop
3538environments, it is now used by programs like VLC media player, BlueZ,
3539NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit,
3540gnome-keyring, and many more.")
3541 (license license:expat)))
3542
ef2b1d2c
RW
3543(define-public guile-webutils
3544 (let ((commit "8541904f761066dc9c27b1153e9a838be9a55299")
3545 (revision "0"))
3546 (package
3547 (name "guile-webutils")
3548 (version (git-version "0.1" revision commit))
3549 (source (origin
3550 (method git-fetch)
3551 (uri (git-reference
3552 (url "https://notabug.org/cwebber/guile-webutils.git")
3553 (commit commit)))
3554 (file-name (git-file-name name version))
3555 (sha256
3556 (base32
0a76d7a9
RW
3557 "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64"))
3558 (modules '((guix build utils)))
3559 (snippet
3560 '(begin
3561 ;; Allow builds with Guile 3.0.
3562 (substitute* "configure.ac"
3563 (("2\\.2 2\\.0")
3564 "3.0 2.2 2.0"))
3565 #t))))
ef2b1d2c
RW
3566 (build-system gnu-build-system)
3567 (native-inputs
3568 `(("autoconf" ,autoconf)
3569 ("automake" ,automake)
3570 ("pkg-config" ,pkg-config)
3571 ("texinfo" ,texinfo)))
3572 (inputs
0a76d7a9 3573 `(("guile" ,guile-3.0)))
ef2b1d2c
RW
3574 (propagated-inputs
3575 `(("guile-irregex" ,guile-irregex)
3576 ("guile-gcrypt" ,guile-gcrypt)))
3577 (home-page "https://notabug.org/cwebber/guile-webutils")
3578 (synopsis "Web application authoring utilities for Guile")
3579 (description
3580 "This package provides tooling to write web applications in Guile, such
3581as signed sessions, multipart message support, etc.")
3582 (license license:gpl3+))))
5479cef8 3583
0a76d7a9
RW
3584(define-public guile2.2-webutils
3585 (package
3586 (inherit guile-webutils)
3587 (name "guile2.2-webutils")
3588 (inputs
3589 `(("guile" ,guile-2.2)))
3590 (propagated-inputs
3591 `(("guile-irregex" ,guile2.2-irregex)
3592 ("guile-gcrypt" ,guile2.2-gcrypt)))))
3593
5479cef8
RW
3594(define-public guile-lens
3595 (let ((commit "14b15d07255f9d3f55d40a3b750d13c9ee3a154f")
3596 (revision "0"))
3597 (package
3598 (name "guile-lens")
3599 (version (git-version "0.1" revision commit))
3600 (source (origin
3601 (method git-fetch)
3602 (uri (git-reference
3603 (url "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3604 (commit commit)))
3605 (file-name (git-file-name name version))
3606 (sha256
3607 (base32
3608 "0w8jzqyla56yrgj7acsgd4nspyir6zgp3vgxid4xmwhg9wmf1ida"))))
3609 (build-system gnu-build-system)
3610 (arguments
3611 '(#:phases
3612 (modify-phases %standard-phases
3613 (add-after 'unpack 'run-hall
3614 (lambda _
3615 (setenv "HOME" "/tmp") ; for ~/.hall
3616 (invoke "hall" "dist" "-x"))))))
3617 (native-inputs
3618 `(("autoconf" ,autoconf)
3619 ("automake" ,automake)
ca24b3fb 3620 ("guile" ,guile-3.0)
5479cef8
RW
3621 ("guile-hall" ,guile-hall)
3622 ("pkg-config" ,pkg-config)
3623 ("texinfo" ,texinfo)))
3624 (home-page "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3625 (synopsis "Composable lenses for data structures in Guile")
3626 (description
3627 "Guile-Lens is a library implementing lenses in Guile. The library is
3628currently a re-implementation of the lentes library for Clojure. Lenses
3629provide composable procedures, which can be used to focus, apply functions
3630over, or update a value in arbitrary data structures.")
3631 (license license:gpl3+))))
69bb61f1 3632
ca24b3fb
RW
3633(define-public guile2.2-lens
3634 (package
3635 (inherit guile-lens)
3636 (name "guile2.2-lens")
3637 (native-inputs
3638 `(("guile" ,guile-2.2)
3639 ,@(alist-delete "guile" (package-native-inputs guile-lens))))))
3640
69bb61f1 3641(define-public guile-xapian
d10e7a34
RW
3642 (package
3643 (name "guile-xapian")
3644 (version "0.1.0")
3645 (home-page "https://git.systemreboot.net/guile-xapian")
3646 (source
3647 (origin
3648 (method git-fetch)
3649 (uri (git-reference (url home-page)
3650 (commit (string-append "v" version))))
3651 (file-name (git-file-name name version))
3652 (sha256
3653 (base32
3654 "16k61f1jn3g48jaf3730b9l0izr5j933jzyri73nmcnjd09gm35i"))))
3655 (build-system gnu-build-system)
3656 (arguments
3657 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
3658 (inputs
93989aed 3659 `(("guile" ,guile-3.0)
d10e7a34
RW
3660 ("xapian" ,xapian)
3661 ("zlib" ,zlib)))
3662 (native-inputs
3663 `(("autoconf" ,autoconf)
3664 ("autoconf-archive" ,autoconf-archive)
3665 ("automake" ,automake)
3666 ("libtool" ,libtool)
3667 ("pkg-config" ,pkg-config)
3668 ("swig" ,swig)))
3669 (synopsis "Guile bindings for Xapian")
3670 (description "@code{guile-xapian} provides Guile bindings for Xapian, a
69bb61f1
AI
3671search engine library. Xapian is a highly adaptable toolkit which allows
3672developers to easily add advanced indexing and search facilities to their own
3673applications. It has built-in support for several families of weighting
3674models and also supports a rich set of boolean query operators.")
d10e7a34 3675 (license license:gpl2+)))
69bb61f1 3676
93989aed 3677(define-public guile2.2-xapian
69bb61f1
AI
3678 (package
3679 (inherit guile-xapian)
93989aed 3680 (name "guile2.2-xapian")
69bb61f1 3681 (inputs
93989aed 3682 `(("guile" ,guile-2.2)
69bb61f1 3683 ,@(alist-delete "guile" (package-inputs guile-xapian))))))
be789065 3684
93989aed
LC
3685(define-public guile3.0-xapian
3686 (deprecated-package "guile3.0-xapian" guile-xapian))
3687
be789065
AS
3688(define-public guile-torrent
3689 (package
3690 (name "guile-torrent")
3691 (version "0.1.3")
3692 (source (origin (method git-fetch)
3693 (uri (git-reference
3694 (url
3695 "https://github.com/o-nly/torrent.git")
3696 (commit version)))
3697 (file-name (git-file-name name version))
3698 (sha256
3699 (base32
3700 "1yiagi55ncq1x7s9n7salzywjm4l96y3n7y3s47a9anvz87mrmim"))))
3701 (build-system gnu-build-system)
3702 (native-inputs
3703 `(("autoconf" ,autoconf)
3704 ("automake" ,automake)
3705 ("guile" ,guile-2.2)
3706 ("texinfo" ,texinfo)
3707 ("perl" ,perl)
3708 ("pkg-config" ,pkg-config)))
3709 (propagated-inputs
3710 `(("guile-gcrypt" ,guile-gcrypt)))
3711 (home-page "https://github.com/o-nly/torrent")
3712 (synopsis "Torrent library for GNU Guile")
3713 (description "This package provides facilities for working with
3714@code{.torrent} or metainfo files. Implements a bencode reader and writer
3715according to Bitorrent BEP003.")
3716 (license license:gpl3+)))
3c0456c6
RW
3717
3718(define-public guile-irc
3719 (let ((commit "375d3bde9c6ae7ccc9d7cc65817966b6fda8f26a")
3720 (revision "0"))
3721 (package
3722 (name "guile-irc")
3723 (version (git-version "0.3.0" revision commit))
3724 (source (origin
3725 (method git-fetch)
3726 (uri (git-reference
b0e7b699 3727 (url "https://github.com/rekado/guile-irc")
3c0456c6
RW
3728 (commit commit)))
3729 (file-name (git-file-name name version))
3730 (sha256
3731 (base32
3732 "113lcckcywrz9060w1c3fnvr8d7crdsjgsv4h47hgmr1slgadl4y"))))
3733 (build-system gnu-build-system)
3734 (arguments
3735 `(#:configure-flags '("--enable-gnutls=yes")))
3736 (native-inputs
3737 `(("autoconf" ,autoconf)
3738 ("automake" ,automake)
3739 ("texinfo" ,texinfo)))
3740 (inputs
3741 `(("gnutls" ,gnutls)
b4412382 3742 ("guile" ,guile-3.0)))
3c0456c6
RW
3743 (home-page "https://github.com/rekado/guile-irc")
3744 (synopsis "IRC library for Guile")
3745 (description "This package provides a Guile library for @dfn{Internet
3746Relay Chat} (IRC).")
3747 ;; Some file headers incorrectly say LGPLv2+.
3748 (license license:lgpl2.1+))))
8ffc20ef 3749
b141e1d5 3750(define-public guile-websocket
8ffc20ef
ES
3751 (let ((commit "c854e0f84a40d972cbd532bbb89c97ca0126a7cf"))
3752 (package
b141e1d5 3753 (name "guile-websocket")
8ffc20ef
ES
3754 (version "0.1")
3755 (source
3756 (origin
3757 (method git-fetch)
3758 (uri (git-reference
3759 (url "git://dthompson.us/guile-websocket.git")
3760 (commit commit)))
3761 (file-name (git-file-name name version))
3762 (sha256
3763 (base32
3764 "1hymvsfrmq9qxr5cxnsgdz7y757yp1cpsgxmdp3f5wxxxpqgsmzx"))))
3765 (build-system gnu-build-system)
3766 (arguments
3767 '(#:make-flags
3768 '("GUILE_AUTO_COMPILE=0")
3769 #:phases
3770 (modify-phases %standard-phases
3771 ;; The package was developed for Guile 2.0 and has this version
3772 ;; hardcoded in the configure.ac and Makefile.am files. Substitute
3773 ;; 3.0 instead so it can support Guile 3.0.
3774 (add-after 'unpack 'update-guile-version
3775 (lambda _
3776 (substitute* "configure.ac"
3777 (("2.0.9") "3.0.0"))
3778 (substitute* "Makefile.am"
cea91813
LC
3779 (("2.0") "3.0")
3780
3781 ;; Install .go files where they belong.
3782 (("/ccache") "/site-ccache"))
8ffc20ef
ES
3783 #t)))))
3784 (native-inputs
3785 `(("autoconf" ,autoconf)
3786 ("automake" ,automake)))
3787 (inputs
b141e1d5 3788 `(("guile" ,guile-3.0)))
8ffc20ef
ES
3789 (synopsis "Websocket server/client for Guile")
3790 (description "Guile-websocket provides an implementation of the
3791WebSocket protocol as defined by RFC 6455.")
3792 (home-page "https://git.dthompson.us/guile-websocket.git")
3793 (license license:lgpl3+))))
b141e1d5
LC
3794
3795(define-public guile3.0-websocket
3796 (deprecated-package "guile3.0-websocket" guile-websocket))
c08f235b
JL
3797
3798(define-public guile-rdf
3799 (package
3800 (name "guile-rdf")
3801 (version "1.0")
3802 (source
3803 (origin
3804 (method git-fetch)
3805 (uri (git-reference
3806 (url "https://framagit.org/tyreunom/guile-rdf")
3807 (commit version)))
3808 (file-name (git-file-name name version))
3809 (sha256
3810 (base32
3811 "0dwn3app1fscbpmpgvjs5jy1y0gwy3j5gdx8br79af6a88zjlnqf"))))
3812 (build-system gnu-build-system)
3813 (arguments
3814 `(#:tests? #f)); tests require network
3815 (inputs
3816 `(("guile" ,guile-3.0)))
3817 (native-inputs
3818 `(("automake" ,automake)
3819 ("autoconf" ,autoconf)
3820 ("pkg-config" ,pkg-config)
3821 ("texinfo" ,texinfo)))
3822 (home-page "https://framagit.org/tyreunom/guile-rdf")
3823 (synopsis "Guile implementation of the RDF abstract and concrete syntaxes")
3824 (description "Guile RDF is an implementation of the RDF (Resource Description
3825Framework) format defined by the W3C for GNU Guile. RDF structures include
3826triples (facts with a subject, a predicate and an object), graphs which are
3827sets of triples, and datasets, which are collections of graphs.
3828
3829RDF specifications include the specification of concrete syntaxes and of
3830operations on graphs. This library implements some basic functionalities,
3831such as parsing and producing turtle and nquads syntax, as well as
3832manipulating graphs and datasets.")
3833 (license license:gpl3+)))
d1fa24af
JL
3834
3835(define-public guile-jsonld
3836 (package
3837 (name "guile-jsonld")
3838 (version "1.0.1")
3839 (source
3840 (origin
3841 (method git-fetch)
3842 (uri (git-reference
3843 (url "https://framagit.org/tyreunom/guile-jsonld")
3844 (commit version)))
3845 (file-name (git-file-name name version))
3846 (sha256
3847 (base32
3848 "0zfn3nwlz6xzip1j8xbj768dc299r037cfc81bk6kwl9xhzkjbrg"))))
3849 (build-system gnu-build-system)
3850 (arguments
3851 `(#:tests? #f)); require network
3852 (propagated-inputs
3853 `(("guile-gnutls" ,gnutls)
3854 ("guile-json" ,guile-json-3)
3855 ("guile-rdf" ,guile-rdf)))
3856 (inputs
3857 `(("guile" ,guile-3.0)))
3858 (native-inputs
3859 `(("automake" ,automake)
3860 ("autoconf" ,autoconf)
3861 ("pkg-config" ,pkg-config)
3862 ("texinfo" ,texinfo)))
3863 (home-page "https://framagit.org/tyreunom/guile-jsonld")
3864 (synopsis "Guile implementation of the JsonLD API specification")
3865 (description "Guile JsonLD is an implementation of the JsonLD (Json for
3866Linked Data) API defined by the W3C for GNU Guile. It allows you to express links
3867between data, in a way that is very similar to WikiData or RDF for instance.
3868An object can have relations (in the form of an IRI) that relates it to one or
3869more objects or strings, represented by a Json object or an IRI.")
3870 (license license:gpl3+)))
a684e6e2
MB
3871
3872(define-public guile-struct-pack
3873 (package
3874 (name "guile-struct-pack")
3875 (version "1.1.1")
3876 (source
3877 (origin
3878 (method git-fetch)
3879 (uri (git-reference
3880 (url "https://github.com/weinholt/struct-pack")
3881 (commit (string-append "v" version))))
3882 (file-name (git-file-name name version))
3883 (sha256
3884 (base32 "0hd72m821pahjphzyjn26i55542v8makr55xzjll2cycja4wsbc1"))))
3885 (build-system guile-build-system)
3886 (arguments
3887 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3888 #:modules ((guix build guile-build-system)
3889 (guix build utils)
3890 (srfi srfi-26)
3891 (ice-9 ftw))
3892 #:phases (modify-phases %standard-phases
3893 (add-before 'build 'move-sls-files
3894 (lambda _
3895 ;; Move files under a struct/ directory to reflect the
3896 ;; module hierarchy.
3897 (define dst-folder "struct")
3898 (define (target file)
3899 (string-append dst-folder "/" file))
3900 (define files
3901 (scandir "." (negate (cut member <> '("." "..")))))
3902 (mkdir dst-folder)
3903 (for-each (lambda (file)
3904 (rename-file file (target file)))
3905 files)
3906 #t)))))
3907 (native-inputs
3908 `(("guile" ,guile-3.0)))
3909 (home-page "https://github.com/weinholt/struct-pack")
3910 (synopsis "R6RS library for working with packed byte structures")
3911 (description
3912 "This is an R6RS library for working with packed byte structures. It is
3913similar to struct in Python or pack and unpack in Perl.")
3914 (license license:expat)))
199da208
MB
3915
3916(define-public guile-machine-code
3917 (package
3918 (name "guile-machine-code")
3919 (version "2.1.0")
3920 (source
3921 (origin
3922 (method git-fetch)
3923 (uri (git-reference
3924 (url "https://github.com/weinholt/machine-code")
3925 (commit (string-append "v" version))))
3926 (file-name (git-file-name name version))
3927 (sha256
3928 (base32 "0wzj3caj2jypzyjqfkfqkvr3kkbjabsnhldv9kvnx9w9qnria5yd"))))
3929 (build-system guile-build-system)
3930 (arguments
3931 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3932 #:modules ((guix build guile-build-system)
3933 (guix build utils)
3934 (srfi srfi-26)
3935 (ice-9 ftw))
3936 #:phases (modify-phases %standard-phases
3937 (add-before 'build 'move-sls-files
3938 (lambda _
3939 ;; Move files under a struct/ directory to reflect the
3940 ;; module hierarchy.
3941 (define dst-folder "machine-code")
3942 (define (target file)
3943 (string-append dst-folder "/" file))
3944 (define files
3945 (scandir "." (negate (cut member <> '("." "..")))))
3946 (mkdir dst-folder)
3947 (for-each (lambda (file)
3948 (rename-file file (target file)))
3949 files)
3950 #t)))))
3951 (native-inputs
3952 `(("guile" ,guile-3.0)))
3953 (propagated-inputs
3954 `(("guile-struct-pack" ,guile-struct-pack)))
3955 (home-page "https://github.com/weinholt/machine-code")
3956 (synopsis "Tools that relate to machine code and object formats")
3957 (description
3958 "This project is about the development of tools that relate to machine
3959code and object formats; for all architectures. Here you'll find libraries
3960for working with binary code: assembly, disassembly, instruction tables,
3961object formats and related areas.")
3962 (license license:expat)))
3826288f
MB
3963
3964(define-public guile-laesare
3965 (package
3966 (name "guile-laesare")
3967 (version "1.0.0")
3968 (source
3969 (origin
3970 (method git-fetch)
3971 (uri (git-reference
3972 (url "https://github.com/weinholt/laesare")
3973 (commit (string-append "v" version))))
3974 (file-name (git-file-name name version))
3975 (sha256
3976 (base32 "15q619gzw717r8r1ql23zfdaibpnp9qqs96032vdc3rj74msxc92"))))
3977 (build-system guile-build-system)
3978 (arguments
3979 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3980 #:modules ((guix build guile-build-system)
3981 (guix build utils)
3982 (srfi srfi-26)
3983 (ice-9 ftw))
3984 #:phases (modify-phases %standard-phases
3985 (add-before 'build 'move-sls-files
3986 (lambda _
3987 ;; Move files under a laesare directory to reflect
3988 ;; the module hierarchy.
3989 (define dst-folder "laesare")
3990 (define (target file)
3991 (string-append dst-folder "/" file))
3992 (define files
3993 (scandir "." (negate (cut member <> '("." "..")))))
3994 (mkdir dst-folder)
3995 (for-each (lambda (file)
3996 (rename-file file (target file)))
3997 files)
3998 #t)))))
3999 (native-inputs
4000 `(("guile" ,guile-3.0)))
4001 (home-page "https://github.com/weinholt/laesare")
4002 (synopsis "R6RS Scheme library that provides a reader")
4003 (description
4004 "This is an R6RS Scheme library that provides a reader with some extra
4005features not found in the standard read procedure such as a compatible mode
4006with support for other RnRS standards and a tolerant mode that continues on
4007errors.")
4008 (license license:expat)))