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