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