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