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