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