gnu: cmus: Support AAC format.
[jackhill/guix/guix.git] / gnu / packages / guile-xyz.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
4 ;;; Copyright © 2015, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
5 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
6 ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2016 Erik Edrosa <erik.edrosa@gmail.com>
8 ;;; Copyright © 2016 Eraim Flashner <efraim@flashner.co.il>
9 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
10 ;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
11 ;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
12 ;;; Copyright © 2016, 2019 Jan Nieuwenhuizen <janneke@gnu.org>
13 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
14 ;;; Copyright © 2017 David Thompson <davet@gnu.org>
15 ;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
16 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
17 ;;; Copyright © 2017 ng0 <ng0@n0.is>
18 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
19 ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
20 ;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
21 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
22 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
23 ;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
24 ;;;
25 ;;; This file is part of GNU Guix.
26 ;;;
27 ;;; GNU Guix is free software; you can redistribute it and/or modify it
28 ;;; under the terms of the GNU General Public License as published by
29 ;;; the Free Software Foundation; either version 3 of the License, or (at
30 ;;; your option) any later version.
31 ;;;
32 ;;; GNU Guix is distributed in the hope that it will be useful, but
33 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
34 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35 ;;; GNU General Public License for more details.
36 ;;;
37 ;;; You should have received a copy of the GNU General Public License
38 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
39
40 (define-module (gnu packages guile-xyz)
41 #:use-module ((guix licenses) #:prefix license:)
42 #:use-module (gnu packages)
43 #:use-module (gnu packages aspell)
44 #:use-module (gnu packages autotools)
45 #:use-module (gnu packages base)
46 #:use-module (gnu packages bash)
47 #:use-module (gnu packages compression)
48 #:use-module (gnu packages databases)
49 #:use-module (gnu packages disk)
50 #:use-module (gnu packages ed)
51 #:use-module (gnu packages emacs)
52 #:use-module (gnu packages emacs-xyz)
53 #:use-module (gnu packages gawk)
54 #:use-module (gnu packages gettext)
55 #:use-module (gnu packages gl)
56 #:use-module (gnu packages glib)
57 #:use-module (gnu packages gnome)
58 #:use-module (gnu packages gperf)
59 #:use-module (gnu packages gtk)
60 #:use-module (gnu packages guile)
61 #:use-module (gnu packages hurd)
62 #:use-module (gnu packages image)
63 #:use-module (gnu packages imagemagick)
64 #:use-module (gnu packages libffi)
65 #:use-module (gnu packages libunistring)
66 #:use-module (gnu packages linux)
67 #:use-module (gnu packages man)
68 #:use-module (gnu packages maths)
69 #:use-module (gnu packages multiprecision)
70 #:use-module (gnu packages ncurses)
71 #:use-module (gnu packages networking)
72 #:use-module (gnu packages noweb)
73 #:use-module (gnu packages perl)
74 #:use-module (gnu packages pkg-config)
75 #:use-module (gnu packages python)
76 #:use-module (gnu packages readline)
77 #:use-module (gnu packages sdl)
78 #:use-module (gnu packages slang)
79 #:use-module (gnu packages sqlite)
80 #:use-module (gnu packages tex)
81 #:use-module (gnu packages texinfo)
82 #:use-module (gnu packages tls)
83 #:use-module (gnu packages version-control)
84 #:use-module (gnu packages webkit)
85 #:use-module (gnu packages xdisorg)
86 #:use-module (gnu packages xorg)
87 #:use-module (guix packages)
88 #:use-module (guix download)
89 #:use-module (guix git-download)
90 #:use-module (guix hg-download)
91 #:use-module (guix build-system gnu)
92 #:use-module (guix build-system guile)
93 #:use-module (guix utils)
94 #:use-module (ice-9 match)
95 #:use-module ((srfi srfi-1) #:select (alist-delete)))
96
97 (define-public artanis
98 (let ((release "0.3.1")
99 (revision 0))
100 (package
101 (name "artanis")
102 (version (if (zero? revision)
103 release
104 (string-append release "-"
105 (number->string revision))))
106 (source (origin
107 (method url-fetch)
108 (uri (string-append "mirror://gnu/artanis/artanis-"
109 release ".tar.gz"))
110 (file-name (string-append name "-" version ".tar.gz"))
111 (sha256
112 (base32
113 "0hqr5m3mb558bdhkc2sadmd9cbrhp3y525wx7cwirgy6i0zmay68"))
114 (modules '((guix build utils)))
115 (snippet
116 '(begin
117 ;; Unbundle guile-redis and guile-json
118 (delete-file-recursively "artanis/third-party/json.scm")
119 (delete-file-recursively "artanis/third-party/json")
120 (delete-file-recursively "artanis/third-party/redis.scm")
121 (delete-file-recursively "artanis/third-party/redis")
122 (substitute* '("artanis/artanis.scm"
123 "artanis/lpc.scm"
124 "artanis/oht.scm")
125 (("(#:use-module \\()artanis third-party (json\\))" _
126 use-module json)
127 (string-append use-module json)))
128 (substitute* '("artanis/lpc.scm"
129 "artanis/session.scm")
130 (("(#:use-module \\()artanis third-party (redis\\))" _
131 use-module redis)
132 (string-append use-module redis)))
133 (substitute* "artanis/oht.scm"
134 (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)"
135 _ pre json-string post)
136 (string-append pre
137 "scm" json-string
138 post)))
139 (substitute* "artanis/artanis.scm"
140 (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+")
141 ""))
142 #t))))
143 (build-system gnu-build-system)
144 ;; FIXME the bundled csv contains one more exported procedure
145 ;; (sxml->csv-string) than guile-csv. The author is maintainer of both
146 ;; projects.
147 ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
148 (inputs `(("guile" ,guile-2.2)
149 ("guile-json" ,guile-json)
150 ("guile-redis" ,guile-redis)))
151 (native-inputs `(("bash" ,bash) ;for the `source' builtin
152 ("pkgconfig" ,pkg-config)
153 ("util-linux" ,util-linux))) ;for the `script' command
154 (arguments
155 '(#:make-flags
156 ;; TODO: The documentation must be built with the `docs' target.
157 (let* ((out (assoc-ref %outputs "out"))
158 (scm (string-append out "/share/guile/site/2.2"))
159 (go (string-append out "/lib/guile/2.2/site-ccache")))
160 ;; Don't use (%site-dir) for site paths.
161 (list (string-append "MOD_PATH=" scm)
162 (string-append "MOD_COMPILED_PATH=" go)))
163 #:test-target "test"
164 #:phases
165 (modify-phases %standard-phases
166 (add-after 'unpack 'patch-site-dir
167 (lambda* (#:key outputs #:allow-other-keys)
168 (substitute* "artanis/commands/help.scm"
169 (("\\(%site-dir\\)")
170 (string-append "\""
171 (assoc-ref outputs "out")
172 "/share/guile/site/2.2\"")))))
173 (add-before 'install 'substitute-root-dir
174 (lambda* (#:key outputs #:allow-other-keys)
175 (let ((out (assoc-ref outputs "out")))
176 (substitute* "Makefile" ;ignore the execution of bash.bashrc
177 ((" /etc/bash.bashrc") " /dev/null"))
178 (substitute* "Makefile" ;set the root of config files to OUT
179 ((" /etc") (string-append " " out "/etc")))
180 (mkdir-p (string-append out "/bin")) ;for the `art' executable
181 #t)))
182 (add-after 'install 'wrap-art
183 (lambda* (#:key inputs outputs #:allow-other-keys)
184 (let* ((out (assoc-ref outputs "out"))
185 (bin (string-append out "/bin"))
186 (scm (string-append out "/share/guile/site/2.2"))
187 (go (string-append out "/lib/guile/2.2/site-ccache")))
188 (wrap-program (string-append bin "/art")
189 `("GUILE_LOAD_PATH" ":" prefix
190 (,scm ,(getenv "GUILE_LOAD_PATH")))
191 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
192 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))
193 #t))))))
194 (synopsis "Web application framework written in Guile")
195 (description "GNU Artanis is a web application framework written in Guile
196 Scheme. A web application framework (WAF) is a software framework that is
197 designed to support the development of dynamic websites, web applications, web
198 services and web resources. The framework aims to alleviate the overhead
199 associated with common activities performed in web development. Artanis
200 provides several tools for web development: database access, templating
201 frameworks, session management, URL-remapping for RESTful, page caching, and
202 more.")
203 (home-page "https://www.gnu.org/software/artanis/")
204 (license (list license:gpl3+ license:lgpl3+))))) ;dual license
205
206 ;; There has not been any release yet.
207 (define-public guildhall
208 (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778")
209 (revision "1"))
210 (package
211 (name "guildhall")
212 (version (string-append "0-" revision "." (string-take commit 9)))
213 (source (origin
214 (method git-fetch)
215 (uri (git-reference
216 (url "https://github.com/ijp/guildhall.git")
217 (commit commit)))
218 (file-name (string-append name "-" version "-checkout"))
219 (sha256
220 (base32
221 "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1"))))
222 (build-system gnu-build-system)
223 (arguments
224 `(#:phases
225 (modify-phases %standard-phases
226 ;; Tests fail without this fix because they try to load the bash
227 ;; executable as a Scheme file. See bug report at
228 ;; https://github.com/ijp/guildhall/issues/22
229 (add-after 'unpack 'fix-bug-22
230 (lambda _
231 (substitute* "Makefile.am"
232 (("TESTS_ENVIRONMENT=.*")
233 "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/
234 TEST_EXTENSIONS = .scm
235 SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE)
236 AM_SCM_LOG_FLAGS = --no-auto-compile -s")
237 ;; FIXME: one of the database tests fails for unknown
238 ;; reasons. It does not fail when run outside of Guix.
239 (("tests/database.scm") ""))
240 #t)))))
241 (inputs
242 `(("guile" ,guile-2.0)))
243 (native-inputs
244 `(("zip" ,zip) ; for tests
245 ("autoconf" ,autoconf)
246 ("automake" ,automake)
247 ("texinfo" ,texinfo)))
248 (synopsis "Package manager for Guile")
249 (description
250 "Guildhall is a package manager written for Guile Scheme. A guild is
251 an association of independent craftspeople. A guildhall is where they meet.
252 This Guildhall aims to make a virtual space for Guile wizards and journeyfolk
253 to share code.
254
255 On a practical level, Guildhall lets you share Scheme modules and programs
256 over the internet, and install code that has been shared by others. Guildhall
257 can handle dependencies, so when a program requires several libraries, and
258 each of those has further dependencies, all of the prerequisites for the
259 program can be installed in one go.")
260 (home-page "https://github.com/ijp/guildhall")
261 (license license:gpl3+))))
262
263 (define-public guile-aspell
264 (package
265 (name "guile-aspell")
266 (version "0.4")
267 (source (origin
268 (method url-fetch)
269 (uri (string-append
270 "http://lonelycactus.com/tarball/guile_aspell-"
271 version ".tar.gz"))
272 (sha256
273 (base32
274 "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077"))))
275 (build-system gnu-build-system)
276 (arguments
277 '(#:phases (modify-phases %standard-phases
278 (add-before 'configure 'set-guilesitedir
279 (lambda _
280 (substitute* "Makefile.in"
281 (("^guilesitedir =.*$")
282 "guilesitedir = \
283 $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
284 #t))
285 (add-before 'build 'set-libaspell-file-name
286 (lambda* (#:key inputs #:allow-other-keys)
287 (let ((aspell (assoc-ref inputs "aspell")))
288 (substitute* "aspell.scm"
289 (("\"libaspell\\.so\"")
290 (string-append "\"" aspell
291 "/lib/libaspell\"")))
292 #t))))))
293 (native-inputs `(("pkg-config" ,pkg-config)))
294 (inputs `(("guile" ,guile-2.2)
295 ("aspell" ,aspell)))
296 (home-page "https://github.com/spk121/guile-aspell")
297 (synopsis "Spell-checking from Guile")
298 (description
299 "guile-aspell is a Guile Scheme library for comparing a string against a
300 dictionary and suggesting spelling corrections.")
301 (license license:gpl3+)))
302
303 (define-public guile-bash
304 ;; This project is currently retired. It was initially announced here:
305 ;; <https://lists.gnu.org/archive/html/guile-user/2015-02/msg00003.html>.
306 (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469")
307 (revision "0"))
308 (package
309 (name "guile-bash")
310 (version (string-append "0.1.6-" revision "." (string-take commit 7)))
311 (home-page
312 "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git")
313 (source (origin
314 (method git-fetch)
315 (uri (git-reference
316 (commit commit)
317 (url home-page)))
318 (sha256
319 (base32
320 "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p"))
321 (file-name (string-append name "-" version "-checkout"))))
322 (build-system gnu-build-system)
323 (arguments
324 '(#:configure-flags
325 ;; Add -I to match 'bash.pc' of Bash 4.4.
326 (list (string-append "CPPFLAGS=-I"
327 (assoc-ref %build-inputs "bash:include")
328 "/include/bash/include")
329
330 ;; The '.a' file is useless.
331 "--disable-static"
332
333 ;; Install 'lib/bash' as Bash 4.4 expects.
334 (string-append "--libdir=" (assoc-ref %outputs "out")
335 "/lib/bash"))))
336 (native-inputs `(("pkg-config" ,pkg-config)
337 ("autoconf" ,autoconf-wrapper)
338 ("automake" ,automake)
339 ("libtool" ,libtool)
340 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
341 ("gettext" ,gettext-minimal)
342
343 ;; Bash with loadable module support, for the test
344 ;; suite.
345 ("bash-full" ,bash)))
346 (inputs `(("guile" ,guile-2.0)
347 ("bash:include" ,bash "include")))
348 (synopsis "Extend Bash using Guile")
349 (description
350 "Guile-Bash provides a shared library and set of Guile modules,
351 allowing you to extend Bash in Scheme. Scheme interfaces allow you to access
352 the following aspects of Bash:
353
354 @itemize
355 @item aliases;
356 @item setting and getting Bash variables;
357 @item creating dynamic variables;
358 @item creating Bash functions with a Scheme implementation;
359 @item reader macro for output capturing;
360 @item reader macro for evaluating raw Bash commands.
361 @end itemize
362
363 To enable it, run:
364
365 @example
366 enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm
367 @end example
368
369 and then run @command{scm example.scm}.")
370 (license license:gpl3+))))
371
372 (define-public guile-8sync
373 (package
374 (name "guile-8sync")
375 (version "0.4.2")
376 (source (origin
377 (method url-fetch)
378 (uri (string-append "mirror://gnu/8sync/8sync-" version
379 ".tar.gz"))
380 (sha256
381 (base32
382 "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw"))))
383 (build-system gnu-build-system)
384 (native-inputs `(("autoconf" ,autoconf)
385 ("automake" ,automake)
386 ("guile" ,guile-2.2)
387 ("pkg-config" ,pkg-config)
388 ("texinfo" ,texinfo)))
389 (arguments
390 `(#:phases (modify-phases %standard-phases
391 (add-before 'configure 'setenv
392 (lambda _
393 ;; quiet warnings
394 (setenv "GUILE_AUTO_COMPILE" "0")
395 #t)))))
396 (home-page "https://gnu.org/s/8sync/")
397 (synopsis "Asynchronous actor model library for Guile")
398 (description
399 "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming
400 library for GNU Guile based on the actor model.
401
402 Note that 8sync is only available for Guile 2.2.")
403 (license license:lgpl3+)))
404
405 (define-public guile-daemon
406 (package
407 (name "guile-daemon")
408 (version "0.1.2")
409 (source (origin
410 (method url-fetch)
411 (uri (string-append "https://github.com/alezost/" name
412 "/releases/download/v" version
413 "/" name "-" version ".tar.gz"))
414 (sha256
415 (base32
416 "0hh6gq6b6phpxm0b1dkxyzj3f4sxdf7dji63609lzypa5v1ad2gv"))))
417 (build-system gnu-build-system)
418 (native-inputs
419 `(("pkg-config" ,pkg-config)))
420 (inputs
421 `(("guile" ,guile-2.2)))
422 (home-page "https://github.com/alezost/guile-daemon")
423 (synopsis "Evaluate code in a running Guile process")
424 (description
425 "Guile-Daemon is a small Guile program that loads your initial
426 configuration file, and then reads and evaluates Guile expressions that
427 you send to a FIFO file.")
428 (license license:gpl3+)))
429
430 (define-public guile-dsv
431 (package
432 (name "guile-dsv")
433 (version "0.2.1")
434 (source (origin
435 (method git-fetch)
436 (uri (git-reference
437 (url "https://github.com/artyom-poptsov/guile-dsv")
438 (commit "bdc5267d007478abc20ea96d7c459b7dd9560b3d")))
439 (file-name (string-append name "-" version "-checkout"))
440 (sha256
441 (base32
442 "1irw6mz8998nwyhzrw9g94jcz60b9zljgqfmipaz1ybn8579qjx0"))))
443 (build-system gnu-build-system)
444 (native-inputs
445 `(("autoconf" ,autoconf)
446 ("automake" ,automake)
447 ("pkg-config" ,pkg-config)
448 ("texinfo" ,texinfo)))
449 (inputs `(("guile" ,guile-2.2)))
450 (propagated-inputs `(("guile-lib" ,guile-lib)))
451 (arguments
452 '(#:phases (modify-phases %standard-phases
453 (add-before 'configure 'set-guilesitedir
454 (lambda _
455 (substitute* "Makefile.in"
456 (("^guilesitedir =.*$")
457 "guilesitedir = \
458 $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
459 (substitute* "modules/Makefile.in"
460 (("^guilesitedir =.*$")
461 "guilesitedir = \
462 $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
463 (substitute* "modules/dsv/Makefile.in"
464 (("^guilesitedir =.*$")
465 "guilesitedir = \
466 $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
467 #t)))))
468 (home-page "https://github.com/artyom-poptsov/guile-dsv")
469 (synopsis "DSV module for Guile")
470 (description
471 "Guile-DSV is a GNU Guile module for working with the
472 delimiter-separated values (DSV) data format. Guile-DSV supports the
473 Unix-style DSV format and RFC 4180 format.")
474 (license license:gpl3+)))
475
476 (define-public guile-fibers
477 (package
478 (name "guile-fibers")
479 (version "1.0.0")
480 (source (origin
481 (method url-fetch)
482 (uri (string-append "https://wingolog.org/pub/fibers/fibers-"
483 version ".tar.gz"))
484 (sha256
485 (base32
486 "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0"))))
487 (build-system gnu-build-system)
488 (arguments
489 '(#:phases (modify-phases %standard-phases
490 (add-after 'install 'mode-guile-objects
491 (lambda* (#:key outputs #:allow-other-keys)
492 ;; .go files are installed to "lib/guile/X.Y/cache".
493 ;; This phase moves them to "…/site-ccache".
494 (let* ((out (assoc-ref outputs "out"))
495 (lib (string-append out "/lib/guile"))
496 (old (car (find-files lib "^ccache$"
497 #:directories? #t)))
498 (new (string-append (dirname old)
499 "/site-ccache")))
500 (rename-file old new)
501 #t))))))
502 (native-inputs
503 `(("texinfo" ,texinfo)
504 ("pkg-config" ,pkg-config)))
505 (inputs
506 `(("guile" ,guile-2.2)))
507 (synopsis "Lightweight concurrency facility for Guile")
508 (description
509 "Fibers is a Guile library that implements a a lightweight concurrency
510 facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is
511 like a \"goroutine\" from the Go language: a lightweight thread-like
512 abstraction. Systems built with Fibers can scale up to millions of concurrent
513 fibers, tens of thousands of concurrent socket connections, and many parallel
514 cores. The Fibers library also provides Concurrent ML-like channels for
515 communication between fibers.
516
517 Note that Fibers makes use of some Guile 2.1/2.2-specific features and
518 is not available for Guile 2.0.")
519 (home-page "https://github.com/wingo/fibers")
520 (license license:lgpl3+)))
521
522 (define-public guile-syntax-highlight
523 (package
524 (name "guile-syntax-highlight")
525 (version "0.1")
526 (source (origin
527 (method url-fetch)
528 (uri (string-append "https://files.dthompson.us/"
529 "guile-syntax-highlight/"
530 "guile-syntax-highlight-"
531 version ".tar.gz"))
532 (sha256
533 (base32
534 "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi"))))
535 (build-system gnu-build-system)
536 (native-inputs
537 `(("pkg-config" ,pkg-config)))
538 (inputs
539 `(("guile" ,guile-2.2)))
540 (synopsis "General-purpose syntax highlighter for GNU Guile")
541 (description "Guile-syntax-highlight is a general-purpose syntax
542 highlighting library for GNU Guile. It can parse code written in various
543 programming languages into a simple s-expression that can be converted to
544 HTML (via SXML) or any other format for rendering.")
545 (home-page "http://dthompson.us/projects/guile-syntax-highlight.html")
546 (license license:lgpl3+)))
547
548 (define-public guile-sjson
549 (package
550 (name "guile-sjson")
551 (version "0.2.1")
552 (source (origin
553 (method url-fetch)
554 (uri (string-append "https://dustycloud.org/misc/sjson-" version
555 ".tar.gz"))
556 (sha256
557 (base32
558 "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3"))))
559 (build-system gnu-build-system)
560 (native-inputs
561 `(("autoconf" ,autoconf)
562 ("automake" ,automake)
563 ("pkg-config" ,pkg-config)))
564 (inputs
565 `(("guile" ,guile-2.2)))
566 (home-page "https://gitlab.com/dustyweb/guile-sjson")
567 (synopsis "S-expression based json reader/writer for Guile")
568 (description "guile-sjson is a json reader/writer for Guile.
569 It has a nice, simple s-expression based syntax.")
570 (license license:lgpl3+)))
571
572 (define-public guile-squee
573 (let ((commit "a85902a92bf6f58a1d35fd974a01ade163deda8d")
574 (revision "0"))
575 (package
576 (name "guile-squee")
577 (version (string-append "0-" revision "." (string-take commit 7)))
578 (source (origin
579 (method git-fetch)
580 (uri (git-reference
581 (url "https://notabug.org/cwebber/guile-squee.git")
582 (commit commit)))
583 (file-name (git-file-name name version))
584 (sha256
585 (base32
586 "0p1lpsp4kx57j3ai1dkxilm4ziavzzx8wbbc42m3hpziq0a7qz5z"))))
587 (build-system guile-build-system)
588 (arguments
589 '(#:phases
590 (modify-phases %standard-phases
591 (add-after 'unpack 'patch
592 (lambda* (#:key inputs #:allow-other-keys)
593 (substitute* "squee.scm"
594 (("dynamic-link \"libpq\"")
595 (string-append
596 "dynamic-link \""
597 (assoc-ref inputs "postgresql") "/lib/libpq.so"
598 "\"")))
599 #t)))))
600 (inputs
601 `(("postgresql" ,postgresql)))
602 (native-inputs
603 `(("guile" ,guile-2.2)))
604 (home-page "https://notabug.org/cwebber/guile-squee")
605 (synopsis "Connect to PostgreSQL using Guile")
606 (description
607 "@code{squee} is a Guile library for connecting to PostgreSQL databases
608 using Guile's foreign function interface.")
609 (license license:lgpl3+))))
610
611 (define-public guile-colorized
612 (package
613 (name "guile-colorized")
614 (version "0.1")
615 (source
616 (origin
617 (method git-fetch)
618 (uri (git-reference
619 (url "https://gitlab.com/NalaGinrut/guile-colorized.git")
620 (commit (string-append "v" version))))
621 (file-name (git-file-name name version))
622 (sha256
623 (base32 "10mv8c63159r3qvwwdvsgnsvdg7nc2ghak85zapwqpv4ywrqp9zc"))))
624 (build-system guile-build-system)
625 (native-inputs
626 `(("guile" ,guile-2.2)))
627 (home-page "https://gitlab.com/NalaGinrut/guile-colorized")
628 (synopsis "Colorized REPL for Guile")
629 (description
630 "Guile-colorized provides you with a colorized REPL for GNU Guile.")
631 (license license:gpl3+)))
632
633 (define-public guile-pfds
634 (package
635 (name "guile-pfds")
636 (version "0.3")
637 (home-page "https://github.com/ijp/pfds")
638 (source (origin
639 (method git-fetch)
640 (uri (git-reference
641 (url home-page)
642 (commit (string-append "v" version))))
643 (sha256
644 (base32
645 "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh"))
646 (file-name (string-append name "-" version "-checkout"))))
647 (build-system guile-build-system)
648 (arguments
649 '(#:source-directory "src"
650 #:phases (modify-phases %standard-phases
651 (add-after 'unpack 'move-files-around
652 (lambda _
653 ;; Move files under a pfds/ directory to reflect the
654 ;; module hierarchy.
655 (mkdir-p "src/pfds")
656 (for-each (lambda (file)
657 (rename-file file
658 (string-append "src/pfds/"
659 file)))
660 '("bbtrees.sls"
661 "deques"
662 "deques.sls"
663 "dlists.sls"
664 "fingertrees.sls"
665 "hamts.sls"
666 "heaps.sls"
667 "private"
668 "psqs.sls"
669 "queues"
670 "queues.sls"
671 "sequences.sls"
672 "sets.sls"))
673
674 ;; In Guile <= 2.2.4, there's no way to tell 'guild
675 ;; compile' to accept the ".sls" extension. So...
676 (for-each (lambda (file)
677 (rename-file file
678 (string-append
679 (string-drop-right file 4)
680 ".scm")))
681 (find-files "." "\\.sls$"))
682 #t)))))
683 (native-inputs
684 `(("guile" ,guile-2.2)))
685 (synopsis "Purely functional data structures for Guile")
686 (description
687 "This package provides purely functional data structures written in R6RS
688 Scheme and compiled for Guile. It has been tested with Racket, Guile 2,
689 Vicare Scheme and IronScheme. Right now it contains:
690
691 @itemize
692 @item queues
693 @item deques
694 @item bbtrees
695 @item sets
696 @item dlists
697 @item priority search queues (PSQs)
698 @item finger trees
699 @item sequences
700 @item heaps
701 @item hash array mapped tries (HAMTs).
702 @end itemize\n")
703 (license license:bsd-3)))
704
705 (define-public guile-aa-tree
706 (package
707 (name "guile-aa-tree")
708 (version "3.1.1")
709 (source (origin
710 (method url-fetch)
711 (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-"
712 version ".tar.gz"))
713 (sha256
714 (base32
715 "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh"))))
716 (build-system guile-build-system)
717 (native-inputs `(("guile" ,guile-2.2)))
718 ;; https://savannah.nongnu.org/projects/guile-aa-tree
719 (home-page "https://qlfiles.net/guile-aa-tree/")
720 (synopsis "AA tree data structure for Guile")
721 (description
722 "This package provides an implementation of @dfn{AA trees}, a
723 self-balancing binary tree data structure, for Guile. It ensure @math{O(log
724 n)} worst case performance for core operations. The module provides
725 non-mutating insert, delete, and search operations, with support for
726 convenient nested tree operations.")
727 (license license:gpl3+)))
728
729 (define-public guile-simple-zmq
730 (let ((commit "68bedb6679716214fb9d3472da57544526f7a618")
731 (revision "3"))
732 (package
733 (name "guile-simple-zmq")
734 (version (git-version "0.0.0" revision commit))
735 (source
736 (origin
737 (method git-fetch)
738 (uri (git-reference
739 (url "https://github.com/jerry40/guile-simple-zmq")
740 (commit commit)))
741 (sha256
742 (base32
743 "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli"))
744 (file-name (git-file-name name version))))
745 (build-system guile-build-system)
746 (arguments
747 `(#:source-directory "src"
748 #:phases (modify-phases %standard-phases
749 (add-after 'unpack 'set-libzmq-file-name
750 (lambda* (#:key inputs #:allow-other-keys)
751 (substitute* "src/simple-zmq.scm"
752 (("\\(dynamic-link \"libzmq\"\\)")
753 (format #f "(dynamic-link \"~a/lib/libzmq.so\")"
754 (assoc-ref inputs "zeromq"))))
755 #t)))))
756 (native-inputs
757 `(("guile" ,guile-2.2)))
758 (inputs
759 `(("zeromq" ,zeromq)))
760 (home-page "https://github.com/jerry40/guile-simple-zmq")
761 (synopsis "Guile wrapper over ZeroMQ library")
762 (description
763 "This package provides a Guile programming interface to the ZeroMQ
764 messaging library.")
765 (license license:gpl3+))))
766
767 (define-public jupyter-guile-kernel
768 (let ((commit "a7db9245a886e104138474df46c3e88b95cff629")
769 (revision "1"))
770 (package
771 (name "jupyter-guile-kernel")
772 (version (git-version "0.0.0" revision commit))
773 (source
774 (origin
775 (method git-fetch)
776 (uri (git-reference
777 (url "https://github.com/jerry40/guile-kernel")
778 (commit commit)))
779 (sha256
780 (base32
781 "0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f"))))
782 (build-system guile-build-system)
783 (arguments
784 '(#:phases (modify-phases %standard-phases
785 (add-after 'unpack 'set-openssl-file-name
786 (lambda* (#:key inputs #:allow-other-keys)
787 ;; Record the absolute file name of the 'openssl'
788 ;; command.
789 (substitute* "src/hmac.scm"
790 (("openssl")
791 (string-append (assoc-ref inputs "openssl")
792 "/bin/openssl")))
793 #t))
794
795 ;; XXX: The code uses 'include' to include its own source
796 ;; files, and "-L src" isn't enough in this case.
797 (add-before 'build 'chdir
798 (lambda _ (chdir "src") #t))
799 (add-after 'build 'chdir-back
800 (lambda _ (chdir "..") #t))
801
802 (add-after 'install 'install-kernel
803 (lambda* (#:key inputs outputs #:allow-other-keys)
804 (let* ((out (assoc-ref outputs "out"))
805 (json (assoc-ref inputs "guile-json"))
806 (zmq (assoc-ref inputs "guile-simple-zmq"))
807 (deps (list json zmq))
808 (dir (string-append
809 out "/share/jupyter/kernels/guile"))
810 (effective (target-guile-effective-version)))
811 ;; Install kernel.
812 (install-file "src/kernel.json" dir)
813
814 ;; Fix hard-coded file name in the kernel.
815 (substitute* (string-append dir "/kernel.json")
816 (("/home/.*/guile-jupyter-kernel.scm")
817 (string-append out "/share/guile/site/"
818 (target-guile-effective-version)
819 "/guile-jupyter-kernel.scm"))
820 (("\"guile\"")
821 (string-append "\"" (assoc-ref inputs "guile")
822 "/bin/guile\""))
823 (("-s")
824 ;; Add '-L' and '-C' flags so that the kernel
825 ;; finds its dependencies.
826 (let ((-L (map (lambda (item)
827 (string-append "\"" item
828 "/share/guile/site/"
829 effective "\""))
830 deps))
831 (-C (map (lambda (item)
832 (string-append "\"" item
833 "/lib/guile/"
834 effective
835 "/site-ccache\""))
836 deps)))
837 (string-append "--no-auto-compile\""
838 (string-join -L ", \"-L\", "
839 'prefix)
840 (string-join -C ", \"-C\", "
841 'prefix)
842 ", \"-s"))))
843 #t))))))
844 (inputs
845 `(("openssl" ,openssl)
846 ("guile" ,guile-2.2)
847 ("guile-json" ,guile-json)
848 ("guile-simple-zmq" ,guile-simple-zmq)))
849 (synopsis "Guile kernel for the Jupyter Notebook")
850 (description
851 "This package provides a Guile 2.x kernel for the Jupyter Notebook. It
852 allows users to interact with the Guile REPL through Jupyter.")
853 (home-page "https://github.com/jerry40/guile-kernel")
854 (license license:gpl3+))))
855
856 (define-public guile-sparql
857 (package
858 (name "guile-sparql")
859 (version "0.0.7")
860 (source (origin
861 (method url-fetch)
862 (uri (string-append
863 "https://github.com/roelj/guile-sparql/releases/download/"
864 version "/guile-sparql-" version ".tar.gz"))
865 (sha256
866 (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd"))))
867 (build-system gnu-build-system)
868 (arguments `(#:tests? #f)) ; There are no tests.
869 (native-inputs
870 `(("pkg-config" ,pkg-config)))
871 (inputs
872 `(("guile" ,guile-2.2)))
873 (home-page "https://github.com/roelj/guile-sparql")
874 (synopsis "SPARQL module for Guile")
875 (description "This package provides the functionality to query a SPARQL
876 endpoint. Additionally, it provides an interface to write SPARQL queries
877 using S-expressions.")
878 (license license:gpl3+)))
879
880 (define-public guile-debbugs
881 (package
882 (name "guile-debbugs")
883 (version "0.0.2")
884 (source (origin
885 (method url-fetch)
886 (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-"
887 version ".tar.gz"))
888 (sha256
889 (base32
890 "16l8910p57im6s3j93xhdaqvgfy6ms5n97177mrch3y961z5hy0i"))
891 (modules '((guix build utils)))
892 (snippet
893 '(substitute* "Makefile.in"
894 (("^godir = (.*)/ccache" _ prefix)
895 (string-append "godir = " prefix "/site-ccache"))))))
896 (build-system gnu-build-system)
897 (native-inputs
898 `(("guile" ,guile-2.2)
899 ("pkg-config" ,pkg-config)))
900 (home-page "https://savannah.gnu.org/projects/guile-debbugs/")
901 (synopsis "Guile interface to the Debbugs bug tracking service")
902 (description
903 "This package provides a Guile library to communicate with a Debbugs bug
904 tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
905 (license license:gpl3+)))
906
907 (define-public guile-email
908 (package
909 (name "guile-email")
910 (version "0.1.0")
911 (source
912 (origin
913 (method url-fetch)
914 (uri (string-append
915 "https://git.systemreboot.net/guile-email/snapshot/guile-email-"
916 version ".tar.xz"))
917 (sha256
918 (base32
919 "0p2v8q2kkz8m6vf2rsjvz3dj1mvnx7dxakjf72dwkndbgk3rp79f"))))
920 (build-system gnu-build-system)
921 (native-inputs
922 `(("pkg-config" ,pkg-config)
923 ("autoconf" ,autoconf)
924 ("automake" ,automake)))
925 (inputs
926 `(("guile" ,guile-2.2)))
927 (home-page "https://git.systemreboot.net/guile-email")
928 (synopsis "Guile email parser")
929 (description "This package provides an email parser written in pure
930 Guile.")
931 (license license:agpl3+)))
932
933 (define-public guile-debbugs-next
934 (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
935 (revision "1"))
936 (package (inherit guile-debbugs)
937 (name "guile-debbugs")
938 (version (git-version "0.0.3" revision commit))
939 (source (origin
940 (method git-fetch)
941 (uri (git-reference
942 (url "https://git.savannah.gnu.org/git/guile-debbugs.git")
943 (commit commit)))
944 (file-name (git-file-name name version))
945 (sha256
946 (base32
947 "0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y"))))
948 (build-system gnu-build-system)
949 (native-inputs
950 `(("pkg-config" ,pkg-config)
951 ("autoconf" ,autoconf)
952 ("automake" ,automake)
953 ("texinfo" ,texinfo)))
954 (inputs
955 `(("guile" ,guile-2.2)
956 ("guile-email" ,guile-email))))))
957
958 (define-public guile-newt
959 (package
960 (name "guile-newt")
961 (version "0.0.1")
962 (source (origin
963 (method git-fetch)
964 (uri (git-reference
965 (url "https://gitlab.com/mothacehe/guile-newt")
966 (commit version)))
967 (file-name (git-file-name name version))
968 (sha256
969 (base32
970 "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
971 (build-system gnu-build-system)
972 (arguments
973 '(#:make-flags
974 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
975 (inputs
976 `(("guile" ,guile-2.2)
977 ("newt" ,newt)))
978 (native-inputs
979 `(("autoconf" ,autoconf)
980 ("automake" ,automake)
981 ("pkg-config" ,pkg-config)))
982 (synopsis "Guile bindings to Newt")
983 (description
984 "This package provides bindings for Newt, a programming library for
985 color text mode, widget based user interfaces. The bindings are written in pure
986 Scheme by using Guile’s foreign function interface.")
987 (home-page "https://gitlab.com/mothacehe/guile-newt")
988 (license license:gpl3+)))
989
990 (define-public guile-mastodon
991 (package
992 (name "guile-mastodon")
993 (version "0.0.1")
994 (source (origin
995 (method git-fetch)
996 (uri (git-reference
997 (url "https://framagit.org/prouby/guile-mastodon.git")
998 (commit (string-append "v" version))))
999 (file-name (git-file-name name version))
1000 (sha256
1001 (base32
1002 "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
1003 (build-system gnu-build-system)
1004 (native-inputs
1005 `(("autoconf" ,autoconf)
1006 ("automake" ,automake)
1007 ("pkg-config" ,pkg-config)))
1008 (inputs
1009 `(("guile" ,guile-2.2)
1010 ("gnutls" ,gnutls)
1011 ("guile-json" ,guile-json)))
1012 (home-page "https://framagit.org/prouby/guile-mastodon")
1013 (synopsis "Guile Mastodon REST API module")
1014 (description "This package provides Guile modules to access the
1015 @uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
1016 microblogging service.")
1017 (license license:gpl3+)))
1018
1019 (define-public guile-parted
1020 (package
1021 (name "guile-parted")
1022 (version "0.0.1")
1023 (source (origin
1024 (method git-fetch)
1025 (uri (git-reference
1026 (url "https://gitlab.com/mothacehe/guile-parted")
1027 (commit version)))
1028 (file-name (git-file-name name version))
1029 (sha256
1030 (base32
1031 "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
1032 (build-system gnu-build-system)
1033 (arguments
1034 '(#:make-flags
1035 '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
1036 (inputs
1037 `(("guile" ,guile-2.2)
1038 ("parted" ,parted)))
1039 (propagated-inputs
1040 `(("guile-bytestructures" ,guile-bytestructures)))
1041 (native-inputs
1042 `(("autoconf" ,autoconf)
1043 ("automake" ,automake)
1044 ("pkg-config" ,pkg-config)))
1045 (synopsis "Guile bindings to GNU Parted")
1046 (description
1047 "This package provides bindings for GNU Parted library, a C library
1048 allowing disk partition tables creation and manipulation. The bindings are
1049 written in pure Scheme by using Guile's foreign function interface.")
1050 (home-page "https://gitlab.com/mothacehe/guile-parted")
1051 (license license:gpl3+)))
1052
1053 (define-public guile-xosd
1054 (package
1055 (name "guile-xosd")
1056 (version "0.2.1")
1057 (source (origin
1058 (method url-fetch)
1059 (uri (string-append "https://github.com/alezost/" name
1060 "/releases/download/v" version
1061 "/" name "-" version ".tar.gz"))
1062 (sha256
1063 (base32
1064 "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p"))))
1065 (build-system gnu-build-system)
1066 (native-inputs
1067 `(("pkg-config" ,pkg-config)))
1068 (inputs
1069 `(("guile" ,guile-2.2)
1070 ("libx11" ,libx11)
1071 ("libxext" ,libxext)
1072 ("libxinerama" ,libxinerama)
1073 ("xosd" ,xosd)))
1074 (home-page "https://github.com/alezost/guile-xosd")
1075 (synopsis "XOSD bindings for Guile")
1076 (description
1077 "Guile-XOSD provides Guile bindings for @code{libxosd},
1078 @uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display
1079 library}.")
1080 (license license:gpl3+)))
1081
1082 (define-public guile-dbi
1083 (package
1084 (name "guile-dbi")
1085 (version "2.1.6")
1086 (source (origin
1087 (method url-fetch)
1088 (uri (string-append
1089 "http://download.gna.org/guile-dbi/guile-dbi-"
1090 version ".tar.gz"))
1091 (sha256
1092 (base32
1093 "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n"))))
1094 (build-system gnu-build-system)
1095 (arguments
1096 '(#:configure-flags
1097 (list (string-append
1098 "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
1099 #:make-flags
1100 (list (string-append
1101 "LDFLAGS=-Wl,-rpath=" %output "/lib:"
1102 (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib" ":"
1103 (assoc-ref %build-inputs "guile-dbd-postgresql") "/lib"))
1104 #:phases
1105 (modify-phases %standard-phases
1106 (add-after 'install 'patch-extension-path
1107 (lambda* (#:key outputs #:allow-other-keys)
1108 (let* ((out (assoc-ref outputs "out"))
1109 (dbi.scm (string-append
1110 out "/share/guile/site/2.2/dbi/dbi.scm"))
1111 (ext (string-append out "/lib/libguile-dbi")))
1112 (substitute* dbi.scm (("libguile-dbi") ext))
1113 #t))))))
1114 (inputs
1115 `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3)
1116 ("guile-dbd-postgresql" ,guile-dbd-postgresql))) ; only shared library, no scheme files
1117 (propagated-inputs
1118 `(("guile" ,guile-2.2)))
1119 (synopsis "Guile database abstraction layer")
1120 (home-page "http://home.gna.org/guile-dbi/guile-dbi.html")
1121 (description
1122 "guile-dbi is a library for Guile that provides a convenient interface to
1123 SQL databases. Database programming with guile-dbi is generic in that the same
1124 programming interface is presented regardless of which database system is used.
1125 It currently supports MySQL, Postgres and SQLite3.")
1126 (license license:gpl2+)))
1127
1128 (define guile-dbi-bootstrap
1129 (package
1130 (inherit guile-dbi)
1131 (name "guile-dbi-bootstrap")
1132 (inputs '())
1133 (arguments
1134 (substitute-keyword-arguments (package-arguments guile-dbi)
1135 ((#:make-flags _) '(list))))))
1136
1137 (define-public guile-dbd-sqlite3
1138 (package
1139 (name "guile-dbd-sqlite3")
1140 (version "2.1.6")
1141 (source (origin
1142 (method url-fetch)
1143 (uri (string-append
1144 "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-"
1145 version ".tar.gz"))
1146 (sha256
1147 (base32
1148 "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
1149 (build-system gnu-build-system)
1150 (native-inputs
1151 `(("pkg-config" ,pkg-config)
1152 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
1153 (inputs
1154 `(("sqlite" ,sqlite)
1155 ("zlib" ,(@ (gnu packages compression) zlib))))
1156 (synopsis "Guile DBI driver for SQLite")
1157 (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
1158 (description
1159 "guile-dbi is a library for Guile that provides a convenient interface to
1160 SQL databases. This package implements the interface for SQLite.")
1161 (license license:gpl2+)))
1162
1163 (define-public guile-dbd-postgresql
1164 (let ((commit "e97589b6b018b206c901e4cc24db463407a4036b")
1165 (revision 0))
1166 (package
1167 (name "guile-dbd-postgresql")
1168 (version (string-append
1169 "2.1.6-" (number->string revision) "." (string-take commit 7)))
1170 (source
1171 (origin
1172 (method git-fetch)
1173 (uri (git-reference
1174 (url "https://github.com/opencog/guile-dbi.git")
1175 (commit commit)))
1176 (file-name (git-file-name name version))
1177 (sha256
1178 (base32 "0n1gv9a0kdys10a4qmnrwvg5sydwb03880asri4gqdchcj3fimni"))))
1179 (build-system gnu-build-system)
1180 (arguments
1181 '(#:phases
1182 (modify-phases %standard-phases
1183 (add-after 'unpack 'chdir
1184 (lambda _
1185 ;; The upstream Git repository contains all the code, so change
1186 ;; to the relevant directory.
1187 (chdir "guile-dbd-postgresql")
1188 #t))
1189 (add-after 'chdir 'patch-src/Makefile.am
1190 (lambda* (#:key inputs #:allow-other-keys)
1191 (substitute* "src/Makefile.am"
1192 (("/usr/include")
1193 (string-append (assoc-ref inputs "postgresql") "/include")))
1194 #t))
1195 (add-after 'patch-src/Makefile.am 'patch-src
1196 (lambda _
1197 (substitute* "src/guile-dbd-postgresql.c"
1198 (("postgresql/libpq-fe\\.h") "libpq-fe.h"))
1199 #t)))))
1200 (native-inputs
1201 `(("pkg-config" ,pkg-config)
1202 ("automake" ,automake)
1203 ("autoconf" ,autoconf)
1204 ("perl" ,perl)
1205 ("libtool" ,libtool)
1206 ("guile-dbi-bootstrap" ,guile-dbi-bootstrap)))
1207 (inputs
1208 `(("postgresql" ,postgresql)
1209 ("zlib" ,zlib)))
1210 (synopsis "Guile DBI driver for PostgreSQL")
1211 (home-page
1212 "https://github.com/opencog/guile-dbi/tree/master/guile-dbd-postgresql")
1213 (description
1214 "@code{guile-dbi} is a library for Guile that provides a convenient
1215 interface to SQL databases. This package implements the interface for
1216 PostgreSQL.")
1217 (license license:gpl2+))))
1218
1219 (define-public guile-config
1220 (package
1221 (name "guile-config")
1222 (version "0.3")
1223 (source
1224 (origin
1225 (method git-fetch)
1226 (uri (git-reference
1227 (url "https://gitlab.com/a-sassmannshausen/guile-config")
1228 (commit "ce12de3f438c6b2b59c43ee21bcd58251835fdf3")))
1229 (file-name "guile-config-0.3-checkout")
1230 (sha256 (base32 "02zbpin0r9m2vxmr7mv68v3xdn247dcck56kbzjn0gj4c2rhih85"))))
1231 (build-system gnu-build-system)
1232 (native-inputs
1233 `(("autoconf" ,autoconf)
1234 ("automake" ,automake)
1235 ("pkg-config" ,pkg-config)
1236 ("texinfo" ,texinfo)))
1237 (inputs `(("guile" ,guile-2.2)))
1238 (synopsis
1239 "Guile application configuration parsing library.")
1240 (description
1241 "Guile Config is a library providing a declarative approach to
1242 application configuration specification. The library provides clean
1243 configuration declaration forms, and processors that take care of:
1244 configuration file creation; configuration file parsing; command-line
1245 parameter parsing using getopt-long; basic GNU command-line parameter
1246 generation (--help, --usage, --version); automatic output generation for the
1247 above command-line parameters.")
1248 (home-page
1249 "https://gitlab.com/a-sassmannshausen/guile-config")
1250 (license license:gpl3+)))
1251
1252 (define-public guile-hall
1253 (package
1254 (name "guile-hall")
1255 (version "0.2")
1256 (source
1257 (origin
1258 (method git-fetch)
1259 (uri (git-reference
1260 (url "https://gitlab.com/a-sassmannshausen/guile-hall")
1261 (commit (string-append "v" version))))
1262 (file-name (git-file-name name version))
1263 (sha256 (base32
1264 "1bkbqgj24xh5b65sw2m98iggpi67b72szx1dsiq3cpzlcxplmgaz"))))
1265 (build-system gnu-build-system)
1266 (arguments
1267 `(#:modules
1268 ((ice-9 match)
1269 (ice-9 ftw)
1270 ,@%gnu-build-system-modules)
1271 #:phases
1272 (modify-phases
1273 %standard-phases
1274 (add-after 'install 'hall-wrap-binaries
1275 (lambda* (#:key inputs outputs #:allow-other-keys)
1276 (let* ((compiled-dir
1277 (lambda (out version)
1278 (string-append
1279 out "/lib/guile/" version "/site-ccache")))
1280 (uncompiled-dir
1281 (lambda (out version)
1282 (string-append
1283 out "/share/guile/site"
1284 (if (string-null? version) "" "/") version)))
1285 (dep-path
1286 (lambda (env modules path)
1287 (list env ":" 'prefix
1288 (cons modules
1289 (map (lambda (input)
1290 (string-append
1291 (assoc-ref inputs input)
1292 path))
1293 ,''("guile-config"))))))
1294 (out (assoc-ref outputs "out"))
1295 (bin (string-append out "/bin/"))
1296 (site (uncompiled-dir out "")))
1297 (match (scandir site)
1298 (("." ".." version)
1299 (for-each
1300 (lambda (file)
1301 (wrap-program
1302 (string-append bin file)
1303 (dep-path
1304 "GUILE_LOAD_PATH"
1305 (uncompiled-dir out version)
1306 (uncompiled-dir "" version))
1307 (dep-path
1308 "GUILE_LOAD_COMPILED_PATH"
1309 (compiled-dir out version)
1310 (compiled-dir "" version))))
1311 ,''("hall"))
1312 #t))))))))
1313 (native-inputs
1314 `(("autoconf" ,autoconf)
1315 ("automake" ,automake)
1316 ("pkg-config" ,pkg-config)
1317 ("texinfo" ,texinfo)))
1318 (inputs `(("guile" ,guile-2.2)))
1319 (propagated-inputs
1320 `(("guile-config" ,guile-config)))
1321 (synopsis "Guile project tooling")
1322 (description
1323 "Hall is a command-line application and a set of Guile libraries that
1324 allow you to quickly create and publish Guile projects. It allows you to
1325 transparently support the GNU build system, manage a project hierarchy &
1326 provides tight coupling to Guix.")
1327 (home-page "https://gitlab.com/a-sassmannshausen/guile-hall")
1328 (license license:gpl3+)))
1329
1330 (define-public guile-ics
1331 (package
1332 (name "guile-ics")
1333 (version "0.2.0")
1334 (source (origin
1335 (method git-fetch)
1336 (uri (git-reference
1337 (url "https://github.com/artyom-poptsov/guile-ics")
1338 (commit (string-append "v" version))))
1339 (file-name (string-append name "-" version "-checkout"))
1340 (sha256
1341 (base32
1342 "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g"))))
1343 (build-system gnu-build-system)
1344 (native-inputs
1345 `(("autoconf" ,autoconf-wrapper)
1346 ("automake" ,automake)
1347 ("texinfo" ,texinfo)
1348 ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'.
1349 ("gettext" ,gettext-minimal)
1350 ("pkg-config" ,pkg-config)))
1351 (inputs `(("guile" ,guile-2.2) ("which" ,which)))
1352 (propagated-inputs `(("guile-lib" ,guile-lib)))
1353 (home-page "https://github.com/artyom-poptsov/guile-ics")
1354 (synopsis "Guile parser library for the iCalendar format")
1355 (description
1356 "Guile-ICS is an iCalendar (RFC5545) format parser library written in
1357 pure Scheme. The library can be used to read and write iCalendar data.
1358
1359 The library is shipped with documentation in Info format and usage examples.")
1360 (license license:gpl3+)))
1361
1362 (define-public guile-wisp
1363 (package
1364 (name "guile-wisp")
1365 (version "0.9.9.1")
1366 (source (origin
1367 (method url-fetch)
1368 (uri (string-append "https://bitbucket.org/ArneBab/"
1369 "wisp/downloads/wisp-"
1370 version ".tar.gz"))
1371 (sha256
1372 (base32
1373 "1ii14qz1lx7ffhb8i9q7dgaiwbif8g2q182skx17j11skp65c8r3"))))
1374 (build-system gnu-build-system)
1375 (arguments
1376 `(#:modules ((guix build gnu-build-system)
1377 ((guix build emacs-build-system) #:prefix emacs:)
1378 (guix build utils)
1379 (guix build emacs-utils)
1380 (ice-9 rdelim)
1381 (ice-9 popen))
1382 #:imported-modules (,@%gnu-build-system-modules
1383 (guix build emacs-build-system)
1384 (guix build emacs-utils))
1385 #:phases
1386 (modify-phases %standard-phases
1387 (add-before 'configure 'patch-/usr/bin/env
1388 (lambda _
1389 (substitute* "Makefile.in"
1390 (("/usr/bin/env bash") (which "bash"))
1391 (("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site")
1392 "site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order
1393 #t))
1394 ;; auto compilation breaks, but if we set HOME to /tmp,
1395 ;; that works ok
1396 (add-before 'check 'auto-compile-hacky-workaround
1397 (lambda _ (setenv "HOME" "/tmp") #t))
1398 (add-after 'install 'install-go-files
1399 (lambda* (#:key outputs inputs #:allow-other-keys)
1400 (let* ((out (assoc-ref outputs "out"))
1401 (effective (read-line
1402 (open-pipe* OPEN_READ
1403 "guile" "-c"
1404 "(display (effective-version))")))
1405 (module-dir (string-append out "/share/guile/site/"
1406 effective))
1407 (object-dir (string-append out "/lib/guile/" effective
1408 "/site-ccache"))
1409 (prefix (string-length module-dir)))
1410 ;; compile to the destination
1411 (for-each (lambda (file)
1412 (let* ((base (string-drop (string-drop-right file 4)
1413 prefix))
1414 (go (string-append object-dir base ".go")))
1415 (invoke "guild" "compile" "-L" module-dir
1416 file "-o" go)))
1417 (find-files module-dir "\\.scm$"))
1418 #t)))
1419 (add-after 'install 'install-emacs-files
1420 (assoc-ref emacs:%standard-phases 'install))
1421 (add-after 'install-emacs-files 'compile-emacs-files
1422 (assoc-ref emacs:%standard-phases 'build))
1423 (add-after 'compile-emacs-files 'make-autoloads
1424 (assoc-ref emacs:%standard-phases 'make-autoloads)))))
1425 (home-page "https://draketo.de/english/wisp")
1426 (inputs
1427 `(("guile" ,guile-2.2)))
1428 (native-inputs
1429 `(("emacs" ,emacs-minimal)
1430 ("python" ,python)
1431 ("pkg-config" ,pkg-config)))
1432 (synopsis "Whitespace to lisp syntax for Guile")
1433 (description "Wisp is a syntax for Guile which provides a Python-like
1434 whitespace-significant language. It may be easier on the eyes for some
1435 users and in some situations.")
1436 (license license:gpl3+)))
1437
1438 (define-public guile-sly
1439 (package
1440 (name "guile-sly")
1441 (version "0.1")
1442 (source (origin
1443 (method url-fetch)
1444 (uri (string-append "https://files.dthompson.us/sly/sly-"
1445 version ".tar.gz"))
1446 (sha256
1447 (base32
1448 "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq"))
1449 (modules '((guix build utils)))
1450 (snippet
1451 '(begin
1452 (substitute* "configure"
1453 (("_guile_required_version=\"2.0.11\"")
1454 "_guile_required_version=\"2\"")
1455 (("ac_subst_vars='")
1456 "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n"))
1457 (substitute* (find-files "." "Makefile.in")
1458 (("moddir = .*$")
1459 (string-append
1460 "moddir = "
1461 "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n"))
1462 (("godir = .*$")
1463 (string-append
1464 "godir = "
1465 "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))
1466 #t))))
1467 (build-system gnu-build-system)
1468 (arguments
1469 '(#:configure-flags
1470 (list (string-append "--with-libfreeimage-prefix="
1471 (assoc-ref %build-inputs "freeimage"))
1472 (string-append "--with-libgslcblas-prefix="
1473 (assoc-ref %build-inputs "gsl")))))
1474 (native-inputs
1475 `(("pkg-config" ,pkg-config)))
1476 (propagated-inputs
1477 `(("guile-sdl" ,guile-sdl)
1478 ("guile-opengl" ,guile-opengl)))
1479 (inputs
1480 `(("guile" ,guile-2.2)
1481 ("gsl" ,gsl)
1482 ("freeimage" ,freeimage)
1483 ("mesa" ,mesa)))
1484 (synopsis "2D/3D game engine for GNU Guile")
1485 (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly
1486 features a functional reactive programming interface and live coding
1487 capabilities.")
1488 (home-page "https://dthompson.us/projects/sly.html")
1489 (license license:gpl3+)))
1490
1491 (define-public g-wrap
1492 (package
1493 (name "g-wrap")
1494 (version "1.9.15")
1495 (source (origin
1496 (method url-fetch)
1497 (uri (string-append "mirror://savannah/g-wrap/g-wrap-"
1498 version ".tar.gz"))
1499 (sha256
1500 (base32
1501 "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg"))))
1502 (build-system gnu-build-system)
1503 (native-inputs
1504 `(("pkg-config" ,pkg-config)))
1505 (propagated-inputs
1506 `(("guile" ,guile-2.2)
1507 ("guile-lib" ,guile-lib)))
1508 (inputs
1509 `(("libffi" ,libffi)))
1510 (arguments
1511 `(#:configure-flags '("--disable-Werror")
1512 #:phases
1513 (modify-phases %standard-phases
1514 (add-before 'configure 'pre-configure
1515 (lambda* (#:key outputs #:allow-other-keys)
1516 (let ((out (assoc-ref outputs "out")))
1517 (substitute* (find-files "." "^Makefile.in$")
1518 (("guilemoduledir =.*guile/site" all)
1519 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
1520 #t))))))
1521 (synopsis "Generate C bindings for Guile")
1522 (description "G-Wrap is a tool and Guile library for generating function
1523 wrappers for inter-language calls. It currently only supports generating Guile
1524 wrappers for C functions. Given a definition of the types and prototypes for
1525 a given C interface, G-Wrap will automatically generate the C code that
1526 provides access to that interface and its types from the Scheme level.")
1527 (home-page "https://www.nongnu.org/g-wrap/index.html")
1528 (license license:lgpl2.1+)))
1529
1530 (define-public guile-miniadapton
1531 (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880")
1532 (revision "1"))
1533 (package
1534 (name "guile-miniadapton")
1535 (version (string-append "0-" revision "." (string-take commit 9)))
1536 (source (origin
1537 (method git-fetch)
1538 (uri (git-reference
1539 (url "https://github.com/fisherdj/miniAdapton.git")
1540 (commit commit)))
1541 (file-name (string-append name "-" version "-checkout"))
1542 (sha256
1543 (base32
1544 "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh"))))
1545 (build-system guile-build-system)
1546 (native-inputs
1547 `(("guile" ,guile-2.2)))
1548 (home-page "https://github.com/fisherdj/miniAdapton")
1549 (synopsis "Minimal implementation of incremental computation in Guile
1550 Scheme")
1551 (description "This package provides a complete Scheme implementation of
1552 miniAdapton, which implements the core functionality of the Adapton system for
1553 incremental computation (also known as self-adjusting computation). Like
1554 Adapton, miniAdapton allows programmers to safely combine mutation and
1555 memoization. miniAdapton is built on top of an even simpler system,
1556 microAdapton. Both miniAdapton and microAdapton are designed to be easy to
1557 understand, extend, and port to host languages other than Scheme.")
1558 (license license:expat))))
1559
1560 (define-public guile-reader
1561 (package
1562 (name "guile-reader")
1563 (version "0.6.2")
1564 (source (origin
1565 (method url-fetch)
1566 (uri (string-append "mirror://savannah/guile-reader/guile-reader-"
1567 version ".tar.gz"))
1568 (sha256
1569 (base32
1570 "0592s2s8ampqmqwilc4fvcild6rb9gy79di6vxv5kcdmv23abkgx"))))
1571 (build-system gnu-build-system)
1572 (native-inputs `(("pkgconfig" ,pkg-config)
1573 ("gperf" ,gperf-3.0)))
1574 (inputs `(("guile" ,guile-2.2)))
1575 (synopsis "Framework for building readers for GNU Guile")
1576 (description
1577 "Guile-Reader is a simple framework for building readers for GNU Guile.
1578
1579 The idea is to make it easy to build procedures that extend Guile’s read
1580 procedure. Readers supporting various syntax variants can easily be written,
1581 possibly by re-using existing “token readers” of a standard Scheme
1582 readers. For example, it is used to implement Skribilo’s R5RS-derived
1583 document syntax.
1584
1585 Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
1586 hopefully more powerful and flexible (for instance, one may instantiate as
1587 many readers as needed).")
1588 (home-page "https://www.nongnu.org/guile-reader/")
1589 (license license:gpl3+)))
1590
1591 (define-public guile2.2-reader
1592 (deprecated-package "guile2.2-reader" guile-reader))
1593
1594 (define-public guile-ncurses
1595 (package
1596 (name "guile-ncurses")
1597 (version "2.2")
1598 (source (origin
1599 (method url-fetch)
1600 (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-"
1601 version ".tar.gz"))
1602 (sha256
1603 (base32
1604 "1wvggbr4xv8idh1hzd8caj4xfp4pln78a7w1wqzd4zgzwmnzxr2f"))))
1605 (build-system gnu-build-system)
1606 (inputs `(("ncurses" ,ncurses)
1607 ("guile" ,guile-2.2)))
1608 (native-inputs `(("pkg-config" ,pkg-config)))
1609 (arguments
1610 '(#:configure-flags (list "--with-ncursesw" ; Unicode support
1611 "--with-gnu-filesystem-hierarchy")
1612 #:phases
1613 (modify-phases %standard-phases
1614 (add-before 'build 'fix-libguile-ncurses-file-name
1615 (lambda* (#:key outputs #:allow-other-keys)
1616 (invoke "make" "install"
1617 "-C" "src/ncurses"
1618 "-j" (number->string
1619 (parallel-job-count)))
1620 (let* ((out (assoc-ref outputs "out"))
1621 (dir "src/ncurses")
1622 (files (find-files dir ".scm")))
1623 (substitute* files
1624 (("\"libguile-ncurses\"")
1625 (format #f "\"~a/lib/guile/2.2/libguile-ncurses\""
1626 out)))
1627 #t))))))
1628 (home-page "https://www.gnu.org/software/guile-ncurses/")
1629 (synopsis "Guile bindings to ncurses")
1630 (description
1631 "guile-ncurses provides Guile language bindings for the ncurses
1632 library.")
1633 (license license:lgpl3+)))
1634
1635 (define-public guile-ncurses/gpm
1636 (package
1637 (inherit guile-ncurses)
1638 (name "guile-ncurses-with-gpm")
1639 (inputs `(("ncurses" ,ncurses/gpm)
1640 ("guile" ,guile-2.2)))))
1641
1642 (define-public guile-lib
1643 (package
1644 (name "guile-lib")
1645 (version "0.2.6.1")
1646 (source (origin
1647 (method url-fetch)
1648 (uri (string-append "mirror://savannah/guile-lib/guile-lib-"
1649 version ".tar.gz"))
1650 (sha256
1651 (base32
1652 "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd"))))
1653 (build-system gnu-build-system)
1654 (arguments
1655 '(#:make-flags
1656 '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors
1657 #:phases
1658 (modify-phases %standard-phases
1659 (add-before 'configure 'patch-module-dir
1660 (lambda _
1661 (substitute* "src/Makefile.in"
1662 (("^moddir = ([[:graph:]]+)")
1663 "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n")
1664 (("^godir = ([[:graph:]]+)")
1665 "godir = \
1666 $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
1667 #t)))))
1668 (native-inputs `(("pkg-config" ,pkg-config)))
1669 (inputs `(("guile" ,guile-2.2)))
1670 (home-page "https://www.nongnu.org/guile-lib/")
1671 (synopsis "Collection of useful Guile Scheme modules")
1672 (description
1673 "Guile-Lib is intended as an accumulation place for pure-scheme Guile
1674 modules, allowing for people to cooperate integrating their generic Guile
1675 modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
1676 for Guile\".")
1677
1678 ;; The whole is under GPLv3+, but some modules are under laxer
1679 ;; distribution terms such as LGPL and public domain. See `COPYING' for
1680 ;; details.
1681 (license license:gpl3+)))
1682
1683 (define-public guile2.0-lib
1684 (package
1685 (inherit guile-lib)
1686 (name "guile2.0-lib")
1687 (inputs `(("guile" ,guile-2.0)))))
1688
1689 (define-public guile2.2-lib
1690 (deprecated-package "guile2.2-lib" guile-lib))
1691
1692 (define-public guile-minikanren
1693 (package
1694 (name "guile-minikanren")
1695 (version "20150424.e844d85")
1696 (source (origin
1697 (method git-fetch)
1698 (uri (git-reference
1699 (url "https://github.com/ijp/minikanren.git")
1700 (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
1701 (file-name (string-append name "-" version "-checkout"))
1702 (sha256
1703 (base32
1704 "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6"))))
1705 (build-system guile-build-system)
1706 (native-inputs
1707 `(("guile" ,guile-2.2)))
1708 (home-page "https://github.com/ijp/minikanren")
1709 (synopsis "MiniKanren declarative logic system, packaged for Guile")
1710 (description
1711 "MiniKanren is a relational programming extension to the Scheme
1712 programming Language, written as a smaller version of Kanren suitable for
1713 pedagogical purposes. It is featured in the book, The Reasoned Schemer,
1714 written by Dan Friedman, William Byrd, and Oleg Kiselyov.
1715
1716 This is Ian Price's r6rs packaged version of miniKanren, which deviates
1717 slightly from miniKanren mainline.
1718
1719 See http://minikanren.org/ for more on miniKanren generally.")
1720 (license license:expat)))
1721
1722 (define-public guile2.0-minikanren
1723 (package
1724 (inherit guile-minikanren)
1725 (name "guile2.0-minikanren")
1726 (native-inputs `(("guile" ,guile-2.0)))))
1727
1728 (define-public guile2.2-minikanren
1729 (deprecated-package "guile2.2-minikanren" guile-minikanren))
1730
1731 (define-public guile-irregex
1732 (package
1733 (name "guile-irregex")
1734 (version "0.9.6")
1735 (source (origin
1736 (method url-fetch)
1737 (uri (string-append
1738 "http://synthcode.com/scheme/irregex/irregex-"
1739 version ".tar.gz"))
1740 (sha256
1741 (base32
1742 "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq"))))
1743 (build-system guile-build-system)
1744 (arguments
1745 '(#:phases (modify-phases %standard-phases
1746 (add-after 'unpack 'move-files-around
1747 (lambda _
1748 ;; Move the relevant source files to src/ and create the
1749 ;; rx/ directory to match the expected module hierarchy.
1750 (mkdir-p "src/rx/source")
1751 (rename-file "irregex-guile.scm"
1752 "src/rx/irregex.scm")
1753 (rename-file "irregex.scm"
1754 "src/rx/source/irregex.scm")
1755 ;; Not really reachable via guile's packaging system,
1756 ;; but nice to have around.
1757 (rename-file "irregex-utils.scm"
1758 "src/rx/source/irregex-utils.scm")
1759 #t)))
1760 #:source-directory "src"))
1761 (native-inputs
1762 `(("guile" ,guile-2.2)))
1763 (home-page "http://synthcode.com/scheme/irregex")
1764 (synopsis "S-expression based regular expressions")
1765 (description
1766 "Irregex is an s-expression based alternative to your classic
1767 string-based regular expressions. It implements SRFI 115 and is deeply
1768 inspired by the SCSH regular expression system.")
1769 (license license:bsd-3)))
1770
1771 (define-public guile2.0-irregex
1772 (package
1773 (inherit guile-irregex)
1774 (name "guile2.0-irregex")
1775 (native-inputs `(("guile" ,guile-2.0)))))
1776
1777 (define-public guile2.2-irregex
1778 (deprecated-package "guile2.2-irregex" guile-irregex))
1779
1780 (define-public haunt
1781 (package
1782 (name "haunt")
1783 (version "0.2.4")
1784 (source (origin
1785 (method url-fetch)
1786 (uri (string-append "https://files.dthompson.us/haunt/haunt-"
1787 version ".tar.gz"))
1788 (sha256
1789 (base32
1790 "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc"))))
1791 (build-system gnu-build-system)
1792 (arguments
1793 `(#:modules ((ice-9 match) (ice-9 ftw)
1794 ,@%gnu-build-system-modules)
1795 #:tests? #f ; test suite is non-deterministic :(
1796 #:phases (modify-phases %standard-phases
1797 (add-after 'install 'wrap-haunt
1798 (lambda* (#:key inputs outputs #:allow-other-keys)
1799 ;; Wrap the 'haunt' command to refer to the right
1800 ;; modules.
1801 (let* ((out (assoc-ref outputs "out"))
1802 (bin (string-append out "/bin"))
1803 (site (string-append
1804 out "/share/guile/site"))
1805 (deps (list (assoc-ref inputs "guile-reader")
1806 (assoc-ref inputs "guile-commonmark"))))
1807 (match (scandir site)
1808 (("." ".." version)
1809 (let ((modules (string-append site "/" version))
1810 (compiled-modules (string-append
1811 out "/lib/guile/" version
1812 "/site-ccache")))
1813 (wrap-program (string-append bin "/haunt")
1814 `("GUILE_LOAD_PATH" ":" prefix
1815 (,modules
1816 ,@(map (lambda (dep)
1817 (string-append dep
1818 "/share/guile/site/"
1819 version))
1820 deps)))
1821 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
1822 (,compiled-modules
1823 ,@(map (lambda (dep)
1824 (string-append dep "/lib/guile/"
1825 version
1826 "/site-ccache"))
1827 deps))))
1828 #t)))))))))
1829 (native-inputs
1830 `(("pkg-config" ,pkg-config)
1831 ("texinfo" ,texinfo)))
1832 (inputs
1833 `(("guile" ,guile-2.2)))
1834 (propagated-inputs
1835 `(("guile-reader" ,guile-reader)
1836 ("guile-commonmark" ,guile-commonmark)))
1837 (synopsis "Functional static site generator")
1838 (description "Haunt is a static site generator written in Guile
1839 Scheme. Haunt features a functional build system and an extensible
1840 interface for reading articles in any format.")
1841 (home-page "http://haunt.dthompson.us")
1842 (license license:gpl3+)))
1843
1844 (define-public guile2.0-haunt
1845 (package
1846 (inherit haunt)
1847 (name "guile2.0-haunt")
1848 (inputs `(("guile" ,guile-2.0)))))
1849
1850 (define-public guile2.2-haunt
1851 (deprecated-package "guile2.2-haunt" haunt))
1852
1853 (define-public guile-redis
1854 (package
1855 (name "guile-redis")
1856 (version "1.3.0")
1857 (home-page "https://github.com/aconchillo/guile-redis")
1858 (source (origin
1859 (method url-fetch)
1860 (uri (string-append home-page "/archive/" version ".tar.gz"))
1861 (sha256
1862 (base32
1863 "1li70a2716my9q9zfq0qn2x5d1cir9k2vx0jm9glm464yaf1vj39"))))
1864 (build-system gnu-build-system)
1865 (native-inputs
1866 `(("autoconf" ,autoconf)
1867 ("automake" ,automake)
1868 ("pkg-config" ,pkg-config)
1869 ("guile" ,guile-2.2)))
1870 (synopsis "Redis client library for Guile")
1871 (description "Guile-redis provides a Scheme interface to the Redis
1872 key-value cache and store.")
1873 (license license:lgpl3+)))
1874
1875 (define-public guile2.0-redis
1876 (package
1877 (inherit guile-redis)
1878 (name "guile2.0-redis")
1879 (native-inputs `(("guile" ,guile-2.0)
1880 ,@(alist-delete "guile"
1881 (package-native-inputs guile-redis))))))
1882
1883 (define-public guile2.2-redis
1884 (deprecated-package "guile2.2-redis" guile-redis))
1885
1886 (define-public guile-commonmark
1887 (package
1888 (name "guile-commonmark")
1889 (version "0.1.2")
1890 (source (origin
1891 (method url-fetch)
1892 (uri (string-append "https://github.com/OrangeShark/" name
1893 "/releases/download/v" version
1894 "/" name "-" version ".tar.gz"))
1895 (sha256
1896 (base32
1897 "17lrsdisa3kckh24q114vfmzdc4wkqa6ccwl4hdlrng5wpn1iman"))))
1898 (build-system gnu-build-system)
1899 (inputs
1900 `(("guile" ,guile-2.2)))
1901 (native-inputs
1902 `(("pkg-config" ,pkg-config)))
1903 (synopsis "CommonMark parser for Guile")
1904 (description
1905 "guile-commonmark is a library for parsing CommonMark, a fully specified
1906 variant of Markdown. The library is written in Guile Scheme and is designed
1907 to transform a CommonMark document to SXML. guile-commonmark tries to closely
1908 follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference
1909 is no support for parsing block and inline level HTML.")
1910 (home-page "https://github.com/OrangeShark/guile-commonmark")
1911 (license license:lgpl3+)))
1912
1913 (define-public guile2.0-commonmark
1914 (package
1915 (inherit guile-commonmark)
1916 (name "guile2.0-commonmark")
1917 (inputs `(("guile" ,guile-2.0)))))
1918
1919 (define-public guile2.2-commonmark
1920 (deprecated-package "guile2.2-commonmark" guile-commonmark))
1921
1922 (define-public mcron
1923 (package
1924 (name "mcron")
1925 (version "1.1.1")
1926 (source (origin
1927 (method url-fetch)
1928 (uri (string-append "mirror://gnu/mcron/mcron-"
1929 version ".tar.gz"))
1930 (sha256
1931 (base32
1932 "1i9mcp6r6my61zfiydsm3n6my41mwvl7dfala4q29qx0zn1ynlm4"))))
1933 (build-system gnu-build-system)
1934 (arguments
1935 '(#:phases (modify-phases %standard-phases
1936 (add-before 'check 'set-timezone
1937 (lambda* (#:key inputs #:allow-other-keys)
1938 ;; 'tests/job-specifier.scm' expects to be running in
1939 ;; UTC-2 or something.
1940 ;; FIXME: This issue is being investigated upstream, for
1941 ;; now we'll just skip the tests (see below):
1942 ;; <https://lists.gnu.org/archive/html/bug-mcron/2018-04/msg00005.html>.
1943 (let ((tzdata (assoc-ref inputs "tzdata")))
1944 (setenv "TZDIR"
1945 (string-append tzdata
1946 "/share/zoneinfo"))
1947 (setenv "TZ" "UTC-2")
1948 #t)))
1949 (add-before 'check 'adjust-tests
1950 (lambda _
1951 (substitute* "tests/job-specifier.scm"
1952 ;; (getpw) fails with "entry not found" in the build
1953 ;; environment, so pass an argument.
1954 (("\\(getpw\\)")
1955 "(getpwnam (getuid))")
1956 ;; The build environment lacks an entry for root in
1957 ;; /etc/passwd.
1958 (("\\(getpw 0\\)")
1959 "(getpwnam \"nobody\")")
1960
1961 ;; FIXME: Skip the 4 faulty tests (see above).
1962 (("\\(test-equal \"next-year\"" all)
1963 (string-append "(test-skip 4)\n" all)))
1964 #t)))))
1965 (native-inputs `(("pkg-config" ,pkg-config)
1966 ("tzdata" ,tzdata-for-tests)))
1967 (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2)))
1968 (home-page "https://www.gnu.org/software/mcron/")
1969 (synopsis "Run jobs at scheduled times")
1970 (description
1971 "GNU Mcron is a complete replacement for Vixie cron. It is used to run
1972 tasks on a schedule, such as every hour or every Monday. Mcron is written in
1973 Guile, so its configuration can be written in Scheme; the original cron
1974 format is also supported.")
1975 (license license:gpl3+)))
1976
1977 (define-public mcron2
1978 ;; This was mthl's mcron development branch, and it became mcron 1.1.
1979 (deprecated-package "mcron2" mcron))
1980
1981 (define-public guile-picture-language
1982 (let ((commit "91d10c96708d732145006dd2802acc4de08b632e")
1983 (revision "1"))
1984 (package
1985 (name "guile-picture-language")
1986 (version (git-version "0.0.1" revision commit))
1987 (source (origin
1988 (method git-fetch)
1989 (uri (git-reference
1990 (url "https://git.elephly.net/software/guile-picture-language.git")
1991 (commit commit)))
1992 (sha256
1993 (base32
1994 "1ydvw9dvssdvlvhh1dr8inyzy2x6m41qgp8hsivca1xysr4gc23a"))))
1995 (build-system gnu-build-system)
1996 (inputs
1997 `(("guile" ,guile-2.2)))
1998 (native-inputs
1999 `(("autoconf" ,autoconf)
2000 ("automake" ,automake)
2001 ("imagemagick" ,imagemagick)
2002 ("pkg-config" ,pkg-config)
2003 ("texinfo" ,texinfo)))
2004 (home-page "https://git.elephly.net/software/guile-picture-language.git")
2005 (synopsis "Picture language for Guile")
2006 (description
2007 "This package provides a simple SVG-based picture language for Guile.
2008 The picture values can directly be displayed in Geiser.")
2009 (license license:lgpl3+))))
2010
2011 (define-public guile-studio
2012 (let ((commit "e2da64f014942a73996286c4abe3c3b1f8bd220c")
2013 (revision "1"))
2014 (package
2015 (name "guile-studio")
2016 (version (git-version "0" revision commit))
2017 (source (origin
2018 (method git-fetch)
2019 (uri (git-reference
2020 (url "https://git.elephly.net/software/guile-studio.git")
2021 (commit commit)))
2022 (sha256
2023 (base32
2024 "10v3kw41bzd8c2a6vxgrwbvl216d0k8f5s9h6pm8hahpd03jl7lm"))))
2025 (build-system gnu-build-system)
2026 (arguments
2027 `(#:tests? #f ; there are none
2028 #:phases
2029 (modify-phases %standard-phases
2030 (delete 'configure)
2031 (replace 'build
2032 (lambda* (#:key source inputs outputs #:allow-other-keys)
2033 (let* ((out (assoc-ref outputs "out"))
2034 (bin (string-append out "/bin/"))
2035 (share (string-append out "/share/")))
2036 (mkdir-p share)
2037 (mkdir-p bin)
2038 (apply invoke "guile" "-s" "guile-studio-configure.scm"
2039 out
2040 (assoc-ref inputs "emacs")
2041 (assoc-ref inputs "guile-picture-language")
2042 (string-append (assoc-ref inputs "adwaita-icon-theme")
2043 "/share/icons/Adwaita/")
2044 (map cdr inputs))
2045 #t)))
2046 (delete 'install))))
2047 (inputs
2048 `(("guile" ,guile-2.2)
2049 ("guile-picture-language" ,guile-picture-language)
2050 ("emacs" ,emacs)
2051 ("emacs-geiser" ,emacs-geiser)
2052 ("emacs-company" ,emacs-company)
2053 ("emacs-flycheck" ,emacs-flycheck)
2054 ("emacs-smart-mode-line" ,emacs-smart-mode-line)
2055 ("emacs-paren-face" ,emacs-paren-face)
2056 ("adwaita-icon-theme" ,adwaita-icon-theme)))
2057 (home-page "https://gnu.org/software/guile")
2058 (synopsis "IDE for Guile")
2059 (description
2060 "This is Emacs with a few settings that make working with Guile easier
2061 for people new to Emacs. Features include: CUA mode, Geiser, tool bar icons
2062 to evaluate Guile buffers, support for Guile's very own picture language, code
2063 completion, a simple mode line, etc.")
2064 (license license:gpl3+))))
2065
2066 (define-public guile-stis-parser
2067 (let ((commit "6e85d37ffc333b722f4413a6c648263701eb75bd")
2068 (revision "1"))
2069 (package
2070 (name "guile-stis-parser")
2071 (version (git-version "0" revision commit))
2072 (source (origin
2073 (method git-fetch)
2074 (uri (git-reference
2075 (url "https://gitlab.com/tampe/stis-parser")
2076 (commit commit)))
2077 (file-name (git-file-name name version))
2078 (sha256
2079 (base32
2080 "0v4hvq7rlpbra1ni73lf8k6sdmjlflr50yi3p1f24g85h77pc7c0"))))
2081 (build-system gnu-build-system)
2082 (arguments
2083 `(#:parallel-build? #f ; not supported
2084 #:phases
2085 (modify-phases %standard-phases
2086 (add-after 'unpack 'chdir
2087 (lambda _ (chdir "modules") #t))
2088 (add-after 'chdir 'use-canonical-directory-for-go-files
2089 (lambda _
2090 (substitute* "Makefile.am"
2091 (("/ccache") "/site-ccache"))
2092 #t))
2093 (add-after 'chdir 'delete-broken-symlink
2094 (lambda _
2095 (delete-file "parser/stis-parser/lang/.#calc.scm")
2096 #t)))))
2097 (inputs
2098 `(("guile" ,guile-2.2)))
2099 (native-inputs
2100 `(("autoconf" ,autoconf)
2101 ("automake" ,automake)
2102 ("pkg-config" ,pkg-config)))
2103 (home-page "https://gitlab.com/tampe/stis-parser")
2104 (synopsis "Parser combinator framework")
2105 (description
2106 "This package provides a functional parser combinator library that
2107 supports backtracking and a small logical framework. The idea is to build up
2108 chunks that are memoized and there is no clear scanner/parser separation,
2109 chunks can be expressions as well as simple tokens.")
2110 (license license:lgpl2.0+))))
2111
2112 (define-public guile-persist
2113 (let ((commit "b14927b0368af51c024560aee5f55724aee35233")
2114 (revision "1"))
2115 (package
2116 (name "guile-persist")
2117 (version (git-version "0" revision commit))
2118 (source (origin
2119 (method git-fetch)
2120 (uri (git-reference
2121 (url "https://gitlab.com/tampe/guile-persist")
2122 (commit commit)))
2123 (file-name (git-file-name name version))
2124 (sha256
2125 (base32
2126 "0z5nf377wh8yj6n3sx2ddn4bdx1qrqnw899dlqjhg0q69qzil522"))
2127 (modules '((guix build utils)))
2128 (snippet
2129 '(begin
2130 ;; Install .go files in the right place.
2131 (substitute* "Makefile.am"
2132 (("/ccache") "/site-ccache"))
2133 #t))))
2134 (build-system gnu-build-system)
2135 (arguments
2136 `(#:phases
2137 (modify-phases %standard-phases
2138 (add-after 'unpack 'patch-prefix
2139 (lambda* (#:key inputs outputs #:allow-other-keys)
2140 (substitute* "src/Makefile.am"
2141 (("/usr/local/lib/guile")
2142 (string-append (assoc-ref outputs "out") "/lib/guile"))
2143 (("/usr/local/include/guile")
2144 (string-append (assoc-ref inputs "guile") "/include/guile"))
2145 (("-L/usr/local/lib")
2146 (string-append "-L" (assoc-ref inputs "guile") "/lib"))
2147 ;; Use canonical directory for go files.
2148 (("/ccache") "/site-ccache"))
2149 #t))
2150 (add-after 'unpack 'patch-library-reference
2151 (lambda* (#:key outputs #:allow-other-keys)
2152 (let ((out (assoc-ref outputs "out")))
2153 (substitute* "persist/persistance.scm"
2154 (("\"libguile-persist\"")
2155 (format #f "\"~a/lib/guile/2.2/extensions/libguile-persist\"" out)))
2156 #t))))))
2157 (inputs
2158 `(("guile" ,guile-2.2)))
2159 (native-inputs
2160 `(("autoconf" ,autoconf)
2161 ("automake" ,automake)
2162 ("libtool" ,libtool)
2163 ("pkg-config" ,pkg-config)))
2164 (home-page "https://gitlab.com/tampe/guile-persist")
2165 (synopsis "Persistance programming framework for Guile")
2166 (description
2167 "This is a serialization library for serializing objects like classes
2168 and objects, closures and structs. This currently does not support
2169 serializing continuations or delimited continuations.")
2170 (license license:lgpl2.0+))))
2171
2172 (define-public python-on-guile
2173 (let ((commit "00a51a23247f1edc4ae8eda72b30df5cd7d0015f")
2174 (revision "3"))
2175 (package
2176 (name "python-on-guile")
2177 (version (git-version "0.1.0" revision commit))
2178 (source (origin
2179 (method git-fetch)
2180 (uri (git-reference
2181 (url "https://git.elephly.net/software/python-on-guile.git")
2182 (commit commit)))
2183 (file-name (git-file-name name version))
2184 (sha256
2185 (base32
2186 "03rpnqr08rqr3gay128g564rwk8w4jbj28ss6b46z1d4vjs4nk68"))))
2187 (build-system gnu-build-system)
2188 (arguments
2189 `(#:parallel-build? #f ; not supported
2190 #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
2191
2192 #:phases
2193 (modify-phases %standard-phases
2194 (add-after 'unpack 'chdir
2195 (lambda _ (chdir "modules") #t))
2196 (add-after 'install 'wrap
2197 (lambda* (#:key outputs #:allow-other-keys)
2198 ;; Wrap the 'python' executable so it can find its
2199 ;; dependencies.
2200 (let ((out (assoc-ref outputs "out")))
2201 (wrap-program (string-append out "/bin/python")
2202 `("GUILE_LOAD_PATH" ":" prefix
2203 (,(getenv "GUILE_LOAD_PATH")))
2204 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
2205 (,(getenv "GUILE_LOAD_COMPILED_PATH"))))
2206 #t))))))
2207 (inputs
2208 `(("guile" ,guile-2.2)))
2209 (propagated-inputs
2210 `(("guile-persist" ,guile-persist)
2211 ("guile-readline" ,guile-readline)
2212 ("guile-stis-parser" ,guile-stis-parser)))
2213 (native-inputs
2214 `(("autoconf" ,autoconf)
2215 ("automake" ,automake)
2216 ("libtool" ,libtool)
2217 ("pkg-config" ,pkg-config)))
2218 (home-page "https://gitlab.com/python-on-guile/python-on-guile/")
2219 (synopsis "Python implementation in Guile")
2220 (description
2221 "This package allows you to compile a Guile Python file to any target
2222 from @code{tree-il}.")
2223 (license license:lgpl2.0+))))
2224
2225 (define-public guile-file-names
2226 (package
2227 (name "guile-file-names")
2228 (version "0.2")
2229 (source (origin
2230 (method url-fetch)
2231 (uri (string-append "http://brandon.invergo.net/software/download/"
2232 "guile-file-names/guile-file-names-"
2233 version ".tar.gz"))
2234 (sha256
2235 (base32
2236 "1kwx5hanl40960w2nhyga7ry4l6c3c57zdrihk4yajj87vn3pmi8"))))
2237 (build-system gnu-build-system)
2238 (arguments
2239 `(#:phases
2240 (modify-phases %standard-phases
2241 (add-after 'unpack 'fix-target-directory
2242 (lambda _
2243 (substitute* "src/Makefile.in"
2244 (("guilemoddir = \\$\\(GUILE_SITE\\)")
2245 "guilemoddir = $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
2246 #t)))))
2247 (inputs
2248 `(("guile" ,guile-2.2)))
2249 (native-inputs
2250 `(("pkg-config" ,pkg-config)))
2251 (home-page "https://gitlab.com/brandoninvergo/guile-file-names")
2252 (synopsis "Manipulate file names")
2253 (description
2254 "The @code{(file-names)} module provides tools for manipulating file
2255 names. The module was built on the idea that doing anything more than a
2256 non-trivial modification of a file name string is a pain (making sure all
2257 slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
2258 Inevitably, you have to break the string up into chunks and operate on that
2259 list of components. This module takes care of that for you.")
2260 (license license:lgpl3+)))
2261
2262 (define-public guile-gi
2263 (package
2264 (name "guile-gi")
2265 (version "0.0.2")
2266 (source (origin
2267 (method url-fetch)
2268 (uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
2269 version ".tar.gz"))
2270 (sha256
2271 (base32
2272 "0hs0viqzff7nzgcmyw721ima1jyymrlzrcycpgwrs6iprscxvqwn"))))
2273 (build-system gnu-build-system)
2274 (arguments
2275 `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
2276 ;; The atomic_int_set test does not actually fail.
2277 #:make-flags '("XFAIL_TESTS=strjoinv.scm")))
2278 (native-inputs
2279 `(("gettext" ,gnu-gettext)
2280 ("libtool" ,libtool)
2281 ("pkg-config" ,pkg-config)))
2282 (propagated-inputs
2283 `(("glib" ,glib)
2284 ("gobject-introspection" ,gobject-introspection)
2285 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
2286 ("gtk+" ,gtk+)
2287 ("guile-lib" ,guile-lib)
2288 ("webkitgtk" ,webkitgtk)))
2289 (inputs `(("guile" ,guile-2.2)))
2290 (home-page "https://github.com/spk121/guile-gi")
2291 (synopsis "GObject bindings for Guile")
2292 (description
2293 "Guile-GI is a library for Guile that allows using GObject-based
2294 libraries, such as GTK+3. Its README comes with the disclaimer: This is
2295 pre-alpha code.")
2296 (license license:gpl3+)))
2297
2298 (define-public guile-srfi-159
2299 (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
2300 (revision "0"))
2301 (package
2302 (name "guile-srfi-159")
2303 (version (git-version "0" revision commit))
2304 (home-page "https://bitbucket.org/bjoli/guile-srfi-159")
2305 (source (origin
2306 (method hg-fetch)
2307 (uri (hg-reference (changeset commit)
2308 (url home-page)))
2309 (sha256
2310 (base32
2311 "1zw6cmcy7xdbfiz3nz9arqnn7l2daidaps6ixkcrc9b6k51fdv3p"))
2312 (file-name (git-file-name name version))))
2313 (build-system guile-build-system)
2314 (arguments
2315 ;; The *-impl.scm files are actually included from module files; they
2316 ;; should not be compiled separately, but they must be installed.
2317 '(#:not-compiled-file-regexp "-impl\\.scm$"))
2318 (inputs
2319 `(("guile" ,guile-2.2)))
2320 (synopsis "Formatting combinators for Guile")
2321 (description
2322 "The @code{(srfi-159)} module and its sub-modules implement the
2323 formatting combinators specified by
2324 @uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
2325 more expressive and flexible than the traditional @code{format} procedure.")
2326 (license license:bsd-3))))
2327
2328 (define-public emacsy
2329 (package
2330 (name "emacsy")
2331 (version "0.4.1")
2332 (source (origin
2333 (method url-fetch)
2334 (uri (string-append
2335 "https://download.savannah.nongnu.org/releases/"
2336 name "/" name "-" version ".tar.gz"))
2337 (sha256
2338 (base32
2339 "1cpb85dl1nibd34c2x2h7vfmjpkgh353p5b1w20v6cs6gmvgg4np"))))
2340 (build-system gnu-build-system)
2341 (native-inputs
2342 `(("autoconf" ,autoconf)
2343 ("automake" ,automake)
2344 ("bzip2" ,bzip2)
2345 ("guile" ,guile-2.2)
2346 ("gettext" ,gnu-gettext)
2347 ("libtool" ,libtool)
2348 ("perl" ,perl)
2349 ("pkg-config" ,pkg-config)
2350 ("texinfo" ,texinfo)
2351 ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
2352 (propagated-inputs
2353 `(("dbus-glib" ,dbus-glib)
2354 ("guile" ,guile-2.2)
2355 ("guile-lib" ,guile-lib)
2356 ("guile-readline" ,guile-readline)
2357 ("glib-networking" ,glib-networking)
2358 ("freeglut" ,freeglut)
2359 ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
2360 ("webkitgtk" ,webkitgtk)))
2361 (arguments
2362 `(#:phases
2363 (modify-phases %standard-phases
2364 (add-before 'configure 'setenv
2365 (lambda _
2366 (setenv "GUILE_AUTO_COMPILE" "0")
2367 #t)))))
2368 (home-page "https://savannah.nongnu.org/projects/emacsy")
2369 (synopsis "Embeddable GNU Emacs-like library using Guile")
2370 (description
2371 "Emacsy is an embeddable Emacs-like library that uses GNU Guile
2372 as extension language. Emacsy can give a C program an Emacsy feel with
2373 keymaps, minibuffer, recordable macros, history, tab completion, major
2374 and minor modes, etc., and can also be used as a pure Guile library. It
2375 comes with a simple counter example using FreeGLUT and browser examples
2376 in C using Gtk+-3 and WebKitGtk.")
2377 (license license:gpl3+)))
2378
2379 (define-public guile-jpeg
2380 (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
2381 (revision "0"))
2382 (package
2383 (name "guile-jpeg")
2384 (version (git-version "0.0" revision commit))
2385 (home-page "https://gitlab.com/wingo/guile-jpeg")
2386 (source (origin
2387 (method git-fetch)
2388 (uri (git-reference (url home-page)
2389 (commit commit)))
2390 (sha256
2391 (base32
2392 "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
2393 (file-name (git-file-name name version))
2394 (modules '((guix build utils)))
2395 (snippet
2396 '(begin
2397 ;; Install .go files in the right place.
2398 (substitute* "Makefile.am"
2399 (("/ccache") "/site-ccache"))
2400 #t))))
2401 (build-system gnu-build-system)
2402 (native-inputs
2403 `(("autoconf" ,autoconf)
2404 ("automake" ,automake)
2405 ("pkg-config" ,pkg-config)
2406 ("guile" ,guile-2.2)))
2407 (synopsis "JPEG file parsing library for Guile")
2408 (description
2409 "Guile-JPEG is a Scheme library to parse JPEG image files and to
2410 perform geometrical transforms on JPEG images.")
2411 (license license:gpl3+))))