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