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