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