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