gnu: Add python-pyshp.
[jackhill/guix/guix.git] / gnu / packages / guile-xyz.scm
CommitLineData
0791437f 1;;; GNU Guix --- Functional package management for GNU
475c3278 2;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
0791437f
RW
3;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
4;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
5;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
76171095 6;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
0791437f 7;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
3968722b 8;;; Copyright © 2016, 2019, 2020, 2021 Eraim Flashner <efraim@flashner.co.il>
0791437f
RW
9;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
10;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
11;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
bdf2dd79 12;;; Copyright © 2016, 2019 Jan Nieuwenhuizen <janneke@gnu.org>
0791437f
RW
13;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
14;;; Copyright © 2017 David Thompson <davet@gnu.org>
f6145358 15;;; Copyright © 2017, 2018, 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
0791437f 16;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
3c986a7d 17;;; Copyright © 2017 Nikita <nikita@n0.is>
bb8a0d80 18;;; Copyright © 2017, 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
cec4f5f5 19;;; Copyright © 2018, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
69bb61f1 20;;; Copyright © 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
0791437f
RW
21;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
22;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
cd81199c 23;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
be789065 24;;; Copyright © 2019, 2020 Amar Singh <nly@disroot.org>
4cd88522 25;;; Copyright © 2019, 2021 Timothy Sample <samplet@ngyro.com>
3c566eba 26;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
8ffc20ef 27;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
b7e1e556 28;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
c08f235b 29;;; Copyright © 2020 Julien Lepiler <julien@lepiller.eu>
3a71dac0 30;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
4b83f820 31;;; Copyright © 2020, 2021 Masaya Tojo <masaya@tojo.tokyo>
c984b70c 32;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com>
a987f128 33;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
d22d129d 34;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
ff9f2463 35;;; Copyright © 2020, 2021 pukkamustard <pukkamustard@posteo.net>
3968722b 36;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
aa059897 37;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
69b3907a 38;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
767c3df8 39;;; Copyright © 2021 Zelphir Kaltstahl <zelphirkaltstahl@posteo.de>
08814ccc 40;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
0791437f
RW
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)
7ff157c1 60 #:use-module (gnu packages algebra)
0791437f
RW
61 #:use-module (gnu packages aspell)
62 #:use-module (gnu packages autotools)
465a951c 63 #:use-module (gnu packages avahi)
0791437f
RW
64 #:use-module (gnu packages base)
65 #:use-module (gnu packages bash)
66 #:use-module (gnu packages compression)
f53c1005 67 #:use-module (gnu packages crypto)
406ef442 68 #:use-module (gnu packages databases)
0791437f 69 #:use-module (gnu packages disk)
15218d4e 70 #:use-module (gnu packages emacs)
5531782d 71 #:use-module (gnu packages emacs-xyz)
0791437f
RW
72 #:use-module (gnu packages gawk)
73 #:use-module (gnu packages gettext)
74 #:use-module (gnu packages gl)
bdf2dd79 75 #:use-module (gnu packages glib)
5531782d 76 #:use-module (gnu packages gnome)
e8c2da41 77 #:use-module (gnu packages gnupg)
0791437f 78 #:use-module (gnu packages gperf)
a987f128 79 #:use-module (gnu packages gstreamer)
bdf2dd79 80 #:use-module (gnu packages gtk)
0791437f
RW
81 #:use-module (gnu packages guile)
82 #:use-module (gnu packages hurd)
83 #:use-module (gnu packages image)
d1a3a8e1 84 #:use-module (gnu packages imagemagick)
0791437f
RW
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)
559feb66 90 #:use-module (gnu packages mes)
0791437f
RW
91 #:use-module (gnu packages multiprecision)
92 #:use-module (gnu packages ncurses)
93 #:use-module (gnu packages networking)
f0de9544 94 #:use-module (gnu packages noweb)
1a37fd1e 95 #:use-module (gnu packages nss)
fa76e52d 96 #:use-module (gnu packages package-management)
e8c2da41 97 #:use-module (gnu packages password-utils)
406ef442 98 #:use-module (gnu packages perl)
0791437f
RW
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)
69bb61f1 103 #:use-module (gnu packages search)
0791437f
RW
104 #:use-module (gnu packages slang)
105 #:use-module (gnu packages sqlite)
69bb61f1 106 #:use-module (gnu packages swig)
f0de9544 107 #:use-module (gnu packages tex)
0791437f
RW
108 #:use-module (gnu packages texinfo)
109 #:use-module (gnu packages tls)
110 #:use-module (gnu packages version-control)
559feb66 111 #:use-module (gnu packages web)
bdf2dd79 112 #:use-module (gnu packages webkit)
0791437f
RW
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)
dec4b3aa 118 #:use-module (guix hg-download)
0a40da60 119 #:use-module (guix build-system cmake)
e4ef0d7c 120 #:use-module (guix build-system glib-or-gtk)
0791437f
RW
121 #:use-module (guix build-system gnu)
122 #:use-module (guix build-system guile)
123 #:use-module (guix utils)
a0b24d5f 124 #:use-module ((guix build utils) #:select (alist-replace))
0791437f
RW
125 #:use-module (ice-9 match)
126 #:use-module ((srfi srfi-1) #:select (alist-delete)))
127
128(define-public artanis
1a37fd1e
RW
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
f40ddf95 177 `(("guile-json" ,guile-json-1) ; This is already using guile-2.2.
a7a8337b 178 ("guile-readline" ,guile2.2-readline)
d282a82c 179 ("guile-redis" ,guile2.2-redis)))
1a37fd1e
RW
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
0791437f
RW
235Scheme. A web application framework (WAF) is a software framework that is
236designed to support the development of dynamic websites, web applications, web
237services and web resources. The framework aims to alleviate the overhead
238associated with common activities performed in web development. Artanis
239provides several tools for web development: database access, templating
240frameworks, session management, URL-remapping for RESTful, page caching, and
241more.")
1a37fd1e
RW
242 (home-page "https://www.gnu.org/software/artanis/")
243 (license (list license:gpl3+ license:lgpl3+)))) ;dual license
0791437f 244
aa059897
XC
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
265directories (the file system in general). It was initially inspired by the
266f library for Emacs.")
267 (license license:gpl3+)))
268
0791437f
RW
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
b0e7b699 279 (url "https://github.com/ijp/guildhall")
0791437f
RW
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/
297TEST_EXTENSIONS = .scm
298SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE)
299AM_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
314an association of independent craftspeople. A guildhall is where they meet.
315This Guildhall aims to make a virtual space for Guile wizards and journeyfolk
316to share code.
317
318On a practical level, Guildhall lets you share Scheme modules and programs
319over the internet, and install code that has been shared by others. Guildhall
320can handle dependencies, so when a program requires several libraries, and
321each of those has further dependencies, all of the prerequisites for the
322program 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
363dictionary and suggesting spelling corrections.")
364 (license license:gpl3+)))
365
08814ccc 366(define-public guile2.0-bash
0791437f
RW
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
827656c3 372 (name "guile2.0-bash")
0791437f
RW
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)
ce10e2b3 400 ("autoconf" ,autoconf)
0791437f
RW
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,
414allowing you to extend Bash in Scheme. Scheme interfaces allow you to access
415the 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
426To enable it, run:
427
428@example
429enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm
430@end example
431
432and then run @command{scm example.scm}.")
433 (license license:gpl3+))))
434
08814ccc
OP
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
0791437f
RW
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
482library for GNU Guile based on the actor model.
483
484Note that 8sync is only available for Guile 2.2.")
eee4173c 485 (properties '((upstream-name . "8sync")))
0791437f
RW
486 (license license:lgpl3+)))
487
488(define-public guile-daemon
489 (package
490 (name "guile-daemon")
f975f82d 491 (version "0.1.3")
0791437f
RW
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
f975f82d 499 "08gaqrgjlly9k5si72vvpbr4xhq5v52l5ma5y6a7spid5dd057cy"))))
0791437f
RW
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
509configuration file, and then reads and evaluates Guile expressions that
510you send to a FIFO file.")
511 (license license:gpl3+)))
512
513(define-public guile-dsv
514 (package
515 (name "guile-dsv")
d70b0f92 516 (version "0.4.0")
0791437f
RW
517 (source (origin
518 (method git-fetch)
519 (uri (git-reference
520 (url "https://github.com/artyom-poptsov/guile-dsv")
d70b0f92 521 (commit (string-append "v" version))))
0791437f
RW
522 (file-name (string-append name "-" version "-checkout"))
523 (sha256
524 (base32
d70b0f92 525 "1mvyc8i38j56frjh3p6vwziv8lrzlyqndz30663h5nwcp0044sdn"))))
0791437f
RW
526 (build-system gnu-build-system)
527 (native-inputs
528 `(("autoconf" ,autoconf)
529 ("automake" ,automake)
530 ("pkg-config" ,pkg-config)
531 ("texinfo" ,texinfo)))
f81ce752
JH
532 (inputs `(("guile" ,guile-3.0)))
533 (propagated-inputs `(("guile-lib" ,guile-lib)))
0791437f 534 (arguments
b7e1e556
JH
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
0791437f
RW
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"))
b7e1e556
JH
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"))
f81ce752 560 (guile-lib (assoc-ref inputs "guile-lib"))
b7e1e556
JH
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)))))
0791437f
RW
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
578delimiter-separated values (DSV) data format. Guile-DSV supports the
579Unix-style DSV format and RFC 4180 format.")
580 (license license:gpl3+)))
581
f81ce752
JH
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
0791437f
RW
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
9e016129
LC
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")))
9af90aaf
CR
621 #t))
622 (patches
623 ;; fixes a resource leak that causes crashes in the tests
624 (search-patches "guile-fibers-destroy-peer-schedulers.patch"))))
0791437f
RW
625 (build-system gnu-build-system)
626 (arguments
b6bee63b
LC
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
0791437f
RW
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
b6bee63b 646 `(("guile" ,guile-3.0)))
0791437f
RW
647 (synopsis "Lightweight concurrency facility for Guile")
648 (description
649 "Fibers is a Guile library that implements a a lightweight concurrency
650facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is
651like a \"goroutine\" from the Go language: a lightweight thread-like
652abstraction. Systems built with Fibers can scale up to millions of concurrent
653fibers, tens of thousands of concurrent socket connections, and many parallel
654cores. The Fibers library also provides Concurrent ML-like channels for
655communication between fibers.
656
657Note that Fibers makes use of some Guile 2.1/2.2-specific features and
658is not available for Guile 2.0.")
659 (home-page "https://github.com/wingo/fibers")
660 (license license:lgpl3+)))
661
b6bee63b 662(define-public guile2.0-fibers
9e016129
LC
663 (package
664 (inherit guile-fibers)
b6bee63b
LC
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))
9e016129 670
d22d129d
LP
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
ce10e2b3 686 `(("autoconf" ,autoconf)
d22d129d
LP
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,
695that 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
0791437f
RW
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
fb8a77f4
LC
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))))
0791437f
RW
731 (build-system gnu-build-system)
732 (native-inputs
733 `(("pkg-config" ,pkg-config)))
734 (inputs
b6bee63b 735 `(("guile" ,guile-3.0)))
0791437f
RW
736 (synopsis "General-purpose syntax highlighter for GNU Guile")
737 (description "Guile-syntax-highlight is a general-purpose syntax
738highlighting library for GNU Guile. It can parse code written in various
739programming languages into a simple s-expression that can be converted to
740HTML (via SXML) or any other format for rendering.")
02e052ba 741 (home-page "https://dthompson.us/projects/guile-syntax-highlight.html")
0791437f
RW
742 (license license:lgpl3+)))
743
b6bee63b 744(define-public guile2.2-syntax-highlight
fb8a77f4
LC
745 (package
746 (inherit guile-syntax-highlight)
b6bee63b
LC
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))
fb8a77f4 752
0791437f
RW
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
eef54583
RW
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))))
0791437f
RW
772 (build-system gnu-build-system)
773 (native-inputs
774 `(("autoconf" ,autoconf)
775 ("automake" ,automake)
776 ("pkg-config" ,pkg-config)))
777 (inputs
eef54583 778 `(("guile" ,guile-3.0)))
0791437f
RW
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.
782It has a nice, simple s-expression based syntax.")
783 (license license:lgpl3+)))
784
eef54583
RW
785(define-public guile2.2-sjson
786 (package
787 (inherit guile-sjson)
788 (name "guile2.2-sjson")
789 (inputs `(("guile" ,guile-2.2)))))
790
61dafdc0 791(define-public guile-squee
50812aae
MO
792 (let ((commit "c1497a216e881cfde39d6aa7c73d0bf6b497c89b")
793 (revision "2"))
61dafdc0
CB
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
50812aae 805 "1alskrplnyl1n5wb39drn72cwplp47a8cpdd1n9cdnw3jhk5p12p"))))
61dafdc0
CB
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
ca03dca5 822 `(("guile" ,guile-3.0)))
61dafdc0
CB
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
827using Guile's foreign function interface.")
6fd72f70 828 (license license:lgpl3+))))
61dafdc0 829
ca03dca5 830(define-public guile2.2-squee
945a73d8
CB
831 (package
832 (inherit guile-squee)
ca03dca5
LC
833 (name "guile2.2-squee")
834 (native-inputs `(("guile" ,guile-2.2)
cfe35814
CB
835 ,@(alist-delete "guile"
836 (package-native-inputs guile-squee))))))
945a73d8 837
ca03dca5
LC
838(define-public guile3.0-squee
839 (deprecated-package "guile3.0-squee" guile-squee))
840
0791437f
RW
841(define-public guile-colorized
842 (package
843 (name "guile-colorized")
844 (version "0.1")
1340ce28
TGR
845 (source
846 (origin
847 (method git-fetch)
848 (uri (git-reference
55f4282e 849 (url "https://gitlab.com/NalaGinrut/guile-colorized.git")
1340ce28
TGR
850 (commit (string-append "v" version))))
851 (file-name (git-file-name name version))
852 (sha256
853 (base32 "10mv8c63159r3qvwwdvsgnsvdg7nc2ghak85zapwqpv4ywrqp9zc"))))
0791437f
RW
854 (build-system guile-build-system)
855 (native-inputs
b6bee63b 856 `(("guile" ,guile-3.0)))
55f4282e 857 (home-page "https://gitlab.com/NalaGinrut/guile-colorized")
0791437f
RW
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
b6bee63b 863(define-public guile2.2-colorized
fc870a0d
LC
864 (package
865 (inherit guile-colorized)
b6bee63b
LC
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))
fc870a0d 871
0791437f
RW
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"
45231d17 889 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
0791437f
RW
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
45231d17 898 (string-append "src/pfds/" file)))
0791437f
RW
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"))
0791437f
RW
912 #t)))))
913 (native-inputs
b6bee63b 914 `(("guile" ,guile-3.0)))
0791437f
RW
915 (synopsis "Purely functional data structures for Guile")
916 (description
917 "This package provides purely functional data structures written in R6RS
918Scheme and compiled for Guile. It has been tested with Racket, Guile 2,
919Vicare 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
d944f10d
CB
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
966PostgreSQL RDBMS from Scheme programs.
967
968This has been tested against PostgreSQL 10 through 13, but currently only
969works with Guile 1.4.x to 2.0.x.")
970 (license license:gpl3+)))
971
15c3fe24 972(define-public guile-prometheus
77667e2e
CB
973 (let ((commit "35dc26c0ea44c3d70f1819f240d84e2cbb4b7b4c")
974 (revision "5"))
15c3fe24
CB
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
77667e2e 985 "07822jj4appw37lf444kc4xlgl7nm64mgldag56072l55kwashgb"))
15c3fe24
CB
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)
b452f1b1
CB
991 ("automake" ,automake)
992 ("guile" ,guile-3.0)))
15c3fe24
CB
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
999with the Prometheus time series service. Counter, gauge and histogram metric
1000types are supported.")
1001 (license license:gpl3+))))
1002
b6bee63b 1003(define-public guile2.2-pfds
77c95ee6
RW
1004 (package
1005 (inherit guile-pfds)
b6bee63b
LC
1006 (name "guile2.2-pfds")
1007 (native-inputs `(("guile" ,guile-2.2)))
77c95ee6 1008 (arguments
0dd1e277
RW
1009 (substitute-keyword-arguments (package-arguments guile-pfds)
1010 ((#:phases phases)
1011 `(modify-phases ,phases
45231d17
MB
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))))))))
b6bee63b
LC
1024
1025(define-public guile3.0-pfds
1026 (deprecated-package "guile3.0-pfds" guile-pfds))
77c95ee6 1027
0791437f
RW
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
1046self-balancing binary tree data structure, for Guile. It ensure @math{O(log
1047n)} worst case performance for core operations. The module provides
1048non-mutating insert, delete, and search operations, with support for
1049convenient nested tree operations.")
1050 (license license:gpl3+)))
1051
1052(define-public guile-simple-zmq
0d5e2c58
MO
1053 (let ((commit "b2ea97e5a0e7417ce718b27b6fd55a3146364b82")
1054 (revision "9"))
0791437f
RW
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
0d5e2c58 1066 "08qvcxx0njz9545xa0lq3wpf55v9cl9nbb640ry1lig11wpymqxb"))
0791437f 1067 (file-name (git-file-name name version))))
73303067 1068 (build-system gnu-build-system)
0791437f 1069 (arguments
73303067
MO
1070 '(#:make-flags
1071 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1072
0791437f 1073 (native-inputs
b6bee63b 1074 `(("guile" ,guile-3.0)))
0791437f 1075 (inputs
73303067
MO
1076 `(("autoconf" ,autoconf)
1077 ("automake" ,automake)
1078 ("pkg-config" ,pkg-config)
1079 ("zeromq" ,zeromq)))
0791437f
RW
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
1084messaging library.")
1085 (license license:gpl3+))))
1086
b6bee63b 1087(define-public guile2.2-simple-zmq
015bb1c8
LC
1088 (package
1089 (inherit guile-simple-zmq)
b6bee63b
LC
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))
015bb1c8 1095
0791437f 1096(define-public jupyter-guile-kernel
c984b70c
JG
1097 (let ((commit "f25fb90b95529b17a006a807bd04e6aee12ea304")
1098 (revision "2"))
0791437f
RW
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)))
f1d4d79f 1108 (file-name (git-file-name name version))
0791437f
RW
1109 (sha256
1110 (base32
c984b70c 1111 "0zr1fasdb2yv9kn21yll993y9higqss4jnfs030ndhjb93raa9sr"))))
0791437f
RW
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")
c984b70c 1146 (("/usr/local/.*/guile-jupyter-kernel.scm")
0791437f
RW
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)))
c984b70c
JG
1167 (string-append "--no-auto-compile\""
1168 (string-join -L ", \"-L\", "
1169 'prefix)
1170 (string-join -C ", \"-C\", "
1171 'prefix)
1172 ", \"-s"))))
0791437f
RW
1173 #t))))))
1174 (inputs
1175 `(("openssl" ,openssl)
c984b70c
JG
1176 ("guile" ,guile-3.0)
1177 ("guile-json" ,guile-json-3)
0791437f
RW
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
1182allows 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")
22213308 1189 (version "0.0.8")
0791437f
RW
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
22213308 1196 (base32 "1jf4972f9fpm0rd865xpnc9mzl3xv6vhfnp0iygadydy905z9nln"))))
0791437f 1197 (build-system gnu-build-system)
0791437f
RW
1198 (native-inputs
1199 `(("pkg-config" ,pkg-config)))
1200 (inputs
22213308 1201 `(("guile" ,guile-3.0)))
0791437f
RW
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
1205endpoint. Additionally, it provides an interface to write SPARQL queries
1206using S-expressions.")
1207 (license license:gpl3+)))
1208
1209(define-public guile-debbugs
1210 (package
1211 (name "guile-debbugs")
5144f542 1212 (version "0.0.3")
0791437f
RW
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
5144f542 1219 "1cc63nw3xdfjrfk8c58r6d5lidmfq5cpqcy32yd5xp81yccprvn9"))))
0791437f 1220 (build-system gnu-build-system)
5144f542
RW
1221 (propagated-inputs
1222 `(("guile-email" ,guile-email)))
0791437f 1223 (native-inputs
cd23eb06 1224 `(("guile" ,guile-3.0)
0791437f
RW
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
1230tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
1231 (license license:gpl3+)))
1232
1233(define-public guile-email
50771f5b
AI
1234 (package
1235 (name "guile-email")
223cb7c6 1236 (version "0.2.2")
50771f5b
AI
1237 (source
1238 (origin
1239 (method url-fetch)
1240 (uri (string-append
db18d87a
AI
1241 "https://guile-email.systemreboot.net/releases/guile-email-"
1242 version ".tar.lz"))
50771f5b
AI
1243 (sha256
1244 (base32
223cb7c6 1245 "1rc8r0fgvflnyq5ckl7ii8sghpsgpkzxa8vskjr1ak2kyar6m35k"))))
50771f5b
AI
1246 (build-system gnu-build-system)
1247 (native-inputs
1248 `(("pkg-config" ,pkg-config)
db18d87a 1249 ("lzip" ,lzip)))
50771f5b 1250 (inputs
ca6c1509 1251 `(("guile" ,guile-3.0)))
db18d87a 1252 (arguments
2c33a849 1253 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
db18d87a 1254 (home-page "https://guile-email.systemreboot.net")
50771f5b 1255 (synopsis "Guile email parser")
db18d87a
AI
1256 (description "guile-email is a collection of email utilities implemented
1257in pure guile. It supports parsing MIME (Multipurpose Internet Mail
1258Extensions) compliant email messages and reading emails from the mbox
1259format.")
50771f5b 1260 (license license:agpl3+)))
0791437f 1261
8b3b1f34 1262(define-public guile-email-latest
714a8faa 1263 (let ((commit "ca0520a33c9042a68691d85c6849f88412ca8357")
8b3b1f34
RW
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
714a8faa 1278 "1l5mikalawq83786rnb9zky908ncsd5dna9vyz6bx6kc2frrl7xv"))))
8b3b1f34
RW
1279 (native-inputs
1280 `(("pkg-config" ,pkg-config)
1281 ("autoconf" ,autoconf)
1282 ("automake" ,automake)
1283 ("texinfo" ,texinfo))))))
1284
ca6c1509 1285(define-public guile2.2-email
63a847cb
CB
1286 (package
1287 (inherit guile-email)
ca6c1509
LC
1288 (name "guile2.2-email")
1289 (inputs `(("guile" ,guile-2.2)
63a847cb
CB
1290 ,@(alist-delete "guile" (package-inputs guile-email))))))
1291
ca6c1509
LC
1292(define-public guile3.0-email
1293 (deprecated-package "guile3.0-email" guile-email))
1294
0791437f 1295(define-public guile-newt
442a11f6
MO
1296 (package
1297 (name "guile-newt")
f52c1f5f 1298 (version "0.0.2")
442a11f6
MO
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
f52c1f5f 1307 "1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09"))))
442a11f6
MO
1308 (build-system gnu-build-system)
1309 (arguments
1310 '(#:make-flags
1311 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1312 (inputs
b6bee63b 1313 `(("guile" ,guile-3.0)
442a11f6
MO
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
0791437f
RW
1322color text mode, widget based user interfaces. The bindings are written in pure
1323Scheme by using Guile’s foreign function interface.")
442a11f6
MO
1324 (home-page "https://gitlab.com/mothacehe/guile-newt")
1325 (license license:gpl3+)))
0791437f 1326
b6bee63b 1327(define-public guile2.2-newt
e7fc7746
LC
1328 (package
1329 (inherit guile-newt)
b6bee63b 1330 (name "guile2.2-newt")
318e1a93 1331 (inputs `(("guile" ,guile-2.2)
e7fc7746
LC
1332 ,@(alist-delete "guile" (package-inputs guile-newt))))))
1333
b6bee63b
LC
1334(define-public guile3.0-newt
1335 (deprecated-package "guile3.0-newt" guile-newt))
1336
0791437f 1337(define-public guile-mastodon
d999fc68
MO
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
0791437f
RW
1366@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
1367microblogging service.")
d999fc68 1368 (license license:gpl3+))))
0791437f 1369
0791437f 1370(define-public guile-parted
dbcd503c
MO
1371 (package
1372 (name "guile-parted")
f1a71be0 1373 (version "0.0.5")
dbcd503c
MO
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
f1a71be0 1382 "1ar6n38br3h1jm54yy6d54rpqdgsy7pmnj3nqdzqrfk8z0kx0rm9"))
f6145358 1383 (modules '((guix build utils)))))
dbcd503c
MO
1384 (build-system gnu-build-system)
1385 (arguments
1386 '(#:make-flags
1387 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1388 (inputs
b6bee63b 1389 `(("guile" ,guile-3.0)
dbcd503c
MO
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
1400allowing disk partition tables creation and manipulation. The bindings are
0791437f 1401written in pure Scheme by using Guile's foreign function interface.")
dbcd503c
MO
1402 (home-page "https://gitlab.com/mothacehe/guile-parted")
1403 (license license:gpl3+)))
0791437f 1404
b6bee63b 1405(define-public guile2.2-parted
e5b95558
LC
1406 (package
1407 (inherit guile-parted)
b6bee63b 1408 (name "guile2.2-parted")
318e1a93 1409 (inputs `(("guile" ,guile-2.2)
e5b95558
LC
1410 ,@(alist-delete "guile" (package-inputs guile-parted))))
1411 (propagated-inputs
b6bee63b
LC
1412 `(("guile-bytestructures" ,guile2.2-bytestructures)))))
1413
1414(define-public guile3.0-parted
1415 (deprecated-package "guile3.0-parted" guile-parted))
e5b95558 1416
0791437f
RW
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
1443library}.")
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
406ef442
CB
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"))
0791437f
RW
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
406ef442
CB
1479 `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3)
1480 ("guile-dbd-postgresql" ,guile-dbd-postgresql))) ; only shared library, no scheme files
0791437f
RW
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
1487SQL databases. Database programming with guile-dbi is generic in that the same
1488programming interface is presented regardless of which database system is used.
1489It 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
1524SQL databases. This package implements the interface for SQLite.")
1525 (license license:gpl2+)))
1526
406ef442
CB
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
b0e7b699 1538 (url "https://github.com/opencog/guile-dbi")
406ef442
CB
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
1579interface to SQL databases. This package implements the interface for
1580PostgreSQL.")
1581 (license license:gpl2+))))
1582
0791437f
RW
1583(define-public guile-config
1584 (package
1585 (name "guile-config")
aed0d0fd 1586 (version "0.4.2")
0791437f
RW
1587 (source
1588 (origin
1589 (method git-fetch)
1590 (uri (git-reference
1591 (url "https://gitlab.com/a-sassmannshausen/guile-config")
529d1d96 1592 (commit version)))
91e29547
AS
1593 (file-name (git-file-name name version))
1594 (sha256 (base32
aed0d0fd 1595 "09028ylbddjdp3d67zdjz3pnsjqz6zs2bfck5rr3dfaa0qjap40n"))))
0791437f
RW
1596 (build-system gnu-build-system)
1597 (native-inputs
1598 `(("autoconf" ,autoconf)
1599 ("automake" ,automake)
1600 ("pkg-config" ,pkg-config)
1601 ("texinfo" ,texinfo)))
b6bee63b 1602 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
1603 (synopsis
1604 "Guile application configuration parsing library.")
1605 (description
1606 "Guile Config is a library providing a declarative approach to
1607application configuration specification. The library provides clean
1608configuration declaration forms, and processors that take care of:
1609configuration file creation; configuration file parsing; command-line
1610parameter parsing using getopt-long; basic GNU command-line parameter
1611generation (--help, --usage, --version); automatic output generation for the
1612above command-line parameters.")
1613 (home-page
1614 "https://gitlab.com/a-sassmannshausen/guile-config")
1615 (license license:gpl3+)))
1616
b6bee63b 1617(define-public guile2.2-config
0ac6b836
AS
1618 (package
1619 (inherit guile-config)
b6bee63b
LC
1620 (name "guile2.2-config")
1621 (inputs `(("guile" ,guile-2.2)
0ac6b836
AS
1622 ,@(alist-delete "guile" (package-inputs guile-config))))))
1623
b6bee63b
LC
1624(define-public guile3.0-config
1625 (deprecated-package "guile3.0-config" guile-config))
1626
0791437f
RW
1627(define-public guile-hall
1628 (package
1629 (name "guile-hall")
63fe1dc0 1630 (version "0.3.1")
0791437f 1631 (source
feb11b08
RW
1632 (origin
1633 (method git-fetch)
1634 (uri (git-reference
1635 (url "https://gitlab.com/a-sassmannshausen/guile-hall")
a3dfe052 1636 (commit version)))
63fe1dc0 1637 (file-name "guile-hall-0.3.1-checkout")
a3dfe052 1638 (sha256
63fe1dc0 1639 (base32 "1s24nigdra6rvclvy15l2aw00c3aq9vv8qwxylzs60darbl36206"))))
0791437f
RW
1640 (build-system gnu-build-system)
1641 (arguments
63bf0afd
AS
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))))))))
0791437f 1688 (native-inputs
63bf0afd
AS
1689 `(("autoconf" ,autoconf)
1690 ("automake" ,automake)
1691 ("pkg-config" ,pkg-config)
1692 ("texinfo" ,texinfo)))
b6bee63b 1693 (inputs `(("guile" ,guile-3.0)))
0791437f 1694 (propagated-inputs
3c3e6620 1695 `(("guile-config" ,guile-config)))
0791437f
RW
1696 (synopsis "Guile project tooling")
1697 (description
3c3e6620
RW
1698 "Hall is a command-line application and a set of Guile libraries that
1699allow you to quickly create and publish Guile projects. It allows you to
1700transparently support the GNU build system, manage a project hierarchy &
1701provides tight coupling to Guix.")
1702 (home-page "https://gitlab.com/a-sassmannshausen/guile-hall")
06085fac 1703 (license license:gpl3+)))
0791437f 1704
b6bee63b 1705(define-public guile2.2-hall
df18ea6f
AS
1706 (package
1707 (inherit guile-hall)
b6bee63b
LC
1708 (name "guile2.2-hall")
1709 (inputs `(("guile" ,guile-2.2)
df18ea6f
AS
1710 ,@(alist-delete "guile" (package-inputs guile-hall))))
1711 (propagated-inputs
b6bee63b 1712 `(("guile-config" ,guile2.2-config)
df18ea6f
AS
1713 ,@(alist-delete "guile-config"
1714 (package-propagated-inputs guile-hall))))))
1715
b6bee63b
LC
1716(define-public guile3.0-hall
1717 (deprecated-package "guile3.0-hall" guile-hall))
1718
0791437f
RW
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
6713589d
LC
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))))
0791437f
RW
1740 (build-system gnu-build-system)
1741 (native-inputs
ce10e2b3 1742 `(("autoconf" ,autoconf)
0791437f
RW
1743 ("automake" ,automake)
1744 ("texinfo" ,texinfo)
1745 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
1746 ("gettext" ,gettext-minimal)
1747 ("pkg-config" ,pkg-config)))
b6bee63b 1748 (inputs `(("guile" ,guile-3.0) ("which" ,which)))
0791437f
RW
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
1754pure Scheme. The library can be used to read and write iCalendar data.
1755
1756The library is shipped with documentation in Info format and usage examples.")
1757 (license license:gpl3+)))
1758
b6bee63b 1759(define-public guile2.2-ics
6713589d
LC
1760 (package
1761 (inherit guile-ics)
b6bee63b
LC
1762 (name "guile2.2-ics")
1763 (inputs `(("guile" ,guile-2.2)
6713589d 1764 ,@(alist-delete "guile" (package-inputs guile-ics))))
b6bee63b
LC
1765 (propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
1766
1767(define-public guile3.0-ics
1768 (deprecated-package "guile3.0-ics" guile-ics))
6713589d 1769
fa76e52d
XC
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
1795interactively. It works by scanning an alist of package categories, to ask the
1796user which package sets would they like to install from it.")
1797 (license license:gpl3+))))
1798
0791437f
RW
1799(define-public guile-wisp
1800 (package
1801 (name "guile-wisp")
d94e9cb7 1802 (version "1.0.5")
0791437f 1803 (source (origin
8b030edf
AB
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))
0791437f
RW
1809 (sha256
1810 (base32
d94e9cb7 1811 "00iknn03gf421gg3061g35fbraqrkcqypkrfn10rhlgg6j0lgk67"))))
0791437f
RW
1812 (build-system gnu-build-system)
1813 (arguments
1814 `(#:modules ((guix build gnu-build-system)
15218d4e 1815 ((guix build emacs-build-system) #:prefix emacs:)
0791437f 1816 (guix build utils)
15218d4e 1817 (guix build emacs-utils)
0791437f
RW
1818 (ice-9 rdelim)
1819 (ice-9 popen))
15218d4e
RW
1820 #:imported-modules (,@%gnu-build-system-modules
1821 (guix build emacs-build-system)
1822 (guix build emacs-utils))
0791437f
RW
1823 #:phases
1824 (modify-phases %standard-phases
8b030edf 1825 (replace 'bootstrap
b6bee63b 1826 (lambda _
8b030edf 1827 (invoke "autoreconf" "-vif")
b6bee63b 1828 #t))
0791437f
RW
1829 (add-before 'configure 'patch-/usr/bin/env
1830 (lambda _
1831 (substitute* "Makefile.in"
65610f73 1832 (("/usr/bin/env bash") (which "bash")))
0791437f
RW
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$"))
15218d4e
RW
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)))))
17f90b67 1865 (home-page "https://www.draketo.de/english/wisp")
0791437f 1866 (inputs
b6bee63b 1867 `(("guile" ,guile-3.0)))
0791437f 1868 (native-inputs
8b030edf
AB
1869 `(("autoconf" ,autoconf)
1870 ("automake" ,automake)
1871 ("emacs" ,emacs-minimal)
15218d4e 1872 ("python" ,python)
0791437f
RW
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
1876whitespace-significant language. It may be easier on the eyes for some
1877users and in some situations.")
d94e9cb7
LP
1878 (license (list license:gpl3+ ; the project as a whole
1879 license:expat)))) ; the language spec (see also SRFI 119)
0791437f 1880
b6bee63b 1881(define-public guile2.2-wisp
b0b725ed
RW
1882 (package
1883 (inherit guile-wisp)
b6bee63b
LC
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))
b0b725ed 1889
84e31f3c
RW
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
ce10e2b3 1905 `(("autoconf" ,autoconf)
84e31f3c
RW
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
0791437f
RW
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
1969features a functional reactive programming interface and live coding
1970capabilities.")
1971 (home-page "https://dthompson.us/projects/sly.html")
1972 (license license:gpl3+)))
1973
dfe277a5 1974(define-public g-golf
f2d36d4f
MR
1975 (let ((commit "ef830107b9765bd6a2da848d0cbe45e11374c0b5")
1976 (revision "839"))
dfe277a5
VS
1977 (package
1978 (name "g-golf")
30d59b31
MR
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
f2d36d4f 1988 (base32 "0r472hvmf447kqvkahp1wy4irb5gy8y793hm8r9rc511smdx66cw"))))
dfe277a5
VS
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)
85fcceee
MR
1996 ("pkg-config" ,pkg-config)
1997 ("xorg-server" ,xorg-server)))
dfe277a5
VS
1998 (inputs
1999 `(("guile" ,guile-2.2)
85fcceee 2000 ("guile-lib" ,guile2.2-lib)
dfe277a5
VS
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")
85fcceee
MR
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)))))
dfe277a5
VS
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
2055modern applications in Guile Scheme. It comprises a direct binding to the
2056GObject Introspection API and higher-level functionality for importing Gnome
2057libraries and making GObject classes (and methods) available in Guile's
2058object-oriented programming system, GOOPS.")
2059 (license license:lgpl3+))))
2060
0791437f
RW
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
2093wrappers for inter-language calls. It currently only supports generating Guile
2094wrappers for C functions. Given a definition of the types and prototypes for
2095a given C interface, G-Wrap will automatically generate the C code that
2096provides 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
b0e7b699 2109 (url "https://github.com/fisherdj/miniAdapton")
0791437f
RW
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
2120Scheme")
2121 (description "This package provides a complete Scheme implementation of
2122miniAdapton, which implements the core functionality of the Adapton system for
2123incremental computation (also known as self-adjusting computation). Like
2124Adapton, miniAdapton allows programmers to safely combine mutation and
2125memoization. miniAdapton is built on top of an even simpler system,
2126microAdapton. Both miniAdapton and microAdapton are designed to be easy to
2127understand, extend, and port to host languages other than Scheme.")
2128 (license license:expat))))
2129
909caad6
XC
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
2158strings', it lets you write verbatim strings without having to escape double
2159quotes. ")
2160 (license license:public-domain))))
2161
0791437f
RW
2162(define-public guile-reader
2163 (package
2164 (name "guile-reader")
a7c69419 2165 (version "0.6.3")
0791437f
RW
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
a7c69419 2172 "1fyjckmygkhq22lq8nqc86yl5zzbqd7a944dnz5c1f6vx92b9hiq"))))
0791437f
RW
2173 (build-system gnu-build-system)
2174 (native-inputs `(("pkgconfig" ,pkg-config)
a7c69419 2175 ("gperf" ,gperf)))
c20e697e 2176 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
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
2181The idea is to make it easy to build procedures that extend Guile’s read
2182procedure. Readers supporting various syntax variants can easily be written,
2183possibly by re-using existing “token readers” of a standard Scheme
2184readers. For example, it is used to implement Skribilo’s R5RS-derived
2185document syntax.
2186
2187Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
2188hopefully more powerful and flexible (for instance, one may instantiate as
2189many readers as needed).")
2190 (home-page "https://www.nongnu.org/guile-reader/")
2191 (license license:gpl3+)))
2192
c20e697e
LC
2193(define-public guile2.2-reader
2194 (package
2195 (inherit guile-reader)
2196 (name "guile2.2-reader")
2197 (inputs `(("guile" ,guile-2.2)))))
2198
0791437f
RW
2199(define-public guile-ncurses
2200 (package
2201 (name "guile-ncurses")
2b155e3a 2202 (version "3.0")
0791437f
RW
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
2b155e3a 2209 "038xbffalhymg26lvmzgf7ljilxz2f2zmqg5r5nfzbipfbprwjhf"))))
0791437f
RW
2210 (build-system gnu-build-system)
2211 (inputs `(("ncurses" ,ncurses)
b01a73b0 2212 ("guile" ,guile-3.0)))
0791437f
RW
2213 (native-inputs `(("pkg-config" ,pkg-config)))
2214 (arguments
3c566eba
MB
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
0791437f
RW
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\"")
3c566eba
MB
2236 (format #f "\"~a/lib/guile/~a/libguile-ncurses\""
2237 out (target-guile-effective-version))))
0791437f
RW
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
2243library.")
2244 (license license:lgpl3+)))
2245
b01a73b0 2246(define-public guile2.2-ncurses
3c566eba
MB
2247 (package
2248 (inherit guile-ncurses)
b01a73b0 2249 (name "guile2.2-ncurses")
3c566eba 2250 (inputs `(("ncurses" ,ncurses)
b01a73b0
RW
2251 ("guile" ,guile-2.2)))))
2252
2253(define-public guile3.0-ncurses
2254 (deprecated-package "guile3.0-ncurses" guile-ncurses))
3c566eba 2255
0791437f
RW
2256(define-public guile-ncurses/gpm
2257 (package
2258 (inherit guile-ncurses)
2259 (name "guile-ncurses-with-gpm")
2260 (inputs `(("ncurses" ,ncurses/gpm)
b4d809b0 2261 ("guile" ,guile-3.0)))))
0791437f 2262
87001355
MB
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
0791437f
RW
2270(define-public guile-lib
2271 (package
2272 (name "guile-lib")
cec4f5f5 2273 (version "0.2.7")
0791437f
RW
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
cec4f5f5 2280 "1ph4z4a64m75in36pdb4dw63dzdq3hdgh16gq33q460jby23pvz4"))))
0791437f
RW
2281 (build-system gnu-build-system)
2282 (arguments
cec4f5f5 2283 '(#:make-flags '("GUILE_AUTO_COMPILE=0") ;placate guild warnings
0791437f
RW
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 = \
cec4f5f5 2293$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))))))
7306c679 2294 (native-inputs
a0b24d5f
CB
2295 `(("autoconf" ,autoconf)
2296 ("automake" ,automake)
2297 ("gettext" ,gettext-minimal)
2298 ("guile" ,guile-3.0)
7306c679
CB
2299 ("pkg-config" ,pkg-config)))
2300 (inputs
cec4f5f5 2301 `(("guile" ,guile-3.0))) ;for cross-compilation
0791437f
RW
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
2306modules, allowing for people to cooperate integrating their generic Guile
2307modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
2308for Guile\".")
0791437f
RW
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")
a0b24d5f
CB
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)))))
0791437f 2324
b6bee63b 2325(define-public guile2.2-lib
675f1940
LC
2326 (package
2327 (inherit guile-lib)
b6bee63b 2328 (name "guile2.2-lib")
a0b24d5f
CB
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)))))
b6bee63b
LC
2335
2336(define-public guile3.0-lib
2337 (deprecated-package "guile3.0-lib" guile-lib))
675f1940 2338
0791437f
RW
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
b0e7b699 2346 (url "https://github.com/ijp/minikanren")
0791437f
RW
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
b6bee63b 2354 `(("guile" ,guile-3.0)))
0791437f
RW
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
2359programming Language, written as a smaller version of Kanren suitable for
2360pedagogical purposes. It is featured in the book, The Reasoned Schemer,
2361written by Dan Friedman, William Byrd, and Oleg Kiselyov.
2362
2363This is Ian Price's r6rs packaged version of miniKanren, which deviates
2364slightly from miniKanren mainline.
2365
2366See 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
b6bee63b 2375(define-public guile2.2-minikanren
89a99d53
LC
2376 (package
2377 (inherit guile-minikanren)
b6bee63b
LC
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))
89a99d53 2383
0791437f
RW
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
b6bee63b 2415 `(("guile" ,guile-3.0)))
0791437f
RW
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
2420string-based regular expressions. It implements SRFI 115 and is deeply
2421inspired 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
b6bee63b 2430(define-public guile2.2-irregex
89a99d53
LC
2431 (package
2432 (inherit guile-irregex)
b6bee63b
LC
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))
89a99d53 2438
0791437f
RW
2439(define-public haunt
2440 (package
2441 (name "haunt")
e7548afb 2442 (version "0.2.5")
0791437f
RW
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
e7548afb 2449 "1gy45l6m91b3wpdbpd9bpisp00zl8610zs0a2nwmbjlpd2cbf90k"))))
0791437f
RW
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"))
93d94134
LC
2464 (guile-reader (assoc-ref inputs "guile-reader"))
2465 (deps `(,@(if guile-reader
2466 (list guile-reader)
2467 '())
2468 ,(assoc-ref inputs "guile-commonmark"))))
0791437f
RW
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
e55f1ac7
LC
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)))
0791437f 2498 (propagated-inputs
c20e697e 2499 `(("guile-reader" ,guile-reader)
0791437f
RW
2500 ("guile-commonmark" ,guile-commonmark)))
2501 (synopsis "Functional static site generator")
2502 (description "Haunt is a static site generator written in Guile
2503Scheme. Haunt features a functional build system and an extensible
2504interface for reading articles in any format.")
5d3bcfef 2505 (home-page "https://dthompson.us/projects/haunt.html")
0791437f
RW
2506 (license license:gpl3+)))
2507
b6bee63b 2508(define-public guile2.2-haunt
93d94134
LC
2509 (package
2510 (inherit haunt)
b6bee63b
LC
2511 (name "guile2.2-haunt")
2512 (inputs `(("guile" ,guile-2.2)))
93d94134 2513 (propagated-inputs
c20e697e 2514 `(("guile-reader" ,guile2.2-reader)
b6bee63b 2515 ("guile-commonmark" ,guile2.2-commonmark)))))
93d94134 2516
0791437f
RW
2517(define-public guile2.0-haunt
2518 (package
2519 (inherit haunt)
2520 (name "guile2.0-haunt")
2521 (inputs `(("guile" ,guile-2.0)))))
2522
b6bee63b
LC
2523(define-public guile3.0-haunt
2524 (deprecated-package "guile3.0-haunt" haunt))
2525
0791437f
RW
2526(define-public guile-redis
2527 (package
2528 (name "guile-redis")
7dc75d5f 2529 (version "2.1.1")
0791437f
RW
2530 (home-page "https://github.com/aconchillo/guile-redis")
2531 (source (origin
29fde3bf
EF
2532 (method git-fetch)
2533 (uri (git-reference
2534 (url home-page)
2535 (commit version)))
2536 (file-name (git-file-name name version))
0791437f
RW
2537 (sha256
2538 (base32
7dc75d5f 2539 "0pvk4yadgx64wk81cpisdc7zqhk6ww58xi5fs5fs6s28wb6l5bfj"))))
0791437f 2540 (build-system gnu-build-system)
f048c4f3
EF
2541 (arguments
2542 '(#:make-flags '("GUILE_AUTO_COMPILE=0")))
0791437f
RW
2543 (native-inputs
2544 `(("autoconf" ,autoconf)
2545 ("automake" ,automake)
2546 ("pkg-config" ,pkg-config)
24e38f24 2547 ("guile" ,guile-3.0)))
0791437f
RW
2548 (synopsis "Redis client library for Guile")
2549 (description "Guile-redis provides a Scheme interface to the Redis
2550key-value cache and store.")
2551 (license license:lgpl3+)))
2552
24e38f24
RW
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
0791437f
RW
2561(define-public guile2.0-redis
2562 (package
2563 (inherit guile-redis)
2564 (name "guile2.0-redis")
3968722b
B
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)))
0791437f
RW
2577 (native-inputs `(("guile" ,guile-2.0)
2578 ,@(alist-delete "guile"
2579 (package-native-inputs guile-redis))))))
2580
0791437f
RW
2581(define-public guile-commonmark
2582 (package
2583 (name "guile-commonmark")
b552e307 2584 (version "0.1.2")
0791437f
RW
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
1fa34232
LC
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))))
0791437f 2601 (build-system gnu-build-system)
0e4f49f1
RW
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)))))
0791437f 2615 (inputs
b6bee63b 2616 `(("guile" ,guile-3.0)))
0791437f
RW
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
2622variant of Markdown. The library is written in Guile Scheme and is designed
2623to transform a CommonMark document to SXML. guile-commonmark tries to closely
2624follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
2625is no support for parsing block and inline level HTML.")
2626 (home-page "https://github.com/OrangeShark/guile-commonmark")
2627 (license license:lgpl3+)))
2628
b6bee63b 2629(define-public guile2.2-commonmark
1fa34232
LC
2630 (package
2631 (inherit guile-commonmark)
b6bee63b
LC
2632 (name "guile2.2-commonmark")
2633 (inputs `(("guile" ,guile-2.2)))))
1fa34232 2634
0791437f
RW
2635(define-public guile2.0-commonmark
2636 (package
2637 (inherit guile-commonmark)
2638 (name "guile2.0-commonmark")
2639 (inputs `(("guile" ,guile-2.0)))))
2640
b6bee63b
LC
2641(define-public guile3.0-commonmark
2642 (deprecated-package "guile3.0-commonmark" guile-commonmark))
2643
0791437f
RW
2644(define-public mcron
2645 (package
2646 (name "mcron")
8b3b1988 2647 (version "1.2.0")
0791437f
RW
2648 (source (origin
2649 (method url-fetch)
2650 (uri (string-append "mirror://gnu/mcron/mcron-"
2651 version ".tar.gz"))
2652 (sha256
2653 (base32
8b3b1988 2654 "1midrn15d5kqy4zd2029bj1db6gnfhxg8mcgfy4bkp5p9nl4v4rd"))))
0791437f
RW
2655 (build-system gnu-build-system)
2656 (arguments
2657 '(#:phases (modify-phases %standard-phases
0791437f
RW
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)))))
30ebff69 2674 (native-inputs `(("pkg-config" ,pkg-config)
bbd9c9c9
LC
2675 ("tzdata" ,tzdata-for-tests)
2676 ("guile-native" ;for 'guild compile'
2677 ,@(assoc-ref (package-inputs this-package) "guile"))))
b6bee63b 2678 (inputs `(("guile" ,guile-3.0)))
0791437f
RW
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
2683tasks on a schedule, such as every hour or every Monday. Mcron is written in
2684Guile, so its configuration can be written in Scheme; the original cron
2685format is also supported.")
2686 (license license:gpl3+)))
2687
b6bee63b 2688(define-public guile2.2-mcron
3de0d20b
LC
2689 (package
2690 (inherit mcron)
b6bee63b
LC
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))
3de0d20b 2696
6bb5f88e 2697(define-public guile-picture-language
1bbed203
RW
2698 (let ((commit "a1322bf11945465241ca5b742a70893f24156d12")
2699 (revision "5"))
6bb5f88e
RW
2700 (package
2701 (name "guile-picture-language")
d1a3a8e1 2702 (version (git-version "0.0.1" revision commit))
6bb5f88e
RW
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)))
f1d4d79f 2708 (file-name (git-file-name name version))
6bb5f88e
RW
2709 (sha256
2710 (base32
1bbed203 2711 "03i528z92ainccgm28shg4haxiav5x4cyhyi5dggq1rm027vbm99"))))
d1a3a8e1 2712 (build-system gnu-build-system)
6bb5f88e 2713 (inputs
b6bee63b 2714 `(("guile" ,guile-3.0)))
76171095 2715 (propagated-inputs
b54b3f54
RW
2716 `(("guile-cairo" ,guile-cairo)
2717 ("guile-rsvg" ,guile-rsvg)))
d1a3a8e1
RW
2718 (native-inputs
2719 `(("autoconf" ,autoconf)
2720 ("automake" ,automake)
76171095 2721 ("librsvg" ,librsvg)
d1a3a8e1
RW
2722 ("pkg-config" ,pkg-config)
2723 ("texinfo" ,texinfo)))
6bb5f88e
RW
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.
2728The picture values can directly be displayed in Geiser.")
76171095
RW
2729 ;; (pict base64) is under GPLv3+, the rest is under LGPLv3+
2730 (license (list license:lgpl3+
2731 license:gpl3+)))))
5531782d 2732
b6bee63b 2733(define-public guile2.2-picture-language
4f408684
LC
2734 (package
2735 (inherit guile-picture-language)
b6bee63b 2736 (name "guile2.2-picture-language")
d39c626c
LC
2737 (inputs `(("guile" ,guile-2.2)))
2738 (propagated-inputs
2739 `(("guile-cairo" ,guile2.2-cairo)
2740 ("guile-rsvg" ,guile2.2-rsvg)))))
b6bee63b
LC
2741
2742(define-public guile3.0-picture-language
2743 (deprecated-package "guile3.0-picture-language"
2744 guile-picture-language))
4f408684 2745
5531782d 2746(define-public guile-studio
036f9980 2747 (let ((commit "dd0ad42e51feafebda7cc29afe7c8bc7a182a842")
edf0043a 2748 (revision "1"))
c6607797
RW
2749 (package
2750 (name "guile-studio")
036f9980 2751 (version (git-version "0.1.1" revision commit))
c6607797
RW
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
036f9980 2760 "1cpqilly8dqmai1qsgjxy99zs34sfz95zwxhzx979wryqb69vi0q"))))
c6607797
RW
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
edf0043a 2769 (list (string-append "PICT_DIR="
c6607797
RW
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)
777ecc1e
RW
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
edf0043a 2794 ("emacs-all-the-icons-dired" ,emacs-all-the-icons-dired)
6908552b 2795 ("emacs-dired-sidebar" ,emacs-dired-sidebar)
777ecc1e
RW
2796 ("emacs-doom-modeline" ,emacs-doom-modeline)
2797 ("emacs-modus-themes" ,emacs-modus-themes)
c6607797 2798 ("emacs-geiser" ,emacs-geiser)
d47d50d5 2799 ("emacs-geiser-guile" ,emacs-geiser-guile)
c6607797 2800 ("emacs-company" ,emacs-company)
777ecc1e 2801 ("emacs-ivy" ,emacs-ivy)
c6607797 2802 ("emacs-flycheck" ,emacs-flycheck)
0e7731ba 2803 ("emacs-flycheck-guile" ,emacs-flycheck-guile)
edf0043a 2804 ("emacs-paren-face" ,emacs-paren-face)))
c6607797
RW
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
5531782d
RW
2811for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
2812to evaluate Guile buffers, support for Guile's very own picture language, code
2813completion, a simple mode line, etc.")
c6607797 2814 (license license:gpl3+))))
9f8698ad
RW
2815
2816(define-public guile-stis-parser
3a71dac0
MB
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
9f8698ad
RW
2850supports backtracking and a small logical framework. The idea is to build up
2851chunks that are memoized and there is no clear scanner/parser separation,
2852chunks can be expressions as well as simple tokens.")
3a71dac0 2853 (license license:lgpl2.0+)))
12d73f9c
RW
2854
2855(define-public guile-persist
09f0bc87
MB
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
12d73f9c
RW
2900and objects, closures and structs. This currently does not support
2901serializing continuations or delimited continuations.")
09f0bc87 2902 (license license:lgpl2.0+)))
6d37301b
RW
2903
2904(define-public python-on-guile
ac944584
MB
2905 (package
2906 (name "python-on-guile")
cdf6a118 2907 (version "1.2.3.5")
ac944584
MB
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
cdf6a118 2916 "05xrvcj6a4gzq1ybyin270qz8wamgc7w2skyi9iy6hkpgdhxy8vf"))))
ac944584
MB
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
862d6a91
MB
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"))))
ac944584
MB
2952 (wrap-program (string-append out "/bin/python")
2953 `("GUILE_LOAD_PATH" ":" prefix
862d6a91 2954 (,load-path))
ac944584 2955 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
862d6a91 2956 (,compiled-path)))
ac944584
MB
2957 #t))))))
2958 (inputs
4f33bf57
MB
2959 `(("guile" ,guile-3.0)
2960 ("guile-persist" ,guile-persist)
ac944584
MB
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
6d37301b 2971from @code{tree-il}.")
ac944584 2972 (license license:lgpl2.0+)))
b97b4624
RW
2973
2974(define-public guile-file-names
2975 (package
2976 (name "guile-file-names")
72a0706f 2977 (version "0.3")
b97b4624
RW
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
72a0706f 2985 "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz"))))
b97b4624
RW
2986 (build-system gnu-build-system)
2987 (arguments
2988 `(#:phases
2989 (modify-phases %standard-phases
481eca80 2990 (add-after 'unpack 'fix-target-directory
b97b4624 2991 (lambda _
481eca80 2992 (substitute* "src/Makefile.in"
b97b4624
RW
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
3004names. The module was built on the idea that doing anything more than a
3005non-trivial modification of a file name string is a pain (making sure all
3006slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
3007Inevitably, you have to break the string up into chunks and operate on that
3008list of components. This module takes care of that for you.")
3009 (license license:lgpl3+)))
bdf2dd79
JN
3010
3011(define-public guile-gi
bb6c8f20
RW
3012 (package
3013 (name "guile-gi")
8ab08495 3014 (version "0.3.1")
bb6c8f20
RW
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
8ab08495 3021 "1ljcfyar1nb6h4jskxnnzrcxcsblawc50qqfdn8cax3zqfskmvzj"))))
e4ef0d7c 3022 (build-system glib-or-gtk-build-system)
bb6c8f20 3023 (arguments
b5d4d5b9 3024 `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
e4ef0d7c 3025 #:modules ((guix build glib-or-gtk-build-system)
a431a635
RW
3026 (guix build utils)
3027 (ice-9 popen)
3028 (ice-9 rdelim))
b5d4d5b9
RW
3029 #:phases
3030 (modify-phases %standard-phases
a431a635
RW
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))"))))
d414327a 3037 (substitute* (find-files "module" ".*\\.scm")
a431a635
RW
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 ""
e4ef0d7c 3044 ,(format #f "~a/lib/guile/~a/extensions/"
a431a635
RW
3045 (assoc-ref outputs "out")
3046 effective)))
3047 ,arg)))))
3048 (setenv "GUILE_GI_UNINSTALLED" "1")
3049 #t))
b5d4d5b9
RW
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)))))
bb6c8f20 3057 (native-inputs
f2d97d57 3058 `(("gettext" ,gettext-minimal)
6153fa0a 3059 ("glib:bin" ,glib "bin") ; for glib-compile-resources
bb6c8f20 3060 ("libtool" ,libtool)
b5d4d5b9
RW
3061 ("pkg-config" ,pkg-config)
3062 ("xorg-server" ,xorg-server)))
bb6c8f20
RW
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)))
b6bee63b 3070 (inputs `(("guile" ,guile-3.0)))
bb6c8f20
RW
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
bdf2dd79
JN
3075libraries, such as GTK+3. Its README comes with the disclaimer: This is
3076pre-alpha code.")
bb6c8f20 3077 (license license:gpl3+)))
dec4b3aa 3078
b6bee63b 3079(define-public guile2.2-gi
bfb51f5e
RW
3080 (package
3081 (inherit guile-gi)
b6bee63b 3082 (name "guile2.2-gi")
3d633a1e 3083 (inputs
b6bee63b 3084 `(("guile" ,guile-2.2)
3d633a1e 3085 ,@(alist-delete "guile" (package-inputs guile-gi))))))
bfb51f5e 3086
b6bee63b
LC
3087(define-public guile3.0-gi
3088 (deprecated-package "guile3.0-gi" guile-gi))
3089
fb6b9f3b
MB
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
3111parameters, which define* and lambda* special forms")
3112 (license license:gpl3+)))
3113
7afbaefe
MB
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
3135denote the invalidity of certain code paths in a Scheme program.")
3136 (license license:gpl3+)))
3137
e0607093
MB
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
3162for Guile. SRFI 158 defines utility procedures that create,
3163transform, and consume generators. It also defines procedures that
3164return accumulators. It is implemented by wrapping the sample
3165implementation in a thin Guile compatibility layer.")
3166 (license license:gpl3+)))
3167
dec4b3aa
LC
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
3193formatting combinators specified by
3194@uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
3195more expressive and flexible than the traditional @code{format} procedure.")
3196 (license license:bsd-3))))
f0de9544 3197
08a8872f
MB
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
8ed4c468 3208 (url "https://github.com/scheme-requests-for-implementation/srfi-180")
08a8872f
MB
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.
3233It also supports parsing JSON objects that may be bigger than memory with a streaming
3234API.")
3235 (license license:expat))))
3236
f0de9544 3237(define-public emacsy
48eb71ae
JN
3238 (package
3239 (name "emacsy")
3240 (version "0.4.1")
3241 (source (origin
3242 (method url-fetch)
475c3278
LC
3243 (uri (string-append "mirror://savannah/emacsy/emacsy-"
3244 version ".tar.gz"))
48eb71ae
JN
3245 (sha256
3246 (base32
475c3278
LC
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")))))))
48eb71ae
JN
3268 (build-system gnu-build-system)
3269 (native-inputs
475c3278
LC
3270 `(("bzip2" ,bzip2)
3271 ("guile" ,guile-3.0)
f2d97d57 3272 ("gettext" ,gettext-minimal)
48eb71ae
JN
3273 ("libtool" ,libtool)
3274 ("perl" ,perl)
3275 ("pkg-config" ,pkg-config)
3276 ("texinfo" ,texinfo)
1aa026aa 3277 ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
114f02ba 3278 (inputs
48eb71ae 3279 `(("dbus-glib" ,dbus-glib)
475c3278 3280 ("guile" ,guile-3.0)
48eb71ae
JN
3281 ("guile-lib" ,guile-lib)
3282 ("guile-readline" ,guile-readline)
48eb71ae 3283 ("freeglut" ,freeglut)
48eb71ae 3284 ("webkitgtk" ,webkitgtk)))
114f02ba
AS
3285 (propagated-inputs
3286 `(("glib-networking" ,glib-networking)
3287 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
48eb71ae 3288 (arguments
114f02ba
AS
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
48eb71ae
JN
3297 (modify-phases %standard-phases
3298 (add-before 'configure 'setenv
3299 (lambda _
3300 (setenv "GUILE_AUTO_COMPILE" "0")
114f02ba
AS
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))))))
48eb71ae
JN
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
f0de9544
JN
3328as extension language. Emacsy can give a C program an Emacsy feel with
3329keymaps, minibuffer, recordable macros, history, tab completion, major
3330and minor modes, etc., and can also be used as a pure Guile library. It
48eb71ae
JN
3331comes with a simple counter example using FreeGLUT and browser examples
3332in C using Gtk+-3 and WebKitGtk.")
3333 (license license:gpl3+)))
2135610c 3334
c99f32b9 3335(define-public emacsy-minimal
e9db965f 3336 (let ((commit "v0.4.1-37-g5f91ee6"))
c99f32b9
AS
3337 (package
3338 (inherit emacsy)
3339 (name "emacsy-minimal")
9da87078 3340 (version (string-drop commit 1))
bdcb287e
MR
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
e9db965f 3349 (base32 "03ym14g9qhjqmryr5z065kynqm8yhmvnbs2djl6vp3i9cmqln8cl"))))
c99f32b9 3350 (build-system gnu-build-system)
bb8a0d80
TGR
3351 (native-inputs
3352 `(("autoconf" ,autoconf)
3353 ("automake" ,automake)
3354 ("gettext" ,gettext-minimal)
3355 ("libtool" ,libtool)
3356 ("makeinfo" ,texinfo)
3357 ("pkg-config" ,pkg-config)))
c99f32b9
AS
3358 (inputs
3359 `(("guile" ,guile-2.2)
8d6ead32
MR
3360 ("guile-lib" ,guile2.2-lib)
3361 ("guile-readline" ,guile2.2-readline)))
c99f32b9
AS
3362 (propagated-inputs '())
3363 (arguments
3364 `(#:configure-flags '("--without-examples")
3365 #:phases
3366 (modify-phases %standard-phases
bdcb287e
MR
3367 (add-before 'configure 'setenv
3368 (lambda _
3369 (setenv "GUILE_AUTO_COMPILE" "0")
3370 #t))))))))
c99f32b9 3371
2135610c
LC
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
3403perform geometrical transforms on JPEG images.")
3404 (license license:gpl3+))))
e8c2da41
AS
3405
3406(define-public nomad
3407 (package
3408 (name "nomad")
569cd538 3409 (version "0.2.0-alpha-199-g3e7a475")
e8c2da41
AS
3410 (source (origin
3411 (method git-fetch)
3412 (uri (git-reference
0e5a68a2 3413 (url "https://git.savannah.gnu.org/git/nomad.git/")
e8c2da41
AS
3414 (commit version)))
3415 (file-name (git-file-name name version))
3416 (sha256
3417 (base32
569cd538 3418 "0p0ha6prp7pyadp61clbhc6b55023vxzfwy14j2qygb2mkq7fhic"))))
e8c2da41
AS
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)
5f1553ce
AS
3427 ("glib:bin" ,glib "bin")
3428 ("texinfo" ,texinfo)
fccc0127 3429 ("gettext" ,gettext-minimal)
5f1553ce 3430 ("perl" ,perl)))
e8c2da41 3431 (inputs
0e5a68a2
MR
3432 `(;; Guile
3433 ("guile" ,guile-2.2)
19cf8342 3434 ("guile-lib" ,guile2.2-lib)
19cf8342 3435 ("guile-readline" ,guile2.2-readline)
a987f128 3436 ("guile-gcrypt" ,guile2.2-gcrypt)
e8c2da41 3437 ("gnutls" ,gnutls)
0e5a68a2 3438 ("g-golf" ,g-golf)
e8c2da41
AS
3439 ("shroud" ,shroud)
3440 ("emacsy" ,emacsy-minimal)
0e5a68a2 3441 ;; Gtk
e8c2da41
AS
3442 ("glib" ,glib)
3443 ("dbus-glib" ,dbus-glib)
0e5a68a2 3444 ("glib-networking" ,glib-networking)
e8c2da41 3445 ("gtk+" ,gtk+)
a987f128 3446 ("gtk+:bin" ,gtk+ "bin")
e8c2da41 3447 ("webkitgtk" ,webkitgtk)
0e5a68a2 3448 ("gtksourceview" ,gtksourceview)
569cd538 3449 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
0e5a68a2
MR
3450 ("vte" ,vte)
3451 ;; Gstreamer
a987f128
MR
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)
0e5a68a2
MR
3457 ;; Util
3458 ("xorg-server" ,xorg-server)))
e8c2da41
AS
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)
0e5a68a2
MR
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)))
e8c2da41
AS
3509 #t))))))
3510 (home-page "https://savannah.nongnu.org/projects/nomad/")
3511 (synopsis "Extensible Web Browser in Guile Scheme")
a987f128
MR
3512 (description "Nomad is a Emacs-like web browser that consists of a modular
3513feature-set, fully programmable in Guile Scheme.")
e8c2da41 3514 (license license:gpl3+)))
248965c9
RW
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
4b83f820 3569 `(("guile-lib" ,guile2.2-lib)))
248965c9
RW
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
3573for the Guile Scheme language. It is based on Vigra (Vision with Generic
3574Algorithms), a C++ image processing and analysis library. Guile-CV contains
3575bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
3576enriched with pure Guile Scheme algorithms, all accessible through a nice,
3577clean and easy to use high level API.")
3578 (license license:gpl3+)))
7ff157c1
RW
3579
3580(define-public guile-ffi-fftw
353fb48f
RW
3581 (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
3582 (revision "2"))
7ff157c1
RW
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
b0e7b699 3589 (url "https://github.com/lloda/guile-ffi-fftw")
7ff157c1
RW
3590 (commit commit)))
3591 (file-name (git-file-name "guile-ffi-fftw" version))
3592 (sha256
3593 (base32
353fb48f 3594 "08j40a5p6a8pgvhffmzb5rfdnrav2mksy3gfjkdqy93jfj1z5afg"))))
7ff157c1
RW
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
3616library's ‘guru interface’. It provides two functions: @code{fftw-dft! rank
3617sign in out} and @code{fftw-dft rank sign in}. These bindings being minimal,
3618there is no support for computing & reusing plans, or split r/i transforms, or
3619anything other than straight complex DFTs.")
353fb48f 3620 (license license:lgpl3+))))
f9ec89f4
TS
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
3646run SRFI 64 test suites. It gives Automake insight into the individual
3647tests being run, resulting clearer and more specific output.")
3648 (license license:gpl3+)))
f6bf4b2c
TS
3649
3650(define-public guile-semver
3651 (package
3652 (name "guile-semver")
85ced665 3653 (version "0.1.1")
f6bf4b2c
TS
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
85ced665 3660 "109p4n39ln44cxvwdccf9kgb96qx54makvd2ir521ssz6wchjyag"))))
f6bf4b2c
TS
3661 (build-system gnu-build-system)
3662 (native-inputs
85ced665 3663 `(("pkg-config" ,pkg-config)))
f6bf4b2c 3664 (inputs
720e87fe 3665 `(("guile" ,guile-3.0)))
f6bf4b2c
TS
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,
3669comparing, and writing Semantic Versions. It also includes ranges in
3670the style of the Node Package Manager (NPM).")
3671 (license license:gpl3+)))
d67fa5c8 3672
b488b64a 3673(define-public guile3.0-semver
720e87fe
LC
3674 (deprecated-package "guile3.0-semver" guile-semver))
3675
3676(define-public guile2.2-semver
b488b64a
MB
3677 (package
3678 (inherit guile-semver)
720e87fe 3679 (name "guile2.2-semver")
b488b64a 3680 (inputs
720e87fe 3681 `(("guile" ,guile-2.2)))))
b488b64a 3682
d67fa5c8
LC
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
b6bee63b 3726 `(("guile" ,guile-3.0)))
d67fa5c8
LC
3727 (synopsis "Cryprographic hash functions implemented in Scheme")
3728 (description
3729 "The @code{(hashing @dots{})} modules implement cryptographic hash
3730functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
3731SHA-512).")
3732 (license license:expat)))
f918a8d9 3733
b6bee63b 3734(define-public guile2.2-hashing
f918a8d9
LC
3735 (package
3736 (inherit guile-hashing)
b6bee63b 3737 (name "guile2.2-hashing")
f918a8d9 3738 (native-inputs
318e1a93 3739 `(("guile" ,guile-2.2)))))
ef2b1d2c 3740
b6bee63b
LC
3741(define-public guile3.0-hashing
3742 (deprecated-package "guile3.0-hashing" guile-hashing))
3743
60c9264b
LC
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
3776memoizing, backtracking, recursive-descent parsing technique that runs in time
3777and space linear in the size of the input text.")
3778 (license license:expat)))
3779
97a77eab
LC
3780(define-public guile-ac-d-bus
3781 (package
3782 (name "guile-ac-d-bus")
933fdd55 3783 (version "1.0.0-beta.0")
97a77eab
LC
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
933fdd55 3793 "0rl809qimhgz6b0rixakb42r2l4g53jr09a2g0s1hxgab0blz0kb"))))
97a77eab
LC
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
3837interprocess communication protocol popular on GNU/Linux systems to
3838communicate with a variety of services. Originally designed for desktop
3839environments, it is now used by programs like VLC media player, BlueZ,
3840NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit,
3841gnome-keyring, and many more.")
3842 (license license:expat)))
3843
ef2b1d2c
RW
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
0a76d7a9
RW
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))))
ef2b1d2c
RW
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
0a76d7a9 3874 `(("guile" ,guile-3.0)))
ef2b1d2c
RW
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
3882as signed sessions, multipart message support, etc.")
3883 (license license:gpl3+))))
5479cef8 3884
0a76d7a9
RW
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
5479cef8
RW
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)
ca24b3fb 3921 ("guile" ,guile-3.0)
5479cef8
RW
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
3929currently a re-implementation of the lentes library for Clojure. Lenses
3930provide composable procedures, which can be used to focus, apply functions
3931over, or update a value in arbitrary data structures.")
3932 (license license:gpl3+))))
69bb61f1 3933
ca24b3fb
RW
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
69bb61f1 3942(define-public guile-xapian
d10e7a34
RW
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
93989aed 3960 `(("guile" ,guile-3.0)
d10e7a34
RW
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
69bb61f1
AI
3972search engine library. Xapian is a highly adaptable toolkit which allows
3973developers to easily add advanced indexing and search facilities to their own
3974applications. It has built-in support for several families of weighting
3975models and also supports a rich set of boolean query operators.")
d10e7a34 3976 (license license:gpl2+)))
69bb61f1 3977
93989aed 3978(define-public guile2.2-xapian
69bb61f1
AI
3979 (package
3980 (inherit guile-xapian)
93989aed 3981 (name "guile2.2-xapian")
69bb61f1 3982 (inputs
93989aed 3983 `(("guile" ,guile-2.2)
69bb61f1 3984 ,@(alist-delete "guile" (package-inputs guile-xapian))))))
be789065 3985
93989aed
LC
3986(define-public guile3.0-xapian
3987 (deprecated-package "guile3.0-xapian" guile-xapian))
3988
be789065
AS
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
8ed4c468 3996 "https://github.com/o-nly/torrent")
be789065
AS
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
4016according to Bitorrent BEP003.")
4017 (license license:gpl3+)))
3c0456c6
RW
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
b0e7b699 4028 (url "https://github.com/rekado/guile-irc")
3c0456c6
RW
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)
b4412382 4043 ("guile" ,guile-3.0)))
3c0456c6
RW
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
4047Relay Chat} (IRC).")
4048 ;; Some file headers incorrectly say LGPLv2+.
4049 (license license:lgpl2.1+))))
8ffc20ef 4050
b141e1d5 4051(define-public guile-websocket
8ffc20ef
ES
4052 (let ((commit "c854e0f84a40d972cbd532bbb89c97ca0126a7cf"))
4053 (package
b141e1d5 4054 (name "guile-websocket")
8ffc20ef
ES
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"
cea91813
LC
4080 (("2.0") "3.0")
4081
4082 ;; Install .go files where they belong.
4083 (("/ccache") "/site-ccache"))
8ffc20ef
ES
4084 #t)))))
4085 (native-inputs
4086 `(("autoconf" ,autoconf)
4087 ("automake" ,automake)))
4088 (inputs
b141e1d5 4089 `(("guile" ,guile-3.0)))
8ffc20ef
ES
4090 (synopsis "Websocket server/client for Guile")
4091 (description "Guile-websocket provides an implementation of the
4092WebSocket protocol as defined by RFC 6455.")
4093 (home-page "https://git.dthompson.us/guile-websocket.git")
4094 (license license:lgpl3+))))
b141e1d5
LC
4095
4096(define-public guile3.0-websocket
4097 (deprecated-package "guile3.0-websocket" guile-websocket))
c08f235b
JL
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
4126Framework) format defined by the W3C for GNU Guile. RDF structures include
4127triples (facts with a subject, a predicate and an object), graphs which are
4128sets of triples, and datasets, which are collections of graphs.
4129
4130RDF specifications include the specification of concrete syntaxes and of
4131operations on graphs. This library implements some basic functionalities,
4132such as parsing and producing turtle and nquads syntax, as well as
4133manipulating graphs and datasets.")
4134 (license license:gpl3+)))
d1fa24af
JL
4135
4136(define-public guile-jsonld
4137 (package
4138 (name "guile-jsonld")
1bad456e 4139 (version "1.0.2")
d1fa24af
JL
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
1bad456e 4149 "1ryyvh71899z2inivqglb8d78zzp1sd0wv9a56kvcmrxf1966z6r"))))
d1fa24af
JL
4150 (build-system gnu-build-system)
4151 (arguments
4152 `(#:tests? #f)); require network
4153 (propagated-inputs
4154 `(("guile-gnutls" ,gnutls)
1bad456e 4155 ("guile-json" ,guile-json-4)
d1fa24af
JL
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
4167Linked Data) API defined by the W3C for GNU Guile. It allows you to express links
4168between data, in a way that is very similar to WikiData or RDF for instance.
4169An object can have relations (in the form of an IRI) that relates it to one or
4170more objects or strings, represented by a Json object or an IRI.")
4171 (license license:gpl3+)))
a684e6e2
MB
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
4214similar to struct in Python or pack and unpack in Perl.")
4215 (license license:expat)))
199da208
MB
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
4260code and object formats; for all architectures. Here you'll find libraries
4261for working with binary code: assembly, disassembly, instruction tables,
4262object formats and related areas.")
4263 (license license:expat)))
3826288f
MB
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
4306features not found in the standard read procedure such as a compatible mode
4307with support for other RnRS standards and a tolerant mode that continues on
4308errors.")
4309 (license license:expat)))
465a951c
MO
4310
4311(define-public guile-avahi
d7f2b1e5
MO
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
69b3907a
LLB
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
d7f2b1e5
MO
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)
d7f2b1e5
MO
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
4366use functionalities of the Avahi client library from Guile Scheme programs.
4367Avahi itself is an implementation of multicast DNS (mDNS) and DNS Service
465a951c 4368Discovery (DNS-SD).")
d7f2b1e5
MO
4369 (home-page "https://www.nongnu.org/guile-avahi/")
4370 (license license:lgpl3+))))
a8c1eaba 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)
fccc0127 4399 ("gettext" ,gettext-minimal)))
a8c1eaba 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
4405recursively. 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
4407directory of its argument if it does not exist.")
4408 (home-page "https://mkdir-p.divoplade.fr")
4409 (license license:asl2.0)))
f53c1005 4410
01b59dea
RW
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
4438open, industry standard (RFC 7519) method for representing claims securely
4439between two parties. guile-jwt allows you to decode, verify and generate
4440JWT. Supported algorithms: HS256, HS384, HS512.")
4441 (license license:gpl3+)))
4442
f53c1005 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
4467which provides core cryptographic primitives needed to build higher-level
4468tools.")
4469 (home-page "https://inqlab.net/git/guile-sodium.git")
4470 (license license:gpl3+)))
208cb960 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
e6eb0216 4499Immutable Storage (ERIS). ERIS allows arbitrary content to be encoded into
208cb960 4500uniformly sized, encrypted blocks that can be reassembled using a short
4501read-capability.")
4502 (home-page "https://inqlab.net/git/eris.git")
4503 (license license:gpl3+)))
67a60840
RW
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,
4528including parsing and code generation.")
4529 (license license:gpl3+)))
e47a5711
RW
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)))
0a40da60 4571
055d0fa3
RW
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
4601version 1. DRMAA is a resource management library implemented by HPC cluster
4602schedulers.")
4603 (license license:gpl3+)))
4604
559feb66
RW
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
4670ffi-helper from nyacc.")
4671 (license license:lgpl3+))))
4672
0a40da60
RW
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
4697for C++ code using a simple embedded DSL. Think of it as @code{Boost.Python}
4698or @code{LuaBind} but for Scheme.")
4699 (license license:boost1.0))))
ff9f2463 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
4724a binary data serialization format. CBOR is similar to JSON but serializes to
4725binary which is smaller and faster to generate and parse. This package provides
4726a Guile implementation of CBOR.")
4727 (home-page "https://inqlab.net/git/guile-cbor.git")
4728 (license license:gpl3+)))
4cd88522
TS
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
4750properties inspired by ghc-quickcheck. You can use it to express properties,
4751which functions should satisfy, as Scheme code and then check whether they hold
4752in a large number of randomly generated test cases.")
4753 (license license:gpl3+)))
767c3df8
ZK
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
4776locations.")
4777 (license license:agpl3+)))
b7c7a61d
JL
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
4806of the netlink protocol.
4807
4808It provides a generic library for writing implementations of a netlink
4809protocol, a low-level rtnetlink implementation that uses that library and a
4810high-level API for network management that uses rtnetlink.")
4811 (license license:gpl3+)))