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