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