3090c6078b19f6ae4ee1c753ef42c6ab54e0c215
[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.2")
1625 (source (origin
1626 (method url-fetch)
1627 (uri (string-append "https://bitbucket.org/ArneBab/"
1628 "wisp/downloads/wisp-"
1629 version ".tar.gz"))
1630 (sha256
1631 (base32
1632 "03pz7pj9jyallynhflp5s7qax8dj1fs8la434wrfgz7g1kgjnvf6"))))
1633 (build-system gnu-build-system)
1634 (arguments
1635 `(#:modules ((guix build gnu-build-system)
1636 ((guix build emacs-build-system) #:prefix emacs:)
1637 (guix build utils)
1638 (guix build emacs-utils)
1639 (ice-9 rdelim)
1640 (ice-9 popen))
1641 #:imported-modules (,@%gnu-build-system-modules
1642 (guix build emacs-build-system)
1643 (guix build emacs-utils))
1644 #:phases
1645 (modify-phases %standard-phases
1646 (add-after 'unpack 'support-guile-3.0
1647 (lambda _
1648 (substitute* "configure"
1649 (("_guile_versions_to_search=\"2.2")
1650 "_guile_versions_to_search=\"3.0 2.2"))
1651 #t))
1652 (add-before 'configure 'patch-/usr/bin/env
1653 (lambda _
1654 (substitute* "Makefile.in"
1655 (("/usr/bin/env bash") (which "bash")))
1656 #t))
1657 ;; auto compilation breaks, but if we set HOME to /tmp,
1658 ;; that works ok
1659 (add-before 'check 'auto-compile-hacky-workaround
1660 (lambda _ (setenv "HOME" "/tmp") #t))
1661 (add-after 'install 'install-go-files
1662 (lambda* (#:key outputs inputs #:allow-other-keys)
1663 (let* ((out (assoc-ref outputs "out"))
1664 (effective (read-line
1665 (open-pipe* OPEN_READ
1666 "guile" "-c"
1667 "(display (effective-version))")))
1668 (module-dir (string-append out "/share/guile/site/"
1669 effective))
1670 (object-dir (string-append out "/lib/guile/" effective
1671 "/site-ccache"))
1672 (prefix (string-length module-dir)))
1673 ;; compile to the destination
1674 (for-each (lambda (file)
1675 (let* ((base (string-drop (string-drop-right file 4)
1676 prefix))
1677 (go (string-append object-dir base ".go")))
1678 (invoke "guild" "compile" "-L" module-dir
1679 file "-o" go)))
1680 (find-files module-dir "\\.scm$"))
1681 #t)))
1682 (add-after 'install 'install-emacs-files
1683 (assoc-ref emacs:%standard-phases 'install))
1684 (add-after 'install-emacs-files 'compile-emacs-files
1685 (assoc-ref emacs:%standard-phases 'build))
1686 (add-after 'compile-emacs-files 'make-autoloads
1687 (assoc-ref emacs:%standard-phases 'make-autoloads)))))
1688 (home-page "https://www.draketo.de/english/wisp")
1689 (inputs
1690 `(("guile" ,guile-3.0)))
1691 (native-inputs
1692 `(("emacs" ,emacs-minimal)
1693 ("python" ,python)
1694 ("pkg-config" ,pkg-config)))
1695 (synopsis "Whitespace to lisp syntax for Guile")
1696 (description "Wisp is a syntax for Guile which provides a Python-like
1697 whitespace-significant language. It may be easier on the eyes for some
1698 users and in some situations.")
1699 (license license:gpl3+)))
1700
1701 (define-public guile2.2-wisp
1702 (package
1703 (inherit guile-wisp)
1704 (name "guile2.2-wisp")
1705 (inputs `(("guile" ,guile-2.2)))))
1706
1707 (define-public guile3.0-wisp
1708 (deprecated-package "guile3.0-wisp" guile-wisp))
1709
1710 (define-public guile-sly
1711 (package
1712 (name "guile-sly")
1713 (version "0.1")
1714 (source (origin
1715 (method url-fetch)
1716 (uri (string-append "https://files.dthompson.us/sly/sly-"
1717 version ".tar.gz"))
1718 (sha256
1719 (base32
1720 "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
1721 (modules '((guix build utils)))
1722 (snippet
1723 '(begin
1724 (substitute* "configure"
1725 (("_guile_required_version=\"2.0.11\"")
1726 "_guile_required_version=\"2\"")
1727 (("ac_subst_vars='")
1728 "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
1729 (substitute* (find-files "." "Makefile.in")
1730 (("moddir = .*$")
1731 (string-append
1732 "moddir = "
1733 "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
1734 (("godir = .*$")
1735 (string-append
1736 "godir = "
1737 "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
1738 #t))))
1739 (build-system gnu-build-system)
1740 (arguments
1741 '(#:configure-flags
1742 (list (string-append "--with-libfreeimage-prefix="
1743 (assoc-ref %build-inputs "freeimage"))
1744 (string-append "--with-libgslcblas-prefix="
1745 (assoc-ref %build-inputs "gsl")))))
1746 (native-inputs
1747 `(("pkg-config" ,pkg-config)))
1748 (propagated-inputs
1749 `(("guile-sdl" ,guile-sdl)
1750 ("guile-opengl" ,guile-opengl)))
1751 (inputs
1752 `(("guile" ,guile-2.2)
1753 ("gsl" ,gsl)
1754 ("freeimage" ,freeimage)
1755 ("mesa" ,mesa)))
1756 (synopsis "2D/3D game engine for GNU Guile")
1757 (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly
1758 features a functional reactive programming interface and live coding
1759 capabilities.")
1760 (home-page "https://dthompson.us/projects/sly.html")
1761 (license license:gpl3+)))
1762
1763 (define-public g-golf
1764 (let ((commit "84e894eb7945c3bcdf7f8d5135c1be3efa524c92")
1765 (revision "822"))
1766 (package
1767 (name "g-golf")
1768 (version (git-version "0.1.0" revision commit))
1769 (source
1770 (origin
1771 (method git-fetch)
1772 (uri (git-reference
1773 (url "https://git.savannah.gnu.org/git/g-golf.git")
1774 (commit commit)))
1775 (file-name (git-file-name name version))
1776 (sha256
1777 (base32 "1pkcij65zy2lkip5yrfzj85nq17pp9mrf0d4sk6hpjqr4kd0bxd5"))))
1778 (build-system gnu-build-system)
1779 (native-inputs
1780 `(("autoconf" ,autoconf)
1781 ("automake" ,automake)
1782 ("texinfo" ,texinfo)
1783 ("gettext" ,gettext-minimal)
1784 ("libtool" ,libtool)
1785 ("pkg-config" ,pkg-config)
1786 ("xorg-server" ,xorg-server)))
1787 (inputs
1788 `(("guile" ,guile-2.2)
1789 ("guile-lib" ,guile2.2-lib)
1790 ("clutter" ,clutter)
1791 ("gtk" ,gtk+)
1792 ("glib" ,glib)))
1793 (propagated-inputs
1794 `(("gobject-introspection" ,gobject-introspection)))
1795 (arguments
1796 `(#:phases
1797 (modify-phases %standard-phases
1798 (add-before 'configure 'tests-work-arounds
1799 (lambda* (#:key inputs #:allow-other-keys)
1800 ;; In build environment, There is no /dev/tty
1801 (substitute*
1802 "test-suite/tests/gobject.scm"
1803 (("/dev/tty") "/dev/null"))))
1804 (add-before 'configure 'substitute-libs
1805 (lambda* (#:key inputs outputs #:allow-other-keys)
1806 (let* ((get (lambda (key lib)
1807 (string-append (assoc-ref inputs key) "/lib/" lib)))
1808 (libgi (get "gobject-introspection" "libgirepository-1.0"))
1809 (libglib (get "glib" "libglib-2.0"))
1810 (libgobject (get "glib" "libgobject-2.0"))
1811 (libgdk (get "gtk" "libgdk-3")))
1812 (substitute* "configure"
1813 (("SITEDIR=\"\\$datadir/g-golf\"")
1814 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
1815 (("SITECCACHEDIR=\"\\$libdir/g-golf/")
1816 "SITECCACHEDIR=\"$libdir/"))
1817 (substitute* "g-golf/init.scm"
1818 (("libgirepository-1.0") libgi)
1819 (("libglib-2.0") libglib)
1820 (("libgdk-3") libgdk)
1821 (("libgobject-2.0") libgobject)
1822 (("\\(dynamic-link \"libg-golf\"\\)")
1823 (format #f "~s"
1824 `(dynamic-link
1825 (format #f "~alibg-golf"
1826 (if (getenv "GUILE_GGOLF_UNINSTALLED")
1827 ""
1828 ,(format #f "~a/lib/"
1829 (assoc-ref outputs "out"))))))))
1830 (setenv "GUILE_AUTO_COMPILE" "0")
1831 (setenv "GUILE_GGOLF_UNINSTALLED" "1")
1832 #t)))
1833 (add-before 'check 'start-xorg-server
1834 (lambda* (#:key inputs #:allow-other-keys)
1835 ;; The test suite requires a running X server.
1836 (system (format #f "~a/bin/Xvfb :1 &"
1837 (assoc-ref inputs "xorg-server")))
1838 (setenv "DISPLAY" ":1")
1839 #t)))))
1840 (home-page "https://www.gnu.org/software/g-golf/")
1841 (synopsis "Guile bindings for GObject Introspection")
1842 (description
1843 "G-Golf (Gnome: (Guile Object Library for)) is a library for developing
1844 modern applications in Guile Scheme. It comprises a direct binding to the
1845 GObject Introspection API and higher-level functionality for importing Gnome
1846 libraries and making GObject classes (and methods) available in Guile's
1847 object-oriented programming system, GOOPS.")
1848 (license license:lgpl3+))))
1849
1850 (define-public g-wrap
1851 (package
1852 (name "g-wrap")
1853 (version "1.9.15")
1854 (source (origin
1855 (method url-fetch)
1856 (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
1857 version ".tar.gz"))
1858 (sha256
1859 (base32
1860 "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
1861 (build-system gnu-build-system)
1862 (native-inputs
1863 `(("pkg-config" ,pkg-config)))
1864 (propagated-inputs
1865 `(("guile" ,guile-2.2)
1866 ("guile-lib" ,guile-lib)))
1867 (inputs
1868 `(("libffi" ,libffi)))
1869 (arguments
1870 `(#:configure-flags '("--disable-Werror")
1871 #:phases
1872 (modify-phases %standard-phases
1873 (add-before 'configure 'pre-configure
1874 (lambda* (#:key outputs #:allow-other-keys)
1875 (let ((out (assoc-ref outputs "out")))
1876 (substitute* (find-files "." "^Makefile.in$")
1877 (("guilemoduledir =.*guile/site" all)
1878 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
1879 #t))))))
1880 (synopsis "Generate C bindings for Guile")
1881 (description "G-Wrap is a tool and Guile library for generating function
1882 wrappers for inter-language calls. It currently only supports generating Guile
1883 wrappers for C functions. Given a definition of the types and prototypes for
1884 a given C interface, G-Wrap will automatically generate the C code that
1885 provides access to that interface and its types from the Scheme level.")
1886 (home-page "https://www.nongnu.org/g-wrap/index.html")
1887 (license license:lgpl2.1+)))
1888
1889 (define-public guile-miniadapton
1890 (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
1891 (revision "1"))
1892 (package
1893 (name "guile-miniadapton")
1894 (version (string-append "0-" revision "." (string-take commit 9)))
1895 (source (origin
1896 (method git-fetch)
1897 (uri (git-reference
1898 (url "https://github.com/fisherdj/miniAdapton")
1899 (commit commit)))
1900 (file-name (string-append name "-" version "-checkout"))
1901 (sha256
1902 (base32
1903 "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
1904 (build-system guile-build-system)
1905 (native-inputs
1906 `(("guile" ,guile-2.2)))
1907 (home-page "https://github.com/fisherdj/miniAdapton")
1908 (synopsis "Minimal implementation of incremental computation in Guile
1909 Scheme")
1910 (description "This package provides a complete Scheme implementation of
1911 miniAdapton, which implements the core functionality of the Adapton system for
1912 incremental computation (also known as self-adjusting computation). Like
1913 Adapton, miniAdapton allows programmers to safely combine mutation and
1914 memoization. miniAdapton is built on top of an even simpler system,
1915 microAdapton. Both miniAdapton and microAdapton are designed to be easy to
1916 understand, extend, and port to host languages other than Scheme.")
1917 (license license:expat))))
1918
1919 (define-public guile-reader
1920 (package
1921 (name "guile-reader")
1922 (version "0.6.3")
1923 (source (origin
1924 (method url-fetch)
1925 (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
1926 version ".tar.gz"))
1927 (sha256
1928 (base32
1929 "1fyjckmygkhq22lq8nqc86yl5zzbqd7a944dnz5c1f6vx92b9hiq"))))
1930 (build-system gnu-build-system)
1931 (native-inputs `(("pkgconfig" ,pkg-config)
1932 ("gperf" ,gperf)))
1933 (inputs `(("guile" ,guile-3.0)))
1934 (synopsis "Framework for building readers for GNU Guile")
1935 (description
1936 "Guile-Reader is a simple framework for building readers for GNU Guile.
1937
1938 The idea is to make it easy to build procedures that extend Guile’s read
1939 procedure. Readers supporting various syntax variants can easily be written,
1940 possibly by re-using existing “token readers” of a standard Scheme
1941 readers. For example, it is used to implement Skribilo’s R5RS-derived
1942 document syntax.
1943
1944 Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
1945 hopefully more powerful and flexible (for instance, one may instantiate as
1946 many readers as needed).")
1947 (home-page "https://www.nongnu.org/guile-reader/")
1948 (license license:gpl3+)))
1949
1950 (define-public guile2.2-reader
1951 (package
1952 (inherit guile-reader)
1953 (name "guile2.2-reader")
1954 (inputs `(("guile" ,guile-2.2)))))
1955
1956 (define-public guile-ncurses
1957 (package
1958 (name "guile-ncurses")
1959 (version "3.0")
1960 (source (origin
1961 (method url-fetch)
1962 (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
1963 version ".tar.gz"))
1964 (sha256
1965 (base32
1966 "038xbffalhymg26lvmzgf7ljilxz2f2zmqg5r5nfzbipfbprwjhf"))))
1967 (build-system gnu-build-system)
1968 (inputs `(("ncurses" ,ncurses)
1969 ("guile" ,guile-3.0)))
1970 (native-inputs `(("pkg-config" ,pkg-config)))
1971 (arguments
1972 `(#:modules ((guix build gnu-build-system)
1973 ((guix build guile-build-system)
1974 #:select (target-guile-effective-version))
1975 (guix build utils))
1976 #:imported-modules ((guix build guile-build-system)
1977 ,@%gnu-build-system-modules)
1978 #:configure-flags (list "--with-ncursesw" ; Unicode support
1979 "--with-gnu-filesystem-hierarchy")
1980 #:phases
1981 (modify-phases %standard-phases
1982 (add-before 'build 'fix-libguile-ncurses-file-name
1983 (lambda* (#:key outputs #:allow-other-keys)
1984 (invoke "make" "install"
1985 "-C" "src/ncurses"
1986 "-j" (number->string
1987 (parallel-job-count)))
1988 (let* ((out (assoc-ref outputs "out"))
1989 (dir "src/ncurses")
1990 (files (find-files dir ".scm")))
1991 (substitute* files
1992 (("\"libguile-ncurses\"")
1993 (format #f "\"~a/lib/guile/~a/libguile-ncurses\""
1994 out (target-guile-effective-version))))
1995 #t))))))
1996 (home-page "https://www.gnu.org/software/guile-ncurses/")
1997 (synopsis "Guile bindings to ncurses")
1998 (description
1999 "guile-ncurses provides Guile language bindings for the ncurses
2000 library.")
2001 (license license:lgpl3+)))
2002
2003 (define-public guile2.2-ncurses
2004 (package
2005 (inherit guile-ncurses)
2006 (name "guile2.2-ncurses")
2007 (inputs `(("ncurses" ,ncurses)
2008 ("guile" ,guile-2.2)))))
2009
2010 (define-public guile3.0-ncurses
2011 (deprecated-package "guile3.0-ncurses" guile-ncurses))
2012
2013 (define-public guile-ncurses/gpm
2014 (package
2015 (inherit guile-ncurses)
2016 (name "guile-ncurses-with-gpm")
2017 (inputs `(("ncurses" ,ncurses/gpm)
2018 ("guile" ,guile-2.2)))))
2019
2020 (define-public guile3.0-ncurses/gpm
2021 (package
2022 (inherit guile3.0-ncurses)
2023 (name "guile3.0-ncurses-with-gpm")
2024 (inputs `(("ncurses" ,ncurses/gpm)
2025 ("guile" ,guile-3.0)))))
2026
2027 (define-public guile-lib
2028 (package
2029 (name "guile-lib")
2030 (version "0.2.6.1")
2031 (source (origin
2032 (method url-fetch)
2033 (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
2034 version ".tar.gz"))
2035 (sha256
2036 (base32
2037 "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd"))
2038 (modules '((guix build utils)))
2039 (snippet
2040 '(begin
2041 ;; Work around miscompilation on Guile 3.0.0 at -O2:
2042 ;; <https://bugs.gnu.org/39251>.
2043 (substitute* "src/md5.scm"
2044 (("\\(define f-ash ash\\)")
2045 "(define f-ash (@ (guile) ash))\n")
2046 (("\\(define f-add \\+\\)")
2047 "(define f-add (@ (guile) +))\n"))
2048 #t))))
2049 (build-system gnu-build-system)
2050 (arguments
2051 '(#:make-flags
2052 '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors
2053 #:phases
2054 (modify-phases %standard-phases
2055 (add-before 'configure 'patch-module-dir
2056 (lambda _
2057 (substitute* "src/Makefile.in"
2058 (("^moddir = ([[:graph:]]+)")
2059 "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
2060 (("^godir = ([[:graph:]]+)")
2061 "godir = \
2062 $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
2063 #t)))))
2064 (native-inputs `(("pkg-config" ,pkg-config)))
2065 (inputs `(("guile" ,guile-3.0)))
2066 (home-page "https://www.nongnu.org/guile-lib/")
2067 (synopsis "Collection of useful Guile Scheme modules")
2068 (description
2069 "Guile-Lib is intended as an accumulation place for pure-scheme Guile
2070 modules, allowing for people to cooperate integrating their generic Guile
2071 modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
2072 for Guile\".")
2073
2074 ;; The whole is under GPLv3+, but some modules are under laxer
2075 ;; distribution terms such as LGPL and public domain. See `COPYING' for
2076 ;; details.
2077 (license license:gpl3+)))
2078
2079 (define-public guile2.0-lib
2080 (package
2081 (inherit guile-lib)
2082 (name "guile2.0-lib")
2083 (inputs `(("guile" ,guile-2.0)))))
2084
2085 (define-public guile2.2-lib
2086 (package
2087 (inherit guile-lib)
2088 (name "guile2.2-lib")
2089 (inputs `(("guile" ,guile-2.2)))))
2090
2091 (define-public guile3.0-lib
2092 (deprecated-package "guile3.0-lib" guile-lib))
2093
2094 (define-public guile-minikanren
2095 (package
2096 (name "guile-minikanren")
2097 (version "20150424.e844d85")
2098 (source (origin
2099 (method git-fetch)
2100 (uri (git-reference
2101 (url "https://github.com/ijp/minikanren")
2102 (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
2103 (file-name (string-append name "-" version "-checkout"))
2104 (sha256
2105 (base32
2106 "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
2107 (build-system guile-build-system)
2108 (native-inputs
2109 `(("guile" ,guile-3.0)))
2110 (home-page "https://github.com/ijp/minikanren")
2111 (synopsis "MiniKanren declarative logic system, packaged for Guile")
2112 (description
2113 "MiniKanren is a relational programming extension to the Scheme
2114 programming Language, written as a smaller version of Kanren suitable for
2115 pedagogical purposes. It is featured in the book, The Reasoned Schemer,
2116 written by Dan Friedman, William Byrd, and Oleg Kiselyov.
2117
2118 This is Ian Price's r6rs packaged version of miniKanren, which deviates
2119 slightly from miniKanren mainline.
2120
2121 See http://minikanren.org/ for more on miniKanren generally.")
2122 (license license:expat)))
2123
2124 (define-public guile2.0-minikanren
2125 (package
2126 (inherit guile-minikanren)
2127 (name "guile2.0-minikanren")
2128 (native-inputs `(("guile" ,guile-2.0)))))
2129
2130 (define-public guile2.2-minikanren
2131 (package
2132 (inherit guile-minikanren)
2133 (name "guile2.2-minikanren")
2134 (native-inputs `(("guile" ,guile-2.2)))))
2135
2136 (define-public guile3.0-minikanren
2137 (deprecated-package "guile3.0-minikanren" guile-minikanren))
2138
2139 (define-public guile-irregex
2140 (package
2141 (name "guile-irregex")
2142 (version "0.9.6")
2143 (source (origin
2144 (method url-fetch)
2145 (uri (string-append
2146 "http://synthcode.com/scheme/irregex/irregex-"
2147 version ".tar.gz"))
2148 (sha256
2149 (base32
2150 "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
2151 (build-system guile-build-system)
2152 (arguments
2153 '(#:phases (modify-phases %standard-phases
2154 (add-after 'unpack 'move-files-around
2155 (lambda _
2156 ;; Move the relevant source files to src/ and create the
2157 ;; rx/ directory to match the expected module hierarchy.
2158 (mkdir-p "src/rx/source")
2159 (rename-file "irregex-guile.scm"
2160 "src/rx/irregex.scm")
2161 (rename-file "irregex.scm"
2162 "src/rx/source/irregex.scm")
2163 ;; Not really reachable via guile's packaging system,
2164 ;; but nice to have around.
2165 (rename-file "irregex-utils.scm"
2166 "src/rx/source/irregex-utils.scm")
2167 #t)))
2168 #:source-directory "src"))
2169 (native-inputs
2170 `(("guile" ,guile-3.0)))
2171 (home-page "http://synthcode.com/scheme/irregex")
2172 (synopsis "S-expression based regular expressions")
2173 (description
2174 "Irregex is an s-expression based alternative to your classic
2175 string-based regular expressions. It implements SRFI 115 and is deeply
2176 inspired by the SCSH regular expression system.")
2177 (license license:bsd-3)))
2178
2179 (define-public guile2.0-irregex
2180 (package
2181 (inherit guile-irregex)
2182 (name "guile2.0-irregex")
2183 (native-inputs `(("guile" ,guile-2.0)))))
2184
2185 (define-public guile2.2-irregex
2186 (package
2187 (inherit guile-irregex)
2188 (name "guile2.2-irregex")
2189 (native-inputs `(("guile" ,guile-2.2)))))
2190
2191 (define-public guile3.0-irregex
2192 (deprecated-package "guile3.0-irregex" guile-irregex))
2193
2194 (define-public haunt
2195 (package
2196 (name "haunt")
2197 (version "0.2.4")
2198 (source (origin
2199 (method url-fetch)
2200 (uri (string-append "https://files.dthompson.us/haunt/haunt-"
2201 version ".tar.gz"))
2202 (sha256
2203 (base32
2204 "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc"))
2205 (modules '((guix build utils)))
2206 (snippet
2207 '(begin
2208 ;; Allow builds with Guile 3.0.
2209 (substitute* "configure"
2210 (("2\\.2 2\\.0")
2211 "3.0 2.2 2.0"))
2212 #t))))
2213 (build-system gnu-build-system)
2214 (arguments
2215 `(#:modules ((ice-9 match) (ice-9 ftw)
2216 ,@%gnu-build-system-modules)
2217 #:tests? #f ; test suite is non-deterministic :(
2218 #:phases (modify-phases %standard-phases
2219 (add-after 'install 'wrap-haunt
2220 (lambda* (#:key inputs outputs #:allow-other-keys)
2221 ;; Wrap the 'haunt' command to refer to the right
2222 ;; modules.
2223 (let* ((out (assoc-ref outputs "out"))
2224 (bin (string-append out "/bin"))
2225 (site (string-append
2226 out "/share/guile/site"))
2227 (guile-reader (assoc-ref inputs "guile-reader"))
2228 (deps `(,@(if guile-reader
2229 (list guile-reader)
2230 '())
2231 ,(assoc-ref inputs "guile-commonmark"))))
2232 (match (scandir site)
2233 (("." ".." version)
2234 (let ((modules (string-append site "/" version))
2235 (compiled-modules (string-append
2236 out "/lib/guile/" version
2237 "/site-ccache")))
2238 (wrap-program (string-append bin "/haunt")
2239 `("GUILE_LOAD_PATH" ":" prefix
2240 (,modules
2241 ,@(map (lambda (dep)
2242 (string-append dep
2243 "/share/guile/site/"
2244 version))
2245 deps)))
2246 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
2247 (,compiled-modules
2248 ,@(map (lambda (dep)
2249 (string-append dep "/lib/guile/"
2250 version
2251 "/site-ccache"))
2252 deps))))
2253 #t)))))))))
2254 (native-inputs
2255 `(("pkg-config" ,pkg-config)
2256 ("texinfo" ,texinfo)))
2257 (inputs
2258 `(("guile" ,guile-3.0)))
2259 (propagated-inputs
2260 `(("guile-reader" ,guile-reader)
2261 ("guile-commonmark" ,guile-commonmark)))
2262 (synopsis "Functional static site generator")
2263 (description "Haunt is a static site generator written in Guile
2264 Scheme. Haunt features a functional build system and an extensible
2265 interface for reading articles in any format.")
2266 (home-page "http://haunt.dthompson.us")
2267 (license license:gpl3+)))
2268
2269 (define-public guile2.2-haunt
2270 (package
2271 (inherit haunt)
2272 (name "guile2.2-haunt")
2273 (inputs `(("guile" ,guile-2.2)))
2274 (propagated-inputs
2275 `(("guile-reader" ,guile2.2-reader)
2276 ("guile-commonmark" ,guile2.2-commonmark)))))
2277
2278 (define-public guile2.0-haunt
2279 (package
2280 (inherit haunt)
2281 (name "guile2.0-haunt")
2282 (inputs `(("guile" ,guile-2.0)))))
2283
2284 (define-public guile3.0-haunt
2285 (deprecated-package "guile3.0-haunt" haunt))
2286
2287 (define-public guile-redis
2288 (package
2289 (name "guile-redis")
2290 (version "1.3.0")
2291 (home-page "https://github.com/aconchillo/guile-redis")
2292 (source (origin
2293 (method git-fetch)
2294 (uri (git-reference
2295 (url home-page)
2296 (commit version)))
2297 (file-name (git-file-name name version))
2298 (sha256
2299 (base32
2300 "14izs8daxh7pb7vwpxi5g427qa31137jkaxrb1cy5rpjkwchy723"))))
2301 (build-system gnu-build-system)
2302 (native-inputs
2303 `(("autoconf" ,autoconf)
2304 ("automake" ,automake)
2305 ("pkg-config" ,pkg-config)
2306 ("guile" ,guile-3.0)))
2307 (synopsis "Redis client library for Guile")
2308 (description "Guile-redis provides a Scheme interface to the Redis
2309 key-value cache and store.")
2310 (license license:lgpl3+)))
2311
2312 (define-public guile2.2-redis
2313 (package
2314 (inherit guile-redis)
2315 (name "guile2.2-redis")
2316 (native-inputs `(("guile" ,guile-2.2)
2317 ,@(alist-delete "guile"
2318 (package-native-inputs guile-redis))))))
2319
2320 (define-public guile2.0-redis
2321 (package
2322 (inherit guile-redis)
2323 (name "guile2.0-redis")
2324 (native-inputs `(("guile" ,guile-2.0)
2325 ,@(alist-delete "guile"
2326 (package-native-inputs guile-redis))))))
2327
2328 (define-public guile-commonmark
2329 (package
2330 (name "guile-commonmark")
2331 (version "0.1.2")
2332 (source (origin
2333 (method url-fetch)
2334 (uri (string-append "https://github.com/OrangeShark/" name
2335 "/releases/download/v" version
2336 "/" name "-" version ".tar.gz"))
2337 (sha256
2338 (base32
2339 "17lrsdisa3kckh24q114vfmzdc4wkqa6ccwl4hdlrng5wpn1iman"))
2340 (modules '((guix build utils)))
2341 (snippet
2342 '(begin
2343 ;; Allow builds with Guile 3.0.
2344 (substitute* "configure"
2345 (("2\\.2 2\\.0")
2346 "3.0 2.2 2.0"))
2347 #t))))
2348 (build-system gnu-build-system)
2349 (inputs
2350 `(("guile" ,guile-3.0)))
2351 (native-inputs
2352 `(("pkg-config" ,pkg-config)))
2353 (synopsis "CommonMark parser for Guile")
2354 (description
2355 "guile-commonmark is a library for parsing CommonMark, a fully specified
2356 variant of Markdown. The library is written in Guile Scheme and is designed
2357 to transform a CommonMark document to SXML. guile-commonmark tries to closely
2358 follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
2359 is no support for parsing block and inline level HTML.")
2360 (home-page "https://github.com/OrangeShark/guile-commonmark")
2361 (license license:lgpl3+)))
2362
2363 (define-public guile2.2-commonmark
2364 (package
2365 (inherit guile-commonmark)
2366 (name "guile2.2-commonmark")
2367 (inputs `(("guile" ,guile-2.2)))))
2368
2369 (define-public guile2.0-commonmark
2370 (package
2371 (inherit guile-commonmark)
2372 (name "guile2.0-commonmark")
2373 (inputs `(("guile" ,guile-2.0)))))
2374
2375 (define-public guile3.0-commonmark
2376 (deprecated-package "guile3.0-commonmark" guile-commonmark))
2377
2378 (define-public mcron
2379 (package
2380 (name "mcron")
2381 (version "1.2.0")
2382 (source (origin
2383 (method url-fetch)
2384 (uri (string-append "mirror://gnu/mcron/mcron-"
2385 version ".tar.gz"))
2386 (sha256
2387 (base32
2388 "1midrn15d5kqy4zd2029bj1db6gnfhxg8mcgfy4bkp5p9nl4v4rd"))))
2389 (build-system gnu-build-system)
2390 (arguments
2391 '(#:phases (modify-phases %standard-phases
2392 (add-before 'check 'adjust-tests
2393 (lambda _
2394 (substitute* "tests/job-specifier.scm"
2395 ;; (getpw) fails with "entry not found" in the build
2396 ;; environment, so pass an argument.
2397 (("\\(getpw\\)")
2398 "(getpwnam (getuid))")
2399 ;; The build environment lacks an entry for root in
2400 ;; /etc/passwd.
2401 (("\\(getpw 0\\)")
2402 "(getpwnam \"nobody\")")
2403
2404 ;; FIXME: Skip the 4 faulty tests (see above).
2405 (("\\(test-equal \"next-year\"" all)
2406 (string-append "(test-skip 4)\n" all)))
2407 #t)))))
2408 (native-inputs `(("pkg-config" ,pkg-config)
2409 ("tzdata" ,tzdata-for-tests)
2410 ("guile-native" ;for 'guild compile'
2411 ,@(assoc-ref (package-inputs this-package) "guile"))))
2412 (inputs `(("guile" ,guile-3.0)))
2413 (home-page "https://www.gnu.org/software/mcron/")
2414 (synopsis "Run jobs at scheduled times")
2415 (description
2416 "GNU Mcron is a complete replacement for Vixie cron. It is used to run
2417 tasks on a schedule, such as every hour or every Monday. Mcron is written in
2418 Guile, so its configuration can be written in Scheme; the original cron
2419 format is also supported.")
2420 (license license:gpl3+)))
2421
2422 (define-public guile2.2-mcron
2423 (package
2424 (inherit mcron)
2425 (name "guile2.2-mcron")
2426 (inputs `(("guile" ,guile-2.2)))))
2427
2428 (define-public guile3.0-mcron
2429 (deprecated-package "guile3.0-mcron" mcron))
2430
2431 (define-public guile-picture-language
2432 (let ((commit "91d10c96708d732145006dd2802acc4de08b632e")
2433 (revision "1"))
2434 (package
2435 (name "guile-picture-language")
2436 (version (git-version "0.0.1" revision commit))
2437 (source (origin
2438 (method git-fetch)
2439 (uri (git-reference
2440 (url "https://git.elephly.net/software/guile-picture-language.git")
2441 (commit commit)))
2442 (file-name (git-file-name name version))
2443 (sha256
2444 (base32
2445 "1ydvw9dvssdvlvhh1dr8inyzy2x6m41qgp8hsivca1xysr4gc23a"))))
2446 (build-system gnu-build-system)
2447 (inputs
2448 `(("guile" ,guile-3.0)))
2449 (native-inputs
2450 `(("autoconf" ,autoconf)
2451 ("automake" ,automake)
2452 ("imagemagick" ,imagemagick)
2453 ("pkg-config" ,pkg-config)
2454 ("texinfo" ,texinfo)))
2455 (home-page "https://git.elephly.net/software/guile-picture-language.git")
2456 (synopsis "Picture language for Guile")
2457 (description
2458 "This package provides a simple SVG-based picture language for Guile.
2459 The picture values can directly be displayed in Geiser.")
2460 (license license:lgpl3+))))
2461
2462 (define-public guile2.2-picture-language
2463 (package
2464 (inherit guile-picture-language)
2465 (name "guile2.2-picture-language")
2466 (inputs `(("guile" ,guile-2.2)))))
2467
2468 (define-public guile3.0-picture-language
2469 (deprecated-package "guile3.0-picture-language"
2470 guile-picture-language))
2471
2472 (define-public guile-studio
2473 (let ((commit "5c05b03e8a5c450f7358ceec7ea602f29c49d54e")
2474 (revision "1"))
2475 (package
2476 (name "guile-studio")
2477 (version (git-version "0.0.3" revision commit))
2478 (source (origin
2479 (method git-fetch)
2480 (uri (git-reference
2481 (url "https://git.elephly.net/software/guile-studio.git")
2482 (commit commit)))
2483 (file-name (git-file-name name version))
2484 (sha256
2485 (base32
2486 "11wyf6x7mhyhimv0cd57pl39zgav9hc9ljqi3g2g35b264hylpnx"))))
2487 (build-system gnu-build-system)
2488 (arguments
2489 `(#:modules
2490 ((ice-9 match)
2491 (srfi srfi-1)
2492 ,@%gnu-build-system-modules)
2493 #:tests? #f ; there are none
2494 #:make-flags
2495 (list (string-append "ICONS_DIR="
2496 (assoc-ref %build-inputs "adwaita-icon-theme")
2497 "/share/icons/Adwaita/")
2498 (string-append "PICT_DIR="
2499 (assoc-ref %build-inputs "guile-picture-language"))
2500 (string-append "EMACS_DIR="
2501 (assoc-ref %build-inputs "emacs"))
2502 (string-append "GUILE_DIR="
2503 (assoc-ref %build-inputs "guile"))
2504 (string-join (cons "INPUTS="
2505 (filter-map
2506 (lambda (input)
2507 (match input
2508 ((label . pkg)
2509 (and (string-prefix? "emacs" label) pkg))))
2510 %build-inputs)))
2511 (string-append "PREFIX=" (assoc-ref %outputs "out")))
2512 #:phases
2513 (modify-phases %standard-phases
2514 (delete 'configure)
2515 (delete 'install))))
2516 (inputs
2517 `(("guile" ,guile-3.0)
2518 ("guile-picture-language" ,guile-picture-language)
2519 ("emacs" ,emacs)
2520 ("emacs-geiser" ,emacs-geiser)
2521 ("emacs-company" ,emacs-company)
2522 ("emacs-flycheck" ,emacs-flycheck)
2523 ("emacs-flycheck-guile" ,emacs-flycheck-guile)
2524 ("emacs-smart-mode-line" ,emacs-smart-mode-line)
2525 ("emacs-paren-face" ,emacs-paren-face)
2526 ("adwaita-icon-theme" ,adwaita-icon-theme)))
2527 (native-inputs
2528 `(("texinfo" ,texinfo)))
2529 (home-page "https://gnu.org/software/guile")
2530 (synopsis "IDE for Guile")
2531 (description
2532 "This is Emacs with a few settings that make working with Guile easier
2533 for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
2534 to evaluate Guile buffers, support for Guile's very own picture language, code
2535 completion, a simple mode line, etc.")
2536 (license license:gpl3+))))
2537
2538 (define-public guile-stis-parser
2539 (package
2540 (name "guile-stis-parser")
2541 (version "1.2.4.1")
2542 (source (origin
2543 (method git-fetch)
2544 (uri (git-reference
2545 (url "https://gitlab.com/tampe/stis-parser")
2546 (commit (string-append "v" version))))
2547 (file-name (git-file-name name version))
2548 (sha256
2549 (base32
2550 "1fvxdfvc80zqhwzq5x3kxyr6j8p4b51yx85fx1gr3d4gy2ddpx5w"))))
2551 (build-system gnu-build-system)
2552 (arguments
2553 `(#:parallel-build? #f ; not supported
2554 #:phases
2555 (modify-phases %standard-phases
2556 (add-after 'unpack 'chdir
2557 (lambda _ (chdir "modules") #t))
2558 (add-after 'chdir 'delete-broken-symlink
2559 (lambda _
2560 (delete-file "parser/stis-parser/lang/.#calc.scm")
2561 #t)))))
2562 (inputs
2563 `(("guile" ,guile-3.0)))
2564 (native-inputs
2565 `(("autoconf" ,autoconf)
2566 ("automake" ,automake)
2567 ("pkg-config" ,pkg-config)))
2568 (home-page "https://gitlab.com/tampe/stis-parser")
2569 (synopsis "Parser combinator framework")
2570 (description
2571 "This package provides a functional parser combinator library that
2572 supports backtracking and a small logical framework. The idea is to build up
2573 chunks that are memoized and there is no clear scanner/parser separation,
2574 chunks can be expressions as well as simple tokens.")
2575 (license license:lgpl2.0+)))
2576
2577 (define-public guile-persist
2578 (package
2579 (name "guile-persist")
2580 (version "1.2.3")
2581 (source (origin
2582 (method git-fetch)
2583 (uri (git-reference
2584 (url "https://gitlab.com/tampe/guile-persist")
2585 (commit (string-append "v" version))))
2586 (file-name (git-file-name name version))
2587 (sha256
2588 (base32
2589 "19f8hqcax4v40858kx2j8fy1cvzc2djj99r0n17dy1xxmwa097qi"))))
2590 (build-system gnu-build-system)
2591 (arguments
2592 `(#:phases
2593 (modify-phases %standard-phases
2594 (add-after 'unpack 'patch-prefix
2595 (lambda* (#:key inputs outputs #:allow-other-keys)
2596 (substitute* "src/Makefile.am"
2597 (("/usr/local/lib/guile")
2598 (string-append (assoc-ref outputs "out") "/lib/guile"))
2599 (("/usr/local/include/guile")
2600 (string-append (assoc-ref inputs "guile") "/include/guile"))
2601 (("-L/usr/local/lib")
2602 (string-append "-L" (assoc-ref inputs "guile") "/lib")))
2603 #t))
2604 (add-after 'unpack 'patch-library-reference
2605 (lambda* (#:key outputs #:allow-other-keys)
2606 (let ((out (assoc-ref outputs "out")))
2607 (substitute* "persist/persistance.scm"
2608 (("\"libguile-persist\"")
2609 (format #f "\"~a/lib/guile/3.0/extensions/libguile-persist\"" out)))
2610 #t))))))
2611 (inputs
2612 `(("guile" ,guile-3.0)))
2613 (native-inputs
2614 `(("autoconf" ,autoconf)
2615 ("automake" ,automake)
2616 ("libtool" ,libtool)
2617 ("pkg-config" ,pkg-config)))
2618 (home-page "https://gitlab.com/tampe/guile-persist")
2619 (synopsis "Persistence programming framework for Guile")
2620 (description
2621 "This is a serialization library for serializing objects like classes
2622 and objects, closures and structs. This currently does not support
2623 serializing continuations or delimited continuations.")
2624 (license license:lgpl2.0+)))
2625
2626 (define-public python-on-guile
2627 (package
2628 (name "python-on-guile")
2629 (version "1.2.3.5")
2630 (home-page "https://gitlab.com/python-on-guile/python-on-guile")
2631 (source (origin
2632 (method git-fetch)
2633 (uri (git-reference (url home-page)
2634 (commit (string-append "v" version))))
2635 (file-name (git-file-name name version))
2636 (sha256
2637 (base32
2638 "05xrvcj6a4gzq1ybyin270qz8wamgc7w2skyi9iy6hkpgdhxy8vf"))))
2639 (build-system gnu-build-system)
2640 (arguments
2641 `(#:parallel-build? #f ;not supported
2642 #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
2643 #:phases
2644 (modify-phases %standard-phases
2645 (add-after 'unpack 'chdir
2646 (lambda _ (chdir "modules") #t))
2647 (add-after 'chdir 'augment-GUILE_LOAD_PATH
2648 (lambda _
2649 ;; TODO: It would be better to patch the Makefile.
2650 (setenv "GUILE_LOAD_PATH"
2651 (string-append ".:"
2652 (getenv "GUILE_LOAD_PATH")))
2653 #t))
2654 (add-after 'install 'wrap
2655 (lambda* (#:key outputs #:allow-other-keys)
2656 ;; Wrap the 'python' executable so it can find its
2657 ;; dependencies and own modules.
2658 (let* ((out (assoc-ref outputs "out"))
2659 (guile-version ,(version-major+minor
2660 (package-version guile-3.0)))
2661 (scm (string-append out "/share/guile/site/"
2662 guile-version))
2663 (ccache (string-append out "/lib/guile/" guile-version
2664 "/site-ccache"))
2665 (load-path (string-join
2666 (cons scm
2667 ;; XXX: cdr because we augment it above.
2668 (cdr (string-split
2669 (getenv "GUILE_LOAD_PATH") #\:)))
2670 ":"))
2671 (compiled-path (string-append
2672 ccache ":"
2673 (getenv "GUILE_LOAD_COMPILED_PATH"))))
2674 (wrap-program (string-append out "/bin/python")
2675 `("GUILE_LOAD_PATH" ":" prefix
2676 (,load-path))
2677 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
2678 (,compiled-path)))
2679 #t))))))
2680 (inputs
2681 `(("guile" ,guile-3.0)
2682 ("guile-persist" ,guile-persist)
2683 ("guile-readline" ,guile-readline)
2684 ("guile-stis-parser" ,guile-stis-parser)))
2685 (native-inputs
2686 `(("autoconf" ,autoconf)
2687 ("automake" ,automake)
2688 ("libtool" ,libtool)
2689 ("pkg-config" ,pkg-config)))
2690 (synopsis "Python implementation in Guile")
2691 (description
2692 "This package allows you to compile a Guile Python file to any target
2693 from @code{tree-il}.")
2694 (license license:lgpl2.0+)))
2695
2696 (define-public guile-file-names
2697 (package
2698 (name "guile-file-names")
2699 (version "0.3")
2700 (source (origin
2701 (method url-fetch)
2702 (uri (string-append "http://brandon.invergo.net/software/download/"
2703 "guile-file-names/guile-file-names-"
2704 version ".tar.gz"))
2705 (sha256
2706 (base32
2707 "01chizdxkhw6aqv629vxka9f5x3534ij7r0jqndawsg2vxm1r9sz"))))
2708 (build-system gnu-build-system)
2709 (arguments
2710 `(#:phases
2711 (modify-phases %standard-phases
2712 (add-after 'unpack 'fix-target-directory
2713 (lambda _
2714 (substitute* "src/Makefile.in"
2715 (("guilemoddir = \\$\\(GUILE_SITE\\)")
2716 "guilemoddir = $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
2717 #t)))))
2718 (inputs
2719 `(("guile" ,guile-2.2)))
2720 (native-inputs
2721 `(("pkg-config" ,pkg-config)))
2722 (home-page "https://gitlab.com/brandoninvergo/guile-file-names")
2723 (synopsis "Manipulate file names")
2724 (description
2725 "The @code{(file-names)} module provides tools for manipulating file
2726 names. The module was built on the idea that doing anything more than a
2727 non-trivial modification of a file name string is a pain (making sure all
2728 slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
2729 Inevitably, you have to break the string up into chunks and operate on that
2730 list of components. This module takes care of that for you.")
2731 (license license:lgpl3+)))
2732
2733 (define-public guile-gi
2734 (package
2735 (name "guile-gi")
2736 (version "0.3.0")
2737 (source (origin
2738 (method url-fetch)
2739 (uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
2740 version ".tar.gz"))
2741 (sha256
2742 (base32
2743 "05xbwrk50h4f9fh8la8fk2wsxbnm0jcyb9phnpkkjq4sqkhkxlbj"))))
2744 (build-system glib-or-gtk-build-system)
2745 (arguments
2746 `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
2747 #:modules ((guix build glib-or-gtk-build-system)
2748 (guix build utils)
2749 (ice-9 popen)
2750 (ice-9 rdelim))
2751 #:phases
2752 (modify-phases %standard-phases
2753 (add-after 'unpack 'patch-references-to-extension
2754 (lambda* (#:key outputs #:allow-other-keys)
2755 (let ((effective (read-line
2756 (open-pipe* OPEN_READ
2757 "guile" "-c"
2758 "(display (effective-version))"))))
2759 (substitute* '("module/gi.scm"
2760 "module/gi/oop.scm"
2761 "module/gi/documentation.scm"
2762 "module/gi/types.scm"
2763 "module/gi/repository.scm")
2764 (("\\(load-extension \"libguile-gi\" \"(.*)\"\\)" m arg)
2765 (format #f "~s"
2766 `(load-extension
2767 (format #f "~alibguile-gi"
2768 (if (getenv "GUILE_GI_UNINSTALLED")
2769 ""
2770 ,(format #f "~a/lib/guile/~a/extensions/"
2771 (assoc-ref outputs "out")
2772 effective)))
2773 ,arg)))))
2774 (setenv "GUILE_GI_UNINSTALLED" "1")
2775 #t))
2776 (add-before 'check 'start-xorg-server
2777 (lambda* (#:key inputs #:allow-other-keys)
2778 ;; The init_check test requires a running X server.
2779 (system (format #f "~a/bin/Xvfb :1 &"
2780 (assoc-ref inputs "xorg-server")))
2781 (setenv "DISPLAY" ":1")
2782 #t)))))
2783 (native-inputs
2784 `(("gettext" ,gettext-minimal)
2785 ("glib:bin" ,glib "bin") ; for glib-compile-resources
2786 ("libtool" ,libtool)
2787 ("pkg-config" ,pkg-config)
2788 ("xorg-server" ,xorg-server)))
2789 (propagated-inputs
2790 `(("glib" ,glib)
2791 ("gobject-introspection" ,gobject-introspection)
2792 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
2793 ("gtk+" ,gtk+)
2794 ("guile-lib" ,guile-lib)
2795 ("webkitgtk" ,webkitgtk)))
2796 (inputs `(("guile" ,guile-3.0)))
2797 (home-page "https://github.com/spk121/guile-gi")
2798 (synopsis "GObject bindings for Guile")
2799 (description
2800 "Guile-GI is a library for Guile that allows using GObject-based
2801 libraries, such as GTK+3. Its README comes with the disclaimer: This is
2802 pre-alpha code.")
2803 (license license:gpl3+)))
2804
2805 (define-public guile2.2-gi
2806 (package
2807 (inherit guile-gi)
2808 (name "guile2.2-gi")
2809 (inputs
2810 `(("guile" ,guile-2.2)
2811 ,@(alist-delete "guile" (package-inputs guile-gi))))))
2812
2813 (define-public guile3.0-gi
2814 (deprecated-package "guile3.0-gi" guile-gi))
2815
2816 (define-public guile-srfi-89
2817 (package
2818 (name "guile-srfi-89")
2819 (version "0.0.1")
2820 (source
2821 (origin
2822 (method git-fetch)
2823 (uri (git-reference
2824 (url "https://gitlab.com/mjbecze/guile-srfi-89.git")
2825 (commit version)))
2826 (sha256
2827 (base32
2828 "1981c0rrzxqx3md9jx8ir7j3m2mzg9m72b33p5jvw36zirbzpl20"))
2829 (file-name (git-file-name name version))))
2830 (build-system guile-build-system)
2831 (native-inputs
2832 `(("guile" ,guile-3.0)))
2833 (home-page "https://gitlab.com/mjbecze/guile-srfi-89")
2834 (synopsis "Hygienic implementation of SRFI-89 for Guile")
2835 (description
2836 "This package provides SRFI-89 optional positional and named
2837 parameters, which define* and lambda* special forms")
2838 (license license:gpl3+)))
2839
2840 (define-public guile-srfi-145
2841 (package
2842 (name "guile-srfi-145")
2843 (version "0.0.1")
2844 (source
2845 (origin
2846 (method git-fetch)
2847 (uri (git-reference
2848 (url "https://gitlab.com/mjbecze/guile-srfi-145.git")
2849 (commit version)))
2850 (sha256
2851 (base32
2852 "1gssa8cmcp8640fil9z8dpil8v5l279wlalqjcx3fls5jwv13q1b"))
2853 (file-name (git-file-name name version))))
2854 (build-system guile-build-system)
2855 (native-inputs
2856 `(("guile" ,guile-3.0)))
2857 (home-page "https://gitlab.com/mjbecze/guile-srfi-145")
2858 (synopsis "SRFI-145 port for Guile")
2859 (description
2860 "This package provides SRFI-145. This provides the means to
2861 denote the invalidity of certain code paths in a Scheme program.")
2862 (license license:gpl3+)))
2863
2864 (define-public guile-srfi-158
2865 (package
2866 (name "guile-srfi-158")
2867 (version "0.0.1")
2868 (source
2869 (origin
2870 (method git-fetch)
2871 (uri (git-reference
2872 (url "https://gitlab.com/mjbecze/guile-srfi-158.git")
2873 (commit version)))
2874 (sha256
2875 (base32
2876 "0b8hlv1bldbcwkcxi9y8mm6xp5gbgpg7b15bwqxv70iynl9d9a7c"))
2877 (file-name (git-file-name name version))))
2878 (build-system gnu-build-system)
2879 (native-inputs
2880 `(("autoconf" ,autoconf)
2881 ("automake" ,automake)
2882 ("pkg-config" ,pkg-config)))
2883 (inputs
2884 `(("guile" ,guile-3.0)))
2885 (home-page "https://gitlab.com/samplet/guile-srfi-158")
2886 (synopsis "SRFI 158 (Generators and Accumulators) for Guile")
2887 (description "This package provides an implementation of SRFI 158
2888 for Guile. SRFI 158 defines utility procedures that create,
2889 transform, and consume generators. It also defines procedures that
2890 return accumulators. It is implemented by wrapping the sample
2891 implementation in a thin Guile compatibility layer.")
2892 (license license:gpl3+)))
2893
2894 (define-public guile-srfi-159
2895 (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
2896 (revision "0"))
2897 (package
2898 (name "guile-srfi-159")
2899 (version (git-version "0" revision commit))
2900 (home-page "https://bitbucket.org/bjoli/guile-srfi-159")
2901 (source (origin
2902 (method hg-fetch)
2903 (uri (hg-reference (changeset commit)
2904 (url home-page)))
2905 (sha256
2906 (base32
2907 "1zw6cmcy7xdbfiz3nz9arqnn7l2daidaps6ixkcrc9b6k51fdv3p"))
2908 (file-name (git-file-name name version))))
2909 (build-system guile-build-system)
2910 (arguments
2911 ;; The *-impl.scm files are actually included from module files; they
2912 ;; should not be compiled separately, but they must be installed.
2913 '(#:not-compiled-file-regexp "-impl\\.scm$"))
2914 (inputs
2915 `(("guile" ,guile-2.2)))
2916 (synopsis "Formatting combinators for Guile")
2917 (description
2918 "The @code{(srfi-159)} module and its sub-modules implement the
2919 formatting combinators specified by
2920 @uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
2921 more expressive and flexible than the traditional @code{format} procedure.")
2922 (license license:bsd-3))))
2923
2924 (define-public guile-srfi-180
2925 (let ((commit "9188bf9724c6d320ef804579d222e855b007b193")
2926 (revision "0"))
2927 (package
2928 (name "guile-srfi-180")
2929 (version (git-version "0" revision commit))
2930 (source
2931 (origin
2932 (method git-fetch)
2933 (uri (git-reference
2934 (url "https://github.com/scheme-requests-for-implementation/srfi-180.git")
2935 (commit commit)))
2936 (sha256
2937 (base32
2938 "08lf70rsak8mwfij55xc37pg9zg7c87fizmhz7ln46skzj68sl3y"))
2939 (modules '((guix build utils)))
2940 (snippet
2941 '(begin
2942 (delete-file-recursively "srfi/files")
2943 (delete-file "srfi/run-r7rs-checks.guile.scm")
2944 (delete-file "srfi/run-r7rs-checks.scm")
2945 (delete-file "srfi/check.scm")
2946 #t))
2947 (file-name (git-file-name name version))))
2948 (build-system guile-build-system)
2949 (arguments
2950 '(#:not-compiled-file-regexp "body\\.scm$"))
2951 (native-inputs
2952 `(("guile" ,guile-3.0)))
2953 (propagated-inputs
2954 `(("guile-srfi-145" ,guile-srfi-145)))
2955 (home-page "https://srfi.schemers.org/srfi-180/")
2956 (synopsis "JSON parser and printer for Guile")
2957 (description
2958 "This library implements a JavaScript Object Notation (JSON) parser and printer.
2959 It also supports parsing JSON objects that may be bigger than memory with a streaming
2960 API.")
2961 (license license:expat))))
2962
2963 (define-public emacsy
2964 (package
2965 (name "emacsy")
2966 (version "0.4.1")
2967 (source (origin
2968 (method url-fetch)
2969 (uri (string-append
2970 "https://download.savannah.nongnu.org/releases/"
2971 name "/" name "-" version ".tar.gz"))
2972 (sha256
2973 (base32
2974 "1cpb85dl1nibd34c2x2h7vfmjpkgh353p5b1w20v6cs6gmvgg4np"))))
2975 (build-system gnu-build-system)
2976 (native-inputs
2977 `(("autoconf" ,autoconf)
2978 ("automake" ,automake)
2979 ("bzip2" ,bzip2)
2980 ("guile" ,guile-2.2)
2981 ("gettext" ,gettext-minimal)
2982 ("libtool" ,libtool)
2983 ("perl" ,perl)
2984 ("pkg-config" ,pkg-config)
2985 ("texinfo" ,texinfo)
2986 ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
2987 (inputs
2988 `(("dbus-glib" ,dbus-glib)
2989 ("guile" ,guile-2.2)
2990 ("guile-lib" ,guile-lib)
2991 ("guile-readline" ,guile-readline)
2992 ("freeglut" ,freeglut)
2993 ("webkitgtk" ,webkitgtk)))
2994 (propagated-inputs
2995 `(("glib-networking" ,glib-networking)
2996 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
2997 (arguments
2998 `(#:modules ((guix build gnu-build-system)
2999 (guix build utils)
3000 (ice-9 popen)
3001 (ice-9 rdelim)
3002 (ice-9 regex)
3003 (ice-9 ftw)
3004 (srfi srfi-26))
3005 #:phases
3006 (modify-phases %standard-phases
3007 (add-before 'configure 'setenv
3008 (lambda _
3009 (setenv "GUILE_AUTO_COMPILE" "0")
3010 #t))
3011 (add-after 'install 'wrap-binaries
3012 (lambda* (#:key inputs outputs #:allow-other-keys)
3013 (let* ((out (assoc-ref outputs "out"))
3014 (effective (read-line
3015 (open-pipe* OPEN_READ
3016 "guile" "-c"
3017 "(display (effective-version))")))
3018 (deps (map (cut assoc-ref inputs <>)
3019 '("guile-lib" "guile-readline")))
3020 (scm-path (map (cut string-append <> "/share/guile/site/"
3021 effective) `(,out ,@deps)))
3022 (go-path (map (cut string-append <> "/lib/guile/" effective
3023 "/site-ccache/") `(,out ,@deps)))
3024 (examples (filter (cut string-match "emacsy" <>)
3025 (scandir (string-append out "/bin/"))))
3026 (progs (map (cut string-append out "/bin/" <>)
3027 examples)))
3028 (map (cut wrap-program <>
3029 `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
3030 `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))
3031 progs)
3032 #t))))))
3033 (home-page "https://savannah.nongnu.org/projects/emacsy")
3034 (synopsis "Embeddable GNU Emacs-like library using Guile")
3035 (description
3036 "Emacsy is an embeddable Emacs-like library that uses GNU Guile
3037 as extension language. Emacsy can give a C program an Emacsy feel with
3038 keymaps, minibuffer, recordable macros, history, tab completion, major
3039 and minor modes, etc., and can also be used as a pure Guile library. It
3040 comes with a simple counter example using FreeGLUT and browser examples
3041 in C using Gtk+-3 and WebKitGtk.")
3042 (license license:gpl3+)))
3043
3044 (define-public emacsy-minimal
3045 (let ((commit "v0.4.1-31-g415d96f"))
3046 (package
3047 (inherit emacsy)
3048 (name "emacsy-minimal")
3049 (version (string-drop commit 1))
3050 (source
3051 (origin
3052 (method git-fetch)
3053 (uri (git-reference
3054 (url "https://git.savannah.gnu.org/git/emacsy.git")
3055 (commit commit)))
3056 (file-name (git-file-name name version))
3057 (sha256
3058 (base32 "1cs1i1hxwrv0a512j54yrvfh743nci1chx6qjgp4jyzq98ncvxgg"))))
3059 (build-system gnu-build-system)
3060 (inputs
3061 `(("guile" ,guile-2.2)
3062 ("guile-lib" ,guile2.2-lib)
3063 ("guile-readline" ,guile2.2-readline)))
3064 (propagated-inputs '())
3065 (arguments
3066 `(#:configure-flags '("--without-examples")
3067 #:phases
3068 (modify-phases %standard-phases
3069 (add-before 'configure 'setenv
3070 (lambda _
3071 (setenv "GUILE_AUTO_COMPILE" "0")
3072 #t))))))))
3073
3074 (define-public guile-jpeg
3075 (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
3076 (revision "0"))
3077 (package
3078 (name "guile-jpeg")
3079 (version (git-version "0.0" revision commit))
3080 (home-page "https://gitlab.com/wingo/guile-jpeg")
3081 (source (origin
3082 (method git-fetch)
3083 (uri (git-reference (url home-page)
3084 (commit commit)))
3085 (sha256
3086 (base32
3087 "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
3088 (file-name (git-file-name name version))
3089 (modules '((guix build utils)))
3090 (snippet
3091 '(begin
3092 ;; Install .go files in the right place.
3093 (substitute* "Makefile.am"
3094 (("/ccache") "/site-ccache"))
3095 #t))))
3096 (build-system gnu-build-system)
3097 (native-inputs
3098 `(("autoconf" ,autoconf)
3099 ("automake" ,automake)
3100 ("pkg-config" ,pkg-config)
3101 ("guile" ,guile-2.2)))
3102 (synopsis "JPEG file parsing library for Guile")
3103 (description
3104 "Guile-JPEG is a Scheme library to parse JPEG image files and to
3105 perform geometrical transforms on JPEG images.")
3106 (license license:gpl3+))))
3107
3108 (define-public nomad
3109 (package
3110 (name "nomad")
3111 (version "0.2.0-alpha-100-g6a565d3")
3112 (source (origin
3113 (method git-fetch)
3114 (uri (git-reference
3115 (url "https://git.savannah.gnu.org/git/nomad.git/")
3116 (commit version)))
3117 (file-name (git-file-name name version))
3118 (sha256
3119 (base32
3120 "0anmprm63a88kii251rl296v1g4iq62r6n4nssx5jbc0hzkknanz"))))
3121 (build-system gnu-build-system)
3122 (native-inputs
3123 `(("autoconf" ,autoconf)
3124 ("automake" ,automake)
3125 ("bash" ,bash)
3126 ("pkg-config" ,pkg-config)
3127 ("libtool" ,libtool)
3128 ("guile" ,guile-2.2)
3129 ("glib:bin" ,glib "bin")
3130 ("texinfo" ,texinfo)
3131 ("gettext" ,gnu-gettext)
3132 ("perl" ,perl)))
3133 (inputs
3134 `(;; Guile
3135 ("guile" ,guile-2.2)
3136 ("guile-lib" ,guile2.2-lib)
3137 ("guile-readline" ,guile2.2-readline)
3138 ("guile-gcrypt" ,guile2.2-gcrypt)
3139 ("gnutls" ,gnutls)
3140 ("g-golf" ,g-golf)
3141 ("shroud" ,shroud)
3142 ("emacsy" ,emacsy-minimal)
3143 ;; Gtk
3144 ("glib" ,glib)
3145 ("dbus-glib" ,dbus-glib)
3146 ("glib-networking" ,glib-networking)
3147 ("gtk+" ,gtk+)
3148 ("gtk+:bin" ,gtk+ "bin")
3149 ("webkitgtk" ,webkitgtk)
3150 ("gtksourceview" ,gtksourceview)
3151 ("vte" ,vte)
3152 ;; Gstreamer
3153 ("gstreamer" ,gstreamer)
3154 ("gst-plugins-base" ,gst-plugins-base)
3155 ("gst-plugins-good" ,gst-plugins-good)
3156 ("gst-plugins-bad" ,gst-plugins-bad)
3157 ("gst-plugins-ugly" ,gst-plugins-ugly)
3158 ;; Util
3159 ("xorg-server" ,xorg-server)))
3160 (arguments
3161 `(#:modules ((guix build gnu-build-system)
3162 (guix build utils)
3163 (ice-9 popen)
3164 (ice-9 rdelim)
3165 (srfi srfi-26))
3166 #:phases
3167 (modify-phases %standard-phases
3168 (add-before 'check 'start-xorg-server
3169 (lambda* (#:key inputs #:allow-other-keys)
3170 ;; The test suite requires a running X server.
3171 (system (format #f "~a/bin/Xvfb :1 &"
3172 (assoc-ref inputs "xorg-server")))
3173 (setenv "DISPLAY" ":1")
3174 #t))
3175 (add-after 'install 'wrap-binaries
3176 (lambda* (#:key inputs outputs #:allow-other-keys)
3177 (let* ((out (assoc-ref outputs "out"))
3178 (effective (read-line (open-pipe*
3179 OPEN_READ
3180 "guile" "-c"
3181 "(display (effective-version))")))
3182 (gst-plugins (map (lambda (i)
3183 (string-append (assoc-ref inputs i)
3184 "/lib/gstreamer-1.0"))
3185 `("gstreamer"
3186 "gst-plugins-base"
3187 "gst-plugins-good"
3188 "gst-plugins-bad"
3189 "gst-plugins-ugly")))
3190 (out-append (lambda (. args)
3191 (apply string-append out args)))
3192 (gi-path (out-append "/lib/girepository-1.0"))
3193 (load-path (out-append "/share/guile/site/" effective))
3194 (comp-path (out-append "/lib/guile/"
3195 effective "/site-ccache"))
3196 (ext-path (out-append "/libexec/nomad")))
3197 (wrap-program (string-append out "/bin/nomad")
3198 `("GUILE_LOAD_PATH" ":" prefix
3199 (,load-path
3200 ,(getenv "GUILE_LOAD_PATH")))
3201 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
3202 (,comp-path
3203 ,(getenv "GUILE_LOAD_COMPILED_PATH")))
3204 `("GI_TYPELIB_PATH" ":" prefix
3205 (,gi-path ,(getenv "GI_TYPELIB_PATH")))
3206 `("GIO_EXTRA_MODULES" ":" prefix
3207 (,(getenv "GIO_EXTRA_MODULES")))
3208 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix ,gst-plugins)
3209 `("NOMAD_WEB_EXTENSION_DIR" ":" prefix (,ext-path)))
3210 #t))))))
3211 (home-page "https://savannah.nongnu.org/projects/nomad/")
3212 (synopsis "Extensible Web Browser in Guile Scheme")
3213 (description "Nomad is a Emacs-like web browser that consists of a modular
3214 feature-set, fully programmable in Guile Scheme.")
3215 (license license:gpl3+)))
3216
3217 (define-public guile-cv
3218 (package
3219 (name "guile-cv")
3220 (version "0.2.1")
3221 (source (origin
3222 (method url-fetch)
3223 (uri (string-append "mirror://gnu/guile-cv/guile-cv-"
3224 version ".tar.gz"))
3225 (sha256
3226 (base32
3227 "0qdf0s2h1xj5lbhnc1pfw69i3zg08pqy2y6869b92ydfis8r82j9"))))
3228 (build-system gnu-build-system)
3229 (arguments
3230 `(#:phases
3231 (modify-phases %standard-phases
3232 (add-after 'unpack 'prepare-build
3233 (lambda* (#:key inputs outputs #:allow-other-keys)
3234 (substitute* "configure"
3235 (("SITEDIR=\"\\$datadir/guile-cv\"")
3236 "SITEDIR=\"$datadir/guile/site/$GUILE_EFFECTIVE_VERSION\"")
3237 (("SITECCACHEDIR=\"\\$libdir/guile-cv/")
3238 "SITECCACHEDIR=\"$libdir/"))
3239 (substitute* "cv/init.scm"
3240 (("\\(dynamic-link \"libvigra_c\"\\)")
3241 (string-append "(dynamic-link \""
3242 (assoc-ref inputs "vigra-c")
3243 "/lib/libvigra_c\")"))
3244 (("\\(dynamic-link \"libguile-cv\"\\)")
3245 (format #f "~s"
3246 `(dynamic-link
3247 (format #f "~alibguile-cv"
3248 (if (getenv "GUILE_CV_UNINSTALLED")
3249 ""
3250 ,(format #f "~a/lib/"
3251 (assoc-ref outputs "out"))))))))
3252 (setenv "GUILE_CV_UNINSTALLED" "1")
3253 ;; Only needed to satisfy the configure script.
3254 (setenv "LD_LIBRARY_PATH"
3255 (string-append (assoc-ref inputs "vigra-c") "/lib"))
3256 #t)))))
3257 (inputs
3258 `(("vigra" ,vigra)
3259 ("vigra-c" ,vigra-c)
3260 ("guile" ,guile-2.2)))
3261 (native-inputs
3262 `(("texlive" ,(texlive-union (list texlive-booktabs
3263 texlive-lm
3264 texlive-siunitx
3265 texlive-standalone
3266 texlive-xcolor
3267 texlive-fonts-iwona)))
3268 ("pkg-config" ,pkg-config)))
3269 (propagated-inputs
3270 `(("guile-lib" ,guile-lib)))
3271 (home-page "https://www.gnu.org/software/guile-cv/")
3272 (synopsis "Computer vision library for Guile")
3273 (description "Guile-CV is a Computer Vision functional programming library
3274 for the Guile Scheme language. It is based on Vigra (Vision with Generic
3275 Algorithms), a C++ image processing and analysis library. Guile-CV contains
3276 bindings to Vigra C (a C wrapper to most of the Vigra functionality) and is
3277 enriched with pure Guile Scheme algorithms, all accessible through a nice,
3278 clean and easy to use high level API.")
3279 (license license:gpl3+)))
3280
3281 (define-public guile-ffi-fftw
3282 (let ((commit "294ad9e7491dcb40026d2fec9be2af05263be1c0")
3283 (revision "2"))
3284 (package
3285 (name "guile-ffi-fftw")
3286 (version (git-version "0" revision commit))
3287 (source (origin
3288 (method git-fetch)
3289 (uri (git-reference
3290 (url "https://github.com/lloda/guile-ffi-fftw")
3291 (commit commit)))
3292 (file-name (git-file-name "guile-ffi-fftw" version))
3293 (sha256
3294 (base32
3295 "08j40a5p6a8pgvhffmzb5rfdnrav2mksy3gfjkdqy93jfj1z5afg"))))
3296 (build-system guile-build-system)
3297 (arguments
3298 `(#:source-directory "mod"
3299 #:phases
3300 (modify-phases %standard-phases
3301 (add-after 'unpack 'prepare-build
3302 (lambda* (#:key inputs #:allow-other-keys)
3303 (substitute* "mod/ffi/fftw.scm"
3304 (("\\(getenv \"GUILE_FFI_FFTW_LIBFFTW3_PATH\"\\)")
3305 (format #f "\"~a/lib\"" (assoc-ref inputs "fftw"))))
3306 #t))
3307 (add-after 'build 'check
3308 (lambda _
3309 (invoke "guile" "-L" "mod"
3310 "-s" "test/test-ffi-fftw.scm"))))))
3311 (inputs
3312 `(("fftw" ,fftw)
3313 ("guile" ,guile-2.2)))
3314 (home-page "https://github.com/lloda/guile-ffi-fftw/")
3315 (synopsis "Access FFTW through Guile's FFI")
3316 (description "This is a minimal set of Guile FFI bindings for the FFTW
3317 library's ‘guru interface’. It provides two functions: @code{fftw-dft! rank
3318 sign in out} and @code{fftw-dft rank sign in}. These bindings being minimal,
3319 there is no support for computing & reusing plans, or split r/i transforms, or
3320 anything other than straight complex DFTs.")
3321 (license license:lgpl3+))))
3322
3323 (define-public srfi-64-driver
3324 (package
3325 (name "srfi-64-driver")
3326 (version "0.1")
3327 (source (origin
3328 (method url-fetch)
3329 (uri (string-append "https://files.ngyro.com/srfi-64-driver/"
3330 "srfi-64-driver-" version ".tar.gz"))
3331 (sha256
3332 (base32
3333 "188b6mb7sjjg0a8zldikinglf40ky8mg8rwh5768gjmch6gkk3ph"))))
3334 (build-system gnu-build-system)
3335 (arguments
3336 `(#:tests? #f
3337 #:phases
3338 (modify-phases %standard-phases
3339 (delete 'build))))
3340 (native-inputs
3341 `(("pkg-config" ,pkg-config)))
3342 (inputs
3343 `(("guile" ,guile-2.2)))
3344 (home-page "https://ngyro.com/software/srfi-64-driver.html")
3345 (synopsis "Automake test driver for SRFI 64 test suites")
3346 (description "This package provides an Automake test driver that can
3347 run SRFI 64 test suites. It gives Automake insight into the individual
3348 tests being run, resulting clearer and more specific output.")
3349 (license license:gpl3+)))
3350
3351 (define-public guile-semver
3352 (package
3353 (name "guile-semver")
3354 (version "0.1.1")
3355 (source (origin
3356 (method url-fetch)
3357 (uri (string-append "https://files.ngyro.com/guile-semver/"
3358 "guile-semver-" version ".tar.gz"))
3359 (sha256
3360 (base32
3361 "109p4n39ln44cxvwdccf9kgb96qx54makvd2ir521ssz6wchjyag"))))
3362 (build-system gnu-build-system)
3363 (native-inputs
3364 `(("pkg-config" ,pkg-config)))
3365 (inputs
3366 `(("guile" ,guile-2.2)))
3367 (home-page "https://ngyro.com/software/guile-semver.html")
3368 (synopsis "Semantic Versioning (SemVer) for Guile")
3369 (description "This Guile library provides tools for reading,
3370 comparing, and writing Semantic Versions. It also includes ranges in
3371 the style of the Node Package Manager (NPM).")
3372 (license license:gpl3+)))
3373
3374 (define-public guile3.0-semver
3375 (package
3376 (inherit guile-semver)
3377 (name "guile3.0-semver")
3378 (inputs
3379 `(("guile" ,guile-3.0)))))
3380
3381 (define-public guile-hashing
3382 (package
3383 (name "guile-hashing")
3384 (version "1.2.0")
3385 (home-page "https://github.com/weinholt/hashing")
3386 (source (origin
3387 (method git-fetch)
3388 (uri (git-reference
3389 (url home-page)
3390 (commit (string-append "v" version))))
3391 (file-name (git-file-name name version))
3392 (sha256
3393 (base32
3394 "1362d3lmpv7slmv1zmr9wy8panq9sjr9787gc2hagd646mpsfpkl"))))
3395 (build-system guile-build-system)
3396 (arguments
3397 `(#:modules ((guix build guile-build-system)
3398 (guix build utils)
3399 (srfi srfi-26)
3400 (ice-9 ftw))
3401 #:implicit-inputs? #f ;needs nothing but Guile
3402 #:phases (modify-phases %standard-phases
3403 (add-before 'build 'move-sls-files
3404 (lambda _
3405 ;; Move the source under hashing/ in order to match
3406 ;; module names, and rename .sls files to .scm.
3407 (define (target file)
3408 (string-append "hashing/" file))
3409
3410 (define (sls->scm sls)
3411 (string-append (string-drop-right sls 4)
3412 ".scm"))
3413
3414 (mkdir "hashing")
3415 (for-each (lambda (file)
3416 (rename-file file (sls->scm file)))
3417 (find-files "." "\\.sls$"))
3418 (for-each (lambda (file)
3419 (rename-file file (target file)))
3420 (scandir "." (cut string-suffix? ".scm" <>)))
3421 (rename-file "private" "hashing/private")
3422 #t)))))
3423 (native-inputs
3424 `(("guile" ,guile-3.0)))
3425 (synopsis "Cryprographic hash functions implemented in Scheme")
3426 (description
3427 "The @code{(hashing @dots{})} modules implement cryptographic hash
3428 functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256,
3429 SHA-512).")
3430 (license license:expat)))
3431
3432 (define-public guile2.2-hashing
3433 (package
3434 (inherit guile-hashing)
3435 (name "guile2.2-hashing")
3436 (native-inputs
3437 `(("guile" ,guile-2.2)))))
3438
3439 (define-public guile3.0-hashing
3440 (deprecated-package "guile3.0-hashing" guile-hashing))
3441
3442 (define-public guile-packrat
3443 (package
3444 (name "guile-packrat")
3445 (version "0.1.1")
3446 (home-page "https://github.com/weinholt/packrat")
3447 (source (origin
3448 (method git-fetch)
3449 (uri (git-reference
3450 (url home-page)
3451 (commit (string-append "v" version))))
3452 (file-name (git-file-name name version))
3453 (sha256
3454 (base32
3455 "1aga17164fkhbgllqc7ni6fk5zl8mkmgkl5zcsy67x7ngpyalbby"))))
3456 (build-system guile-build-system)
3457 (arguments
3458 `(#:implicit-inputs? #f ;needs nothing but Guile
3459 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3460 #:not-compiled-file-regexp "/extensible\\.scm$"
3461 #:phases (modify-phases %standard-phases
3462 (add-before 'build 'no-srfi-23
3463 (lambda _
3464 (substitute* "packrat.sls"
3465 (("\\(srfi :23 error\\)")
3466 (object->string '(only (guile) error))))
3467 #t)))))
3468 (native-inputs
3469 `(("guile" ,guile-3.0)))
3470 (synopsis "Packrat parser library in R6RS Scheme")
3471 (description
3472 "This is an R6RS Scheme adaptation of the
3473 @uref{https://bford.info/packrat/, packrat parsing}. Packrat parsing is a
3474 memoizing, backtracking, recursive-descent parsing technique that runs in time
3475 and space linear in the size of the input text.")
3476 (license license:expat)))
3477
3478 (define-public guile-ac-d-bus
3479 (package
3480 (name "guile-ac-d-bus")
3481 (version "1.0.0-beta.0")
3482 (home-page "https://gitlab.com/weinholt/ac-d-bus/")
3483 (source (origin
3484 (method git-fetch)
3485 (uri (git-reference
3486 (url home-page)
3487 (commit (string-append "v" version))))
3488 (file-name (git-file-name name version))
3489 (sha256
3490 (base32
3491 "0rl809qimhgz6b0rixakb42r2l4g53jr09a2g0s1hxgab0blz0kb"))))
3492 (build-system guile-build-system)
3493 (arguments
3494 `(#:implicit-inputs? #f ;needs nothing but Guile
3495 #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3496 #:phases (modify-phases %standard-phases
3497 (add-before 'build 'adjust-for-guile
3498 (lambda _
3499 ;; Adjust source file names for Guile.
3500 (define (guile-sls->sls file)
3501 (string-append (string-drop-right
3502 file (string-length ".guile.sls"))
3503 ".sls"))
3504
3505 ;; Remove files targeting other implementations:
3506 ;; *.mosh.sls, etc.
3507 (for-each delete-file
3508 (find-files
3509 "compat"
3510 (lambda (file stat)
3511 (not (string-contains file ".guile.")))))
3512
3513 ;; Rename *.guile.sls to *.sls so the ".guile" bit does
3514 ;; not appear in .go file names.
3515 (for-each (lambda (file)
3516 (rename-file file (guile-sls->sls file)))
3517 (find-files "compat" "\\.guile\\.sls"))
3518
3519 ;; Move directories under d-bus/ to match module names.
3520 (mkdir "d-bus")
3521 (for-each (lambda (directory)
3522 (rename-file directory
3523 (string-append "d-bus/"
3524 directory)))
3525 '("compat" "protocol"))
3526
3527 #t)))))
3528 (native-inputs
3529 `(("guile" ,guile-3.0)))
3530 (propagated-inputs
3531 `(("guile-packrat" ,guile-packrat)))
3532 (synopsis "D-Bus protocol implementation in R6RS Scheme")
3533 (description
3534 "AC/D-Bus is an implementation of the D-Bus wire protocol. D-Bus is an
3535 interprocess communication protocol popular on GNU/Linux systems to
3536 communicate with a variety of services. Originally designed for desktop
3537 environments, it is now used by programs like VLC media player, BlueZ,
3538 NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit,
3539 gnome-keyring, and many more.")
3540 (license license:expat)))
3541
3542 (define-public guile-webutils
3543 (let ((commit "8541904f761066dc9c27b1153e9a838be9a55299")
3544 (revision "0"))
3545 (package
3546 (name "guile-webutils")
3547 (version (git-version "0.1" revision commit))
3548 (source (origin
3549 (method git-fetch)
3550 (uri (git-reference
3551 (url "https://notabug.org/cwebber/guile-webutils.git")
3552 (commit commit)))
3553 (file-name (git-file-name name version))
3554 (sha256
3555 (base32
3556 "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64"))
3557 (modules '((guix build utils)))
3558 (snippet
3559 '(begin
3560 ;; Allow builds with Guile 3.0.
3561 (substitute* "configure.ac"
3562 (("2\\.2 2\\.0")
3563 "3.0 2.2 2.0"))
3564 #t))))
3565 (build-system gnu-build-system)
3566 (native-inputs
3567 `(("autoconf" ,autoconf)
3568 ("automake" ,automake)
3569 ("pkg-config" ,pkg-config)
3570 ("texinfo" ,texinfo)))
3571 (inputs
3572 `(("guile" ,guile-3.0)))
3573 (propagated-inputs
3574 `(("guile-irregex" ,guile-irregex)
3575 ("guile-gcrypt" ,guile-gcrypt)))
3576 (home-page "https://notabug.org/cwebber/guile-webutils")
3577 (synopsis "Web application authoring utilities for Guile")
3578 (description
3579 "This package provides tooling to write web applications in Guile, such
3580 as signed sessions, multipart message support, etc.")
3581 (license license:gpl3+))))
3582
3583 (define-public guile2.2-webutils
3584 (package
3585 (inherit guile-webutils)
3586 (name "guile2.2-webutils")
3587 (inputs
3588 `(("guile" ,guile-2.2)))
3589 (propagated-inputs
3590 `(("guile-irregex" ,guile2.2-irregex)
3591 ("guile-gcrypt" ,guile2.2-gcrypt)))))
3592
3593 (define-public guile-lens
3594 (let ((commit "14b15d07255f9d3f55d40a3b750d13c9ee3a154f")
3595 (revision "0"))
3596 (package
3597 (name "guile-lens")
3598 (version (git-version "0.1" revision commit))
3599 (source (origin
3600 (method git-fetch)
3601 (uri (git-reference
3602 (url "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3603 (commit commit)))
3604 (file-name (git-file-name name version))
3605 (sha256
3606 (base32
3607 "0w8jzqyla56yrgj7acsgd4nspyir6zgp3vgxid4xmwhg9wmf1ida"))))
3608 (build-system gnu-build-system)
3609 (arguments
3610 '(#:phases
3611 (modify-phases %standard-phases
3612 (add-after 'unpack 'run-hall
3613 (lambda _
3614 (setenv "HOME" "/tmp") ; for ~/.hall
3615 (invoke "hall" "dist" "-x"))))))
3616 (native-inputs
3617 `(("autoconf" ,autoconf)
3618 ("automake" ,automake)
3619 ("guile" ,guile-3.0)
3620 ("guile-hall" ,guile-hall)
3621 ("pkg-config" ,pkg-config)
3622 ("texinfo" ,texinfo)))
3623 (home-page "https://gitlab.com/a-sassmannshausen/guile-lens.git")
3624 (synopsis "Composable lenses for data structures in Guile")
3625 (description
3626 "Guile-Lens is a library implementing lenses in Guile. The library is
3627 currently a re-implementation of the lentes library for Clojure. Lenses
3628 provide composable procedures, which can be used to focus, apply functions
3629 over, or update a value in arbitrary data structures.")
3630 (license license:gpl3+))))
3631
3632 (define-public guile2.2-lens
3633 (package
3634 (inherit guile-lens)
3635 (name "guile2.2-lens")
3636 (native-inputs
3637 `(("guile" ,guile-2.2)
3638 ,@(alist-delete "guile" (package-native-inputs guile-lens))))))
3639
3640 (define-public guile-xapian
3641 (package
3642 (name "guile-xapian")
3643 (version "0.1.0")
3644 (home-page "https://git.systemreboot.net/guile-xapian")
3645 (source
3646 (origin
3647 (method git-fetch)
3648 (uri (git-reference (url home-page)
3649 (commit (string-append "v" version))))
3650 (file-name (git-file-name name version))
3651 (sha256
3652 (base32
3653 "16k61f1jn3g48jaf3730b9l0izr5j933jzyri73nmcnjd09gm35i"))))
3654 (build-system gnu-build-system)
3655 (arguments
3656 '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
3657 (inputs
3658 `(("guile" ,guile-3.0)
3659 ("xapian" ,xapian)
3660 ("zlib" ,zlib)))
3661 (native-inputs
3662 `(("autoconf" ,autoconf)
3663 ("autoconf-archive" ,autoconf-archive)
3664 ("automake" ,automake)
3665 ("libtool" ,libtool)
3666 ("pkg-config" ,pkg-config)
3667 ("swig" ,swig)))
3668 (synopsis "Guile bindings for Xapian")
3669 (description "@code{guile-xapian} provides Guile bindings for Xapian, a
3670 search engine library. Xapian is a highly adaptable toolkit which allows
3671 developers to easily add advanced indexing and search facilities to their own
3672 applications. It has built-in support for several families of weighting
3673 models and also supports a rich set of boolean query operators.")
3674 (license license:gpl2+)))
3675
3676 (define-public guile2.2-xapian
3677 (package
3678 (inherit guile-xapian)
3679 (name "guile2.2-xapian")
3680 (inputs
3681 `(("guile" ,guile-2.2)
3682 ,@(alist-delete "guile" (package-inputs guile-xapian))))))
3683
3684 (define-public guile3.0-xapian
3685 (deprecated-package "guile3.0-xapian" guile-xapian))
3686
3687 (define-public guile-torrent
3688 (package
3689 (name "guile-torrent")
3690 (version "0.1.3")
3691 (source (origin (method git-fetch)
3692 (uri (git-reference
3693 (url
3694 "https://github.com/o-nly/torrent.git")
3695 (commit version)))
3696 (file-name (git-file-name name version))
3697 (sha256
3698 (base32
3699 "1yiagi55ncq1x7s9n7salzywjm4l96y3n7y3s47a9anvz87mrmim"))))
3700 (build-system gnu-build-system)
3701 (native-inputs
3702 `(("autoconf" ,autoconf)
3703 ("automake" ,automake)
3704 ("guile" ,guile-2.2)
3705 ("texinfo" ,texinfo)
3706 ("perl" ,perl)
3707 ("pkg-config" ,pkg-config)))
3708 (propagated-inputs
3709 `(("guile-gcrypt" ,guile-gcrypt)))
3710 (home-page "https://github.com/o-nly/torrent")
3711 (synopsis "Torrent library for GNU Guile")
3712 (description "This package provides facilities for working with
3713 @code{.torrent} or metainfo files. Implements a bencode reader and writer
3714 according to Bitorrent BEP003.")
3715 (license license:gpl3+)))
3716
3717 (define-public guile-irc
3718 (let ((commit "375d3bde9c6ae7ccc9d7cc65817966b6fda8f26a")
3719 (revision "0"))
3720 (package
3721 (name "guile-irc")
3722 (version (git-version "0.3.0" revision commit))
3723 (source (origin
3724 (method git-fetch)
3725 (uri (git-reference
3726 (url "https://github.com/rekado/guile-irc")
3727 (commit commit)))
3728 (file-name (git-file-name name version))
3729 (sha256
3730 (base32
3731 "113lcckcywrz9060w1c3fnvr8d7crdsjgsv4h47hgmr1slgadl4y"))))
3732 (build-system gnu-build-system)
3733 (arguments
3734 `(#:configure-flags '("--enable-gnutls=yes")))
3735 (native-inputs
3736 `(("autoconf" ,autoconf)
3737 ("automake" ,automake)
3738 ("texinfo" ,texinfo)))
3739 (inputs
3740 `(("gnutls" ,gnutls)
3741 ("guile" ,guile-3.0)))
3742 (home-page "https://github.com/rekado/guile-irc")
3743 (synopsis "IRC library for Guile")
3744 (description "This package provides a Guile library for @dfn{Internet
3745 Relay Chat} (IRC).")
3746 ;; Some file headers incorrectly say LGPLv2+.
3747 (license license:lgpl2.1+))))
3748
3749 (define-public guile-websocket
3750 (let ((commit "c854e0f84a40d972cbd532bbb89c97ca0126a7cf"))
3751 (package
3752 (name "guile-websocket")
3753 (version "0.1")
3754 (source
3755 (origin
3756 (method git-fetch)
3757 (uri (git-reference
3758 (url "git://dthompson.us/guile-websocket.git")
3759 (commit commit)))
3760 (file-name (git-file-name name version))
3761 (sha256
3762 (base32
3763 "1hymvsfrmq9qxr5cxnsgdz7y757yp1cpsgxmdp3f5wxxxpqgsmzx"))))
3764 (build-system gnu-build-system)
3765 (arguments
3766 '(#:make-flags
3767 '("GUILE_AUTO_COMPILE=0")
3768 #:phases
3769 (modify-phases %standard-phases
3770 ;; The package was developed for Guile 2.0 and has this version
3771 ;; hardcoded in the configure.ac and Makefile.am files. Substitute
3772 ;; 3.0 instead so it can support Guile 3.0.
3773 (add-after 'unpack 'update-guile-version
3774 (lambda _
3775 (substitute* "configure.ac"
3776 (("2.0.9") "3.0.0"))
3777 (substitute* "Makefile.am"
3778 (("2.0") "3.0")
3779
3780 ;; Install .go files where they belong.
3781 (("/ccache") "/site-ccache"))
3782 #t)))))
3783 (native-inputs
3784 `(("autoconf" ,autoconf)
3785 ("automake" ,automake)))
3786 (inputs
3787 `(("guile" ,guile-3.0)))
3788 (synopsis "Websocket server/client for Guile")
3789 (description "Guile-websocket provides an implementation of the
3790 WebSocket protocol as defined by RFC 6455.")
3791 (home-page "https://git.dthompson.us/guile-websocket.git")
3792 (license license:lgpl3+))))
3793
3794 (define-public guile3.0-websocket
3795 (deprecated-package "guile3.0-websocket" guile-websocket))
3796
3797 (define-public guile-rdf
3798 (package
3799 (name "guile-rdf")
3800 (version "1.0")
3801 (source
3802 (origin
3803 (method git-fetch)
3804 (uri (git-reference
3805 (url "https://framagit.org/tyreunom/guile-rdf")
3806 (commit version)))
3807 (file-name (git-file-name name version))
3808 (sha256
3809 (base32
3810 "0dwn3app1fscbpmpgvjs5jy1y0gwy3j5gdx8br79af6a88zjlnqf"))))
3811 (build-system gnu-build-system)
3812 (arguments
3813 `(#:tests? #f)); tests require network
3814 (inputs
3815 `(("guile" ,guile-3.0)))
3816 (native-inputs
3817 `(("automake" ,automake)
3818 ("autoconf" ,autoconf)
3819 ("pkg-config" ,pkg-config)
3820 ("texinfo" ,texinfo)))
3821 (home-page "https://framagit.org/tyreunom/guile-rdf")
3822 (synopsis "Guile implementation of the RDF abstract and concrete syntaxes")
3823 (description "Guile RDF is an implementation of the RDF (Resource Description
3824 Framework) format defined by the W3C for GNU Guile. RDF structures include
3825 triples (facts with a subject, a predicate and an object), graphs which are
3826 sets of triples, and datasets, which are collections of graphs.
3827
3828 RDF specifications include the specification of concrete syntaxes and of
3829 operations on graphs. This library implements some basic functionalities,
3830 such as parsing and producing turtle and nquads syntax, as well as
3831 manipulating graphs and datasets.")
3832 (license license:gpl3+)))
3833
3834 (define-public guile-jsonld
3835 (package
3836 (name "guile-jsonld")
3837 (version "1.0.1")
3838 (source
3839 (origin
3840 (method git-fetch)
3841 (uri (git-reference
3842 (url "https://framagit.org/tyreunom/guile-jsonld")
3843 (commit version)))
3844 (file-name (git-file-name name version))
3845 (sha256
3846 (base32
3847 "0zfn3nwlz6xzip1j8xbj768dc299r037cfc81bk6kwl9xhzkjbrg"))))
3848 (build-system gnu-build-system)
3849 (arguments
3850 `(#:tests? #f)); require network
3851 (propagated-inputs
3852 `(("guile-gnutls" ,gnutls)
3853 ("guile-json" ,guile-json-3)
3854 ("guile-rdf" ,guile-rdf)))
3855 (inputs
3856 `(("guile" ,guile-3.0)))
3857 (native-inputs
3858 `(("automake" ,automake)
3859 ("autoconf" ,autoconf)
3860 ("pkg-config" ,pkg-config)
3861 ("texinfo" ,texinfo)))
3862 (home-page "https://framagit.org/tyreunom/guile-jsonld")
3863 (synopsis "Guile implementation of the JsonLD API specification")
3864 (description "Guile JsonLD is an implementation of the JsonLD (Json for
3865 Linked Data) API defined by the W3C for GNU Guile. It allows you to express links
3866 between data, in a way that is very similar to WikiData or RDF for instance.
3867 An object can have relations (in the form of an IRI) that relates it to one or
3868 more objects or strings, represented by a Json object or an IRI.")
3869 (license license:gpl3+)))
3870
3871 (define-public guile-struct-pack
3872 (package
3873 (name "guile-struct-pack")
3874 (version "1.1.1")
3875 (source
3876 (origin
3877 (method git-fetch)
3878 (uri (git-reference
3879 (url "https://github.com/weinholt/struct-pack")
3880 (commit (string-append "v" version))))
3881 (file-name (git-file-name name version))
3882 (sha256
3883 (base32 "0hd72m821pahjphzyjn26i55542v8makr55xzjll2cycja4wsbc1"))))
3884 (build-system guile-build-system)
3885 (arguments
3886 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3887 #:modules ((guix build guile-build-system)
3888 (guix build utils)
3889 (srfi srfi-26)
3890 (ice-9 ftw))
3891 #:phases (modify-phases %standard-phases
3892 (add-before 'build 'move-sls-files
3893 (lambda _
3894 ;; Move files under a struct/ directory to reflect the
3895 ;; module hierarchy.
3896 (define dst-folder "struct")
3897 (define (target file)
3898 (string-append dst-folder "/" file))
3899 (define files
3900 (scandir "." (negate (cut member <> '("." "..")))))
3901 (mkdir dst-folder)
3902 (for-each (lambda (file)
3903 (rename-file file (target file)))
3904 files)
3905 #t)))))
3906 (native-inputs
3907 `(("guile" ,guile-3.0)))
3908 (home-page "https://github.com/weinholt/struct-pack")
3909 (synopsis "R6RS library for working with packed byte structures")
3910 (description
3911 "This is an R6RS library for working with packed byte structures. It is
3912 similar to struct in Python or pack and unpack in Perl.")
3913 (license license:expat)))
3914
3915 (define-public guile-machine-code
3916 (package
3917 (name "guile-machine-code")
3918 (version "2.1.0")
3919 (source
3920 (origin
3921 (method git-fetch)
3922 (uri (git-reference
3923 (url "https://github.com/weinholt/machine-code")
3924 (commit (string-append "v" version))))
3925 (file-name (git-file-name name version))
3926 (sha256
3927 (base32 "0wzj3caj2jypzyjqfkfqkvr3kkbjabsnhldv9kvnx9w9qnria5yd"))))
3928 (build-system guile-build-system)
3929 (arguments
3930 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3931 #:modules ((guix build guile-build-system)
3932 (guix build utils)
3933 (srfi srfi-26)
3934 (ice-9 ftw))
3935 #:phases (modify-phases %standard-phases
3936 (add-before 'build 'move-sls-files
3937 (lambda _
3938 ;; Move files under a struct/ directory to reflect the
3939 ;; module hierarchy.
3940 (define dst-folder "machine-code")
3941 (define (target file)
3942 (string-append dst-folder "/" file))
3943 (define files
3944 (scandir "." (negate (cut member <> '("." "..")))))
3945 (mkdir dst-folder)
3946 (for-each (lambda (file)
3947 (rename-file file (target file)))
3948 files)
3949 #t)))))
3950 (native-inputs
3951 `(("guile" ,guile-3.0)))
3952 (propagated-inputs
3953 `(("guile-struct-pack" ,guile-struct-pack)))
3954 (home-page "https://github.com/weinholt/machine-code")
3955 (synopsis "Tools that relate to machine code and object formats")
3956 (description
3957 "This project is about the development of tools that relate to machine
3958 code and object formats; for all architectures. Here you'll find libraries
3959 for working with binary code: assembly, disassembly, instruction tables,
3960 object formats and related areas.")
3961 (license license:expat)))
3962
3963 (define-public guile-laesare
3964 (package
3965 (name "guile-laesare")
3966 (version "1.0.0")
3967 (source
3968 (origin
3969 (method git-fetch)
3970 (uri (git-reference
3971 (url "https://github.com/weinholt/laesare")
3972 (commit (string-append "v" version))))
3973 (file-name (git-file-name name version))
3974 (sha256
3975 (base32 "15q619gzw717r8r1ql23zfdaibpnp9qqs96032vdc3rj74msxc92"))))
3976 (build-system guile-build-system)
3977 (arguments
3978 `(#:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch")
3979 #:modules ((guix build guile-build-system)
3980 (guix build utils)
3981 (srfi srfi-26)
3982 (ice-9 ftw))
3983 #:phases (modify-phases %standard-phases
3984 (add-before 'build 'move-sls-files
3985 (lambda _
3986 ;; Move files under a laesare directory to reflect
3987 ;; the module hierarchy.
3988 (define dst-folder "laesare")
3989 (define (target file)
3990 (string-append dst-folder "/" file))
3991 (define files
3992 (scandir "." (negate (cut member <> '("." "..")))))
3993 (mkdir dst-folder)
3994 (for-each (lambda (file)
3995 (rename-file file (target file)))
3996 files)
3997 #t)))))
3998 (native-inputs
3999 `(("guile" ,guile-3.0)))
4000 (home-page "https://github.com/weinholt/laesare")
4001 (synopsis "R6RS Scheme library that provides a reader")
4002 (description
4003 "This is an R6RS Scheme library that provides a reader with some extra
4004 features not found in the standard read procedure such as a compatible mode
4005 with support for other RnRS standards and a tolerant mode that continues on
4006 errors.")
4007 (license license:expat)))