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