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