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