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