;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
;;; Copyright © 2016 Amirouche <amirouche@hypermove.net>
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2019 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2017 David Thompson <davet@gnu.org>
;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2019 swedebugia <swedebugia@riseup.net>
+;;; Copyright © 2019 Amar Singh <nly@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages gawk)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnupg)
#:use-module (gnu packages gperf)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages hurd)
#:use-module (gnu packages image)
+ #:use-module (gnu packages imagemagick)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libunistring)
#:use-module (gnu packages linux)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
+ #:use-module (gnu packages noweb)
+ #:use-module (gnu packages password-utils)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages sdl)
#:use-module (gnu packages slang)
#:use-module (gnu packages sqlite)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
+ #:use-module (gnu packages webkit)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix hg-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system guile)
#:use-module (guix utils)
;; projects.
;; TODO: Add guile-dbi and guile-dbd optional dependencies.
(inputs `(("guile" ,guile-2.2)
- ("guile-json" ,guile-json)
+ ("guile-json" ,guile-json-1)
("guile-redis" ,guile-redis)))
(native-inputs `(("bash" ,bash) ;for the `source' builtin
("pkgconfig" ,pkg-config)
(inputs
`(("openssl" ,openssl)
("guile" ,guile-2.2)
- ("guile-json" ,guile-json)
+ ("guile-json" ,guile-json-1)
("guile-simple-zmq" ,guile-simple-zmq)))
(synopsis "Guile kernel for the Jupyter Notebook")
(description
(license license:gpl3+)))
(define-public guile-email
- (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee")
- (revision "1"))
- (package
- (name "guile-email")
- (version (git-version "0.1.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.systemreboot.net/guile-email")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)
- ("autoconf" ,autoconf)
- ("automake" ,automake)))
- (inputs
- `(("guile" ,guile-2.2)))
- (home-page "https://git.systemreboot.net/guile-email")
- (synopsis "Guile email parser")
- (description "This package provides an email parser written in pure
-Guile.")
- (license license:agpl3+))))
+ (package
+ (name "guile-email")
+ (version "0.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://guile-email.systemreboot.net/releases/guile-email-"
+ version ".tar.lz"))
+ (sha256
+ (base32
+ "0zgvh2329zrclxfb1lh7dnqrq46jj77l0lx7j9y6y3xgbhd2d9l0"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("lzip" ,lzip)))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (arguments
+ '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings
+ (home-page "https://guile-email.systemreboot.net")
+ (synopsis "Guile email parser")
+ (description "guile-email is a collection of email utilities implemented
+in pure guile. It supports parsing MIME (Multipurpose Internet Mail
+Extensions) compliant email messages and reading emails from the mbox
+format.")
+ (license license:agpl3+)))
(define-public guile-debbugs-next
(let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe")
`(("guile" ,guile-2.2)
("guile-email" ,guile-email))))))
-;; There has not been any release yet.
(define-public guile-newt
- (let ((commit "80c1e9e71945f833386d1632b52573e59325804f")
- (revision "4"))
- (package
- (name "guile-newt")
- (version (string-append "0-" revision "." (string-take commit 9)))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.com/mothacehe/guile-newt")
- (commit commit)))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
- (build-system gnu-build-system)
- (arguments
- '(#:make-flags
- '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
- (inputs
- `(("guile" ,guile-2.2)
- ("newt" ,newt)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("pkg-config" ,pkg-config)))
- (synopsis "Guile bindings to Newt")
- (description
- "This package provides bindings for Newt, a programming library for
+ (package
+ (name "guile-newt")
+ (version "0.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/mothacehe/guile-newt")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags
+ '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
+ (inputs
+ `(("guile" ,guile-2.2)
+ ("newt" ,newt)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)))
+ (synopsis "Guile bindings to Newt")
+ (description
+ "This package provides bindings for Newt, a programming library for
color text mode, widget based user interfaces. The bindings are written in pure
Scheme by using Guile’s foreign function interface.")
- (home-page "https://gitlab.com/mothacehe/guile-newt")
- (license license:gpl3+))))
+ (home-page "https://gitlab.com/mothacehe/guile-newt")
+ (license license:gpl3+)))
(define-public guile-mastodon
(package
(inputs
`(("guile" ,guile-2.2)
("gnutls" ,gnutls)
- ("guile-json" ,guile-json)))
+ ("guile-json" ,guile-json-1)))
(home-page "https://framagit.org/prouby/guile-mastodon")
(synopsis "Guile Mastodon REST API module")
(description "This package provides Guile modules to access the
microblogging service.")
(license license:gpl3+)))
-;; There has not been any release yet.
(define-public guile-parted
- (let ((commit "ea3f1a1f6844775fc59d3078d2a09c62ffb341b8")
- (revision "0"))
- (package
- (name "guile-parted")
- (version (string-append "0-" revision "." (string-take commit 9)))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.com/mothacehe/guile-parted")
- (commit commit)))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
- (build-system gnu-build-system)
- (arguments
- '(#:make-flags
- '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
- (inputs
- `(("guile" ,guile-2.2)
- ("parted" ,parted)))
- (propagated-inputs
- `(("guile-bytestructures" ,guile-bytestructures)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("automake" ,automake)
- ("pkg-config" ,pkg-config)))
- (synopsis "Guile bindings to GNU Parted")
- (description
- "This package provides bindings for GNU Parted library, a C library
-allowing disk partition tables creation and manipulation. The bindings are
+ (package
+ (name "guile-parted")
+ (version "0.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/mothacehe/guile-parted")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags
+ '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings
+ (inputs
+ `(("guile" ,guile-2.2)
+ ("parted" ,parted)))
+ (propagated-inputs
+ `(("guile-bytestructures" ,guile-bytestructures)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)))
+ (synopsis "Guile bindings to GNU Parted")
+ (description
+ "This package provides bindings for GNU Parted library, a C library
+allowing disk partition tables creation and manipulation. The bindings are
written in pure Scheme by using Guile's foreign function interface.")
- (home-page "https://gitlab.com/mothacehe/guile-parted")
- (license license:gpl3+))))
+ (home-page "https://gitlab.com/mothacehe/guile-parted")
+ (license license:gpl3+)))
(define-public guile-xosd
(package
(define-public guile-wisp
(package
(name "guile-wisp")
- (version "0.9.9.1")
+ (version "1.0.2")
(source (origin
(method url-fetch)
(uri (string-append "https://bitbucket.org/ArneBab/"
version ".tar.gz"))
(sha256
(base32
- "1ii14qz1lx7ffhb8i9q7dgaiwbif8g2q182skx17j11skp65c8r3"))))
+ "03pz7pj9jyallynhflp5s7qax8dj1fs8la434wrfgz7g1kgjnvf6"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
(add-before 'configure 'patch-/usr/bin/env
(lambda _
(substitute* "Makefile.in"
- (("/usr/bin/env bash") (which "bash"))
- (("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site")
- "site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order
+ (("/usr/bin/env bash") (which "bash")))
#t))
;; auto compilation breaks, but if we set HOME to /tmp,
;; that works ok
(assoc-ref emacs:%standard-phases 'build))
(add-after 'compile-emacs-files 'make-autoloads
(assoc-ref emacs:%standard-phases 'make-autoloads)))))
- (home-page "https://draketo.de/english/wisp")
+ (home-page "https://www.draketo.de/english/wisp")
(inputs
`(("guile" ,guile-2.2)))
(native-inputs
(deprecated-package "mcron2" mcron))
(define-public guile-picture-language
- (let ((commit "1ea8b78a8bceb4f7e5eaeb3e76987072267f99bb")
- (revision "2"))
+ (let ((commit "91d10c96708d732145006dd2802acc4de08b632e")
+ (revision "1"))
(package
(name "guile-picture-language")
- (version (git-version "0" revision commit))
+ (version (git-version "0.0.1" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(commit commit)))
(sha256
(base32
- "1rvq6q2zq21x7dx0qq1hn568wglsl4bkd8gacbarcx1fs0rrxcqw"))))
- (build-system guile-build-system)
+ "1ydvw9dvssdvlvhh1dr8inyzy2x6m41qgp8hsivca1xysr4gc23a"))))
+ (build-system gnu-build-system)
(inputs
`(("guile" ,guile-2.2)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("imagemagick" ,imagemagick)
+ ("pkg-config" ,pkg-config)
+ ("texinfo" ,texinfo)))
(home-page "https://git.elephly.net/software/guile-picture-language.git")
(synopsis "Picture language for Guile")
(description
(uri (git-reference
(url "https://gitlab.com/tampe/stis-parser")
(commit commit)))
+ (file-name (git-file-name name version))
(sha256
(base32
"0v4hvq7rlpbra1ni73lf8k6sdmjlflr50yi3p1f24g85h77pc7c0"))))
(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _ (chdir "modules") #t))
+ (add-after 'chdir 'use-canonical-directory-for-go-files
+ (lambda _
+ (substitute* "Makefile.am"
+ (("/ccache") "/site-ccache"))
+ #t))
(add-after 'chdir 'delete-broken-symlink
(lambda _
(delete-file "parser/stis-parser/lang/.#calc.scm")
(file-name (git-file-name name version))
(sha256
(base32
- "0z5nf377wh8yj6n3sx2ddn4bdx1qrqnw899dlqjhg0q69qzil522"))))
+ "0z5nf377wh8yj6n3sx2ddn4bdx1qrqnw899dlqjhg0q69qzil522"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Install .go files in the right place.
+ (substitute* "Makefile.am"
+ (("/ccache") "/site-ccache"))
+ #t))))
(build-system gnu-build-system)
(arguments
`(#:phases
(("/usr/local/include/guile")
(string-append (assoc-ref inputs "guile") "/include/guile"))
(("-L/usr/local/lib")
- (string-append "-L" (assoc-ref inputs "guile") "/lib")))
+ (string-append "-L" (assoc-ref inputs "guile") "/lib"))
+ ;; Use canonical directory for go files.
+ (("/ccache") "/site-ccache"))
#t))
(add-after 'unpack 'patch-library-reference
(lambda* (#:key outputs #:allow-other-keys)
and objects, closures and structs. This currently does not support
serializing continuations or delimited continuations.")
(license license:lgpl2.0+))))
+
+(define-public python-on-guile
+ (let ((commit "00a51a23247f1edc4ae8eda72b30df5cd7d0015f")
+ (revision "3"))
+ (package
+ (name "python-on-guile")
+ (version (git-version "0.1.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.elephly.net/software/python-on-guile.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "03rpnqr08rqr3gay128g564rwk8w4jbj28ss6b46z1d4vjs4nk68"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:parallel-build? #f ; not supported
+ #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
+
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "modules") #t))
+ (add-after 'install 'wrap
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Wrap the 'python' executable so it can find its
+ ;; dependencies.
+ (let ((out (assoc-ref outputs "out")))
+ (wrap-program (string-append out "/bin/python")
+ `("GUILE_LOAD_PATH" ":" prefix
+ (,(getenv "GUILE_LOAD_PATH")))
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+ (,(getenv "GUILE_LOAD_COMPILED_PATH"))))
+ #t))))))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (propagated-inputs
+ `(("guile-persist" ,guile-persist)
+ ("guile-readline" ,guile-readline)
+ ("guile-stis-parser" ,guile-stis-parser)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
+ (home-page "https://gitlab.com/python-on-guile/python-on-guile/")
+ (synopsis "Python implementation in Guile")
+ (description
+ "This package allows you to compile a Guile Python file to any target
+from @code{tree-il}.")
+ (license license:lgpl2.0+))))
+
+(define-public guile-file-names
+ (package
+ (name "guile-file-names")
+ (version "0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://brandon.invergo.net/software/download/"
+ "guile-file-names/guile-file-names-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1kwx5hanl40960w2nhyga7ry4l6c3c57zdrihk4yajj87vn3pmi8"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-target-directory
+ (lambda _
+ (substitute* "src/Makefile.in"
+ (("guilemoddir = \\$\\(GUILE_SITE\\)")
+ "guilemoddir = $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
+ #t)))))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://gitlab.com/brandoninvergo/guile-file-names")
+ (synopsis "Manipulate file names")
+ (description
+ "The @code{(file-names)} module provides tools for manipulating file
+names. The module was built on the idea that doing anything more than a
+non-trivial modification of a file name string is a pain (making sure all
+slashes are present and accounted for, resolving @code{.} and @code{..}, etc).
+Inevitably, you have to break the string up into chunks and operate on that
+list of components. This module takes care of that for you.")
+ (license license:lgpl3+)))
+
+(define-public guile-gi
+ (package
+ (name "guile-gi")
+ (version "0.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://lonelycactus.com/tarball/guile_gi-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0hs0viqzff7nzgcmyw721ima1jyymrlzrcycpgwrs6iprscxvqwn"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags '("--with-gnu-filesystem-hierarchy")
+ ;; The atomic_int_set test does not actually fail.
+ #:make-flags '("XFAIL_TESTS=strjoinv.scm")))
+ (native-inputs
+ `(("gettext" ,gnu-gettext)
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
+ (propagated-inputs
+ `(("glib" ,glib)
+ ("gobject-introspection" ,gobject-introspection)
+ ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("guile-lib" ,guile-lib)
+ ("webkitgtk" ,webkitgtk)))
+ (inputs `(("guile" ,guile-2.2)))
+ (home-page "https://github.com/spk121/guile-gi")
+ (synopsis "GObject bindings for Guile")
+ (description
+ "Guile-GI is a library for Guile that allows using GObject-based
+libraries, such as GTK+3. Its README comes with the disclaimer: This is
+pre-alpha code.")
+ (license license:gpl3+)))
+
+(define-public guile-srfi-159
+ (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb")
+ (revision "0"))
+ (package
+ (name "guile-srfi-159")
+ (version (git-version "0" revision commit))
+ (home-page "https://bitbucket.org/bjoli/guile-srfi-159")
+ (source (origin
+ (method hg-fetch)
+ (uri (hg-reference (changeset commit)
+ (url home-page)))
+ (sha256
+ (base32
+ "1zw6cmcy7xdbfiz3nz9arqnn7l2daidaps6ixkcrc9b6k51fdv3p"))
+ (file-name (git-file-name name version))))
+ (build-system guile-build-system)
+ (arguments
+ ;; The *-impl.scm files are actually included from module files; they
+ ;; should not be compiled separately, but they must be installed.
+ '(#:not-compiled-file-regexp "-impl\\.scm$"))
+ (inputs
+ `(("guile" ,guile-2.2)))
+ (synopsis "Formatting combinators for Guile")
+ (description
+ "The @code{(srfi-159)} module and its sub-modules implement the
+formatting combinators specified by
+@uref{https://srfi.schemers.org/srfi-159/srfi-159.html, SRFI-159}. These are
+more expressive and flexible than the traditional @code{format} procedure.")
+ (license license:bsd-3))))
+
+(define-public emacsy
+ (package
+ (name "emacsy")
+ (version "0.4.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://download.savannah.nongnu.org/releases/"
+ name "/" name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1cpb85dl1nibd34c2x2h7vfmjpkgh353p5b1w20v6cs6gmvgg4np"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("bzip2" ,bzip2)
+ ("guile" ,guile-2.2)
+ ("gettext" ,gnu-gettext)
+ ("libtool" ,libtool)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("texinfo" ,texinfo)
+ ("texlive" ,(texlive-union (list texlive-generic-epsf)))))
+ (inputs
+ `(("dbus-glib" ,dbus-glib)
+ ("guile" ,guile-2.2)
+ ("guile-lib" ,guile-lib)
+ ("guile-readline" ,guile-readline)
+ ("freeglut" ,freeglut)
+ ("webkitgtk" ,webkitgtk)))
+ (propagated-inputs
+ `(("glib-networking" ,glib-networking)
+ ("gssettings-desktop-schemas" ,gsettings-desktop-schemas)))
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 popen)
+ (ice-9 rdelim)
+ (ice-9 regex)
+ (ice-9 ftw)
+ (srfi srfi-26))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'setenv
+ (lambda _
+ (setenv "GUILE_AUTO_COMPILE" "0")
+ #t))
+ (add-after 'install 'wrap-binaries
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (effective (read-line
+ (open-pipe* OPEN_READ
+ "guile" "-c"
+ "(display (effective-version))")))
+ (deps (map (cut assoc-ref inputs <>)
+ '("guile-lib" "guile-readline")))
+ (scm-path (map (cut string-append <> "/share/guile/site/"
+ effective) `(,out ,@deps)))
+ (go-path (map (cut string-append <> "/lib/guile/" effective
+ "/site-ccache/") `(,out ,@deps)))
+ (examples (filter (cut string-match "emacsy" <>)
+ (scandir (string-append out "/bin/"))))
+ (progs (map (cut string-append out "/bin/" <>)
+ examples)))
+ (map (cut wrap-program <>
+ `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix ,go-path))
+ progs)
+ #t))))))
+ (home-page "https://savannah.nongnu.org/projects/emacsy")
+ (synopsis "Embeddable GNU Emacs-like library using Guile")
+ (description
+ "Emacsy is an embeddable Emacs-like library that uses GNU Guile
+as extension language. Emacsy can give a C program an Emacsy feel with
+keymaps, minibuffer, recordable macros, history, tab completion, major
+and minor modes, etc., and can also be used as a pure Guile library. It
+comes with a simple counter example using FreeGLUT and browser examples
+in C using Gtk+-3 and WebKitGtk.")
+ (license license:gpl3+)))
+
+(define-public emacsy-minimal
+ (let ((commit "f3bf0dbd803d7805b6ae8303253507ad13922293"))
+ (package
+ (inherit emacsy)
+ (name "emacsy-minimal")
+ (version (git-version "v0.4.1" "19" commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.savannah.gnu.org/git/emacsy.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ivy28km1p7nlrf63xx3hvrpxf5ld5amk1wcan3k7sqv1kq9mqdb"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("guile" ,guile-2.2)
+ ("guile-lib" ,guile-lib)
+ ("guile-readline" ,guile-readline)))
+ (propagated-inputs '())
+ (arguments
+ `(#:configure-flags '("--without-examples")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'setenv
+ (lambda _
+ (setenv "GUILE_AUTO_COMPILE" "0")
+ #t))))))))
+
+(define-public guile-jpeg
+ (let ((commit "6a1673578b297c2c1b28e44a76bd5c49e76a5046")
+ (revision "0"))
+ (package
+ (name "guile-jpeg")
+ (version (git-version "0.0" revision commit))
+ (home-page "https://gitlab.com/wingo/guile-jpeg")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page)
+ (commit commit)))
+ (sha256
+ (base32
+ "05z9m408w3h6aqb5k3r3qa7khir0k10rxwvsrzhkcq1hr5vbmr4m"))
+ (file-name (git-file-name name version))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Install .go files in the right place.
+ (substitute* "Makefile.am"
+ (("/ccache") "/site-ccache"))
+ #t))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)
+ ("guile" ,guile-2.2)))
+ (synopsis "JPEG file parsing library for Guile")
+ (description
+ "Guile-JPEG is a Scheme library to parse JPEG image files and to
+perform geometrical transforms on JPEG images.")
+ (license license:gpl3+))))
+
+(define-public nomad
+ (package
+ (name "nomad")
+ (version "0.1.1-alpha")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.savannah.gnu.org/git/nomad.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0abz07hl5dh802ciy71xzkvkhyryypq1i94wna40a2wndbd73f7z"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("bash" ,bash)
+ ("pkg-config" ,pkg-config)
+ ("libtool" ,libtool)
+ ("guile" ,guile-2.2)
+ ("glib:bin" ,glib "bin")))
+ (inputs
+ `(("guile" ,guile-2.2)
+ ("guile-lib" ,guile-lib)
+ ("guile-gcrypt" ,guile-gcrypt)
+ ("guile-readline" ,guile-readline)
+ ("gnutls" ,gnutls)
+ ("shroud" ,shroud)
+ ("emacsy" ,emacsy-minimal)
+ ("glib" ,glib)
+ ("dbus-glib" ,dbus-glib)
+ ("gtk+" ,gtk+)
+ ("gtksourceview" ,gtksourceview)
+ ("webkitgtk" ,webkitgtk)
+ ("xorg-server" ,xorg-server)))
+ (propagated-inputs
+ `(("glib" ,glib)
+ ("glib-networking" ,glib-networking)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 popen)
+ (ice-9 rdelim)
+ (srfi srfi-26))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'start-xorg-server
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; The test suite requires a running X server.
+ (system (format #f "~a/bin/Xvfb :1 &"
+ (assoc-ref inputs "xorg-server")))
+ (setenv "DISPLAY" ":1")
+ #t))
+ (add-after 'install 'wrap-binaries
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (gio-deps (map (cut assoc-ref inputs <>) '("glib-networking"
+ "glib")))
+ (gio-mod-path (map (cut string-append <> "/lib/gio/modules")
+ gio-deps))
+ (effective (read-line (open-pipe*
+ OPEN_READ
+ "guile" "-c"
+ "(display (effective-version))")))
+ (deps (map (cut assoc-ref inputs <>)
+ '("emacsy" "guile-lib" "guile-readline"
+ "shroud")))
+ (scm-path (map (cut string-append <>
+ "/share/guile/site/" effective)
+ `(,out ,@deps)))
+ (go-path (map (cut string-append <>
+ "/lib/guile/" effective "/site-ccache")
+ `(,out ,@deps)))
+ (progs (map (cut string-append out "/bin/" <>)
+ '("nomad"))))
+ (map (cut wrap-program <>
+ `("GIO_EXTRA_MODULES" ":" prefix ,gio-mod-path)
+ `("GUILE_LOAD_PATH" ":" prefix ,scm-path)
+ `("GUILE_LOAD_COMPILED_PATH" ":"
+ prefix ,go-path))
+ progs)
+ #t))))))
+ (home-page "https://savannah.nongnu.org/projects/nomad/")
+ (synopsis "Extensible Web Browser in Guile Scheme")
+ (description "Nomad is an Emacs-like Web Browser built using Webkitgtk and
+Emacsy. It has a small C layer and most browser features are fully
+programmable in Guile. It has hooks, keymaps, and self documentation
+features.")
+ (license license:gpl3+)))