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