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