summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-09-26 22:17:41 +0200
committerLudovic Courtès <ludo@gnu.org>2012-09-26 23:00:36 +0200
commit1722d6800fb769804600f91a442e07903f8af00a (patch)
treeebc5d6a920145ef47d8f56df797a02b47b5a2a70
parent1f455fdca60c90710322d99ac529a31d71764a0d (diff)
downloadguix-1722d6800fb769804600f91a442e07903f8af00a.tar.gz
distro: Add the `guile', `typesetting', and `databases' package modules.
* distro.scm (package-files): Adjust PREFIX-LEN to use the top-level
  directory, not %DISTRO-MODULE-DIRECTORY.
* distro/packages/base.scm (guile-reader, guile-reader/guile-1.8,
  guile-reader/guile-2.0, lout, recutils): Move to...
* distro/packages/guile.scm, distro/packages/typesetting.scm,
  distro/packages/databases.scm: ... here.  New files.
* Makefile.am (MODULES): Add them.
  (EXTRA_DIST): Add `.dir-locals.el'.

* .dir-locals.el: New file, with settings formerly in `base.scm'.
-rw-r--r--.dir-locals.el16
-rw-r--r--Makefile.am6
-rw-r--r--distro.scm2
-rw-r--r--distro/packages/base.scm192
-rw-r--r--distro/packages/databases.scm60
-rw-r--r--distro/packages/guile.scm75
-rw-r--r--distro/packages/typesetting.scm137
7 files changed, 296 insertions, 192 deletions
diff --git a/.dir-locals.el b/.dir-locals.el
new file mode 100644
index 0000000000..f04fdc6fc7
--- /dev/null
+++ b/.dir-locals.el
@@ -0,0 +1,16 @@
+;; Per-directory local variables for GNU Emacs 23 and later.
+
+((nil             . ((fill-column . 72)
+                     (tab-width   .  8)))
+ (c-mode          . ((c-file-style . "gnu")))
+ (scheme-mode
+  .
+  ((indent-tabs-mode . nil)
+   (eval . (put 'lambda* 'scheme-indent-function 1))
+   (eval . (put 'substitute* 'scheme-indent-function 1))
+   (eval . (put 'with-directory-excursion 'scheme-indent-function 1))
+   (eval . (put 'package 'scheme-indent-function 1))
+   (eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1))))
+ (emacs-lisp-mode . ((indent-tabs-mode . nil)))
+ (texinfo-mode    . ((indent-tabs-mode . nil)
+                     (fill-column . 72))))
diff --git a/Makefile.am b/Makefile.am
index 88f3d87796..1c27516a4d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -36,7 +36,10 @@ MODULES =					\
   guix.scm					\
   distro.scm					\
   distro/packages/base.scm			\
-  distro/packages/ld-wrapper.scm
+  distro/packages/databases.scm			\
+  distro/packages/guile.scm			\
+  distro/packages/ld-wrapper.scm		\
+  distro/packages/typesetting.scm
 
 GOBJECTS = $(MODULES:%.scm=%.go)
 
@@ -78,6 +81,7 @@ LOG_COMPILER =					\
   $(GUILE) --no-auto-compile -L "$(top_srcdir)"
 
 EXTRA_DIST =					\
+  .dir-locals.el				\
   srfi/srfi-64.scm				\
   srfi/srfi-64.upstream.scm			\
   tests/test.drv				\
diff --git a/distro.scm b/distro.scm
index 79e09a3cc6..fc48285bbf 100644
--- a/distro.scm
+++ b/distro.scm
@@ -53,7 +53,7 @@
 (define (package-files)
   "Return the list of files that implement distro modules."
   (define prefix-len
-    (string-length (dirname %distro-module-directory)))
+    (string-length (dirname (search-path %load-path "distro.scm"))))
 
   (file-system-fold (const #t)                    ; enter?
                     (lambda (path stat result)    ; leaf
diff --git a/distro/packages/base.scm b/distro/packages/base.scm
index 67b8b1c602..cbe53999e5 100644
--- a/distro/packages/base.scm
+++ b/distro/packages/base.scm
@@ -30,7 +30,7 @@
 
 ;;; Commentary:
 ;;;
-;;; A Guix-based distribution.
+;;; Base packages of the Guix-based GNU user-land software distribution.
 ;;;
 ;;; Code:
 
@@ -1049,34 +1049,6 @@ internal in-memory representation.")
    (home-page "http://www.gnu.org/software/libunistring/")
    (license "LGPLv3+")))
 
-(define-public recutils
-  (package
-   (name "recutils")
-   (version "1.5")
-   (source (origin
-            (method http-fetch)
-            (uri (string-append "http://ftp.gnu.org/gnu/recutils/recutils-"
-                                version ".tar.gz"))
-            (sha256
-             (base32
-              "1v2xzwwwhc5j5kmvg4sv6baxjpsfqh8ln7ilv4mgb1408rs7xmky"))))
-   (build-system gnu-build-system)
-   (inputs `(("curl" ,(nixpkgs-derivation* "curl"))
-             ("emacs" ,(nixpkgs-derivation* "emacs"))
-             ("check" ,(nixpkgs-derivation* "check"))
-             ("bc" ,(nixpkgs-derivation* "bc"))
-             ("patch/gets"
-              ,(search-patch "diffutils-gets-undeclared.patch"))))
-   (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets"))))
-   (description "GNU recutils, tools and libraries to access human-editable,
-text-based databases")
-   (long-description
-    "GNU recutils is a set of tools and libraries to access human-editable,
-text-based databases called recfiles.  The data is stored as a sequence of
-records, each record containing an arbitrary number of named fields.")
-   (license "GPLv3+")
-   (home-page "http://www.gnu.org/software/recutils/")))
-
 (define-public guile-1.8
   (package
    (name "guile")
@@ -1763,164 +1735,4 @@ store.")
       ("gcc" ,gcc-final)
       ("libc" ,glibc-final))))
 
-
-;;;
-;;; Apps & libs --- TODO: move to separate module.
-;;;
-
-(define (guile-reader guile)
-  "Build Guile-Reader against GUILE, a package of some version of Guile 1.8
-or 2.0."
-  (package
-   (name (string-append "guile-reader-for-guile-" (package-version guile)))
-   (version "0.6")
-   (source  (origin
-             (method http-fetch)
-             (uri (string-append
-                   "http://download-mirror.savannah.gnu.org/releases/guile-reader/guile-reader-"
-                   version ".tar.gz"))
-             (sha256
-              (base32
-               "1svlyk5pm4fsdp2g7n6qffdl6fdggxnlicj0jn9s4lxd63gzxy1n"))))
-   (build-system gnu-build-system)
-   (native-inputs `(("pkgconfig" ,(nixpkgs-derivation* "pkgconfig"))
-                    ("gperf" ,(nixpkgs-derivation* "gperf"))))
-   (inputs `(("guile" ,guile)))
-   (description "Guile-Reader, a simple framework for building readers for
-GNU Guile")
-   (long-description
-"Guile-Reader is a simple framework for building readers for GNU Guile.
-
-The idea is to make it easy to build procedures that extend Guile’s read
-procedure. Readers supporting various syntax variants can easily be written,
-possibly by re-using existing “token readers” of a standard Scheme
-readers. For example, it is used to implement Skribilo’s R5RS-derived
-document syntax.
-
-Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
-hopefully more powerful and flexible (for instance, one may instantiate as
-many readers as needed).")
-   (home-page "http://www.nongnu.org/guile-reader/")
-   (license "GPLv3+")))
-
-(define-public guile-reader/guile-1.8
-  ;; Guile-Reader built against Guile 1.8.
-  (guile-reader guile-1.8))
-
-(define-public guile-reader/guile-2.0
-  ;; Guile-Reader built against Guile 2.0.
-  (guile-reader guile-2.0))
-
-(define-public lout
-  ;; This one is a bit tricky, because it doesn't follow the GNU Build System
-  ;; rules.  Instead, it has a makefile that has to be patched to set the
-  ;; prefix, etc., and it has no makefile rules to build its doc.
-  (let ((configure-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out"))
-                  (doc (assoc-ref outputs "doc")))
-              (substitute* "makefile"
-                (("^PREFIX[[:blank:]]*=.*$")
-                 (string-append "PREFIX = " out "\n"))
-                (("^LOUTLIBDIR[[:blank:]]*=.*$")
-                 (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
-                (("^LOUTDOCDIR[[:blank:]]*=.*$")
-                 (string-append "LOUTDOCDIR = " doc "/doc/lout\n"))
-                (("^MANDIR[[:blank:]]*=.*$")
-                 (string-append "MANDIR = " out "/man\n")))
-              (mkdir out)
-              (mkdir (string-append out "/bin"))  ; TODO: use `mkdir-p'
-              (mkdir (string-append out "/lib"))
-              (mkdir (string-append out "/man"))
-              (mkdir doc)
-              (mkdir (string-append doc "/doc"))
-              (mkdir (string-append doc "/doc/lout")))))
-        (install-man-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (zero? (system* "make" "installman"))))
-        (doc-phase
-         '(lambda* (#:key outputs #:allow-other-keys)
-            (define out
-              (assoc-ref outputs "doc"))
-
-            (setenv "PATH"
-                    (string-append (assoc-ref outputs "out")
-                                   "/bin:" (getenv "PATH")))
-            (chdir "doc")
-            (every (lambda (doc)
-                     (format #t "doc: building `~a'...~%" doc)
-                     (with-directory-excursion doc
-                       (let ((file (string-append out "/doc/lout/"
-                                                  doc ".ps")))
-                         (and (or (file-exists? "outfile.ps")
-                                  (zero? (system* "lout" "-r4" "-o"
-                                                  "outfile.ps" "all")))
-                              (begin
-                                (copy-file "outfile.ps" file)
-                                #t)
-                              (zero? (system* "ps2pdf"
-                                              "-dPDFSETTINGS=/prepress"
-                                              "-sPAPERSIZE=a4"
-                                              file
-                                              (string-append out "/doc/lout/"
-                                                             doc ".pdf")))))))
-                   '("design" "expert" "slides" "user")))))
-   (package
-    (name "lout")
-    (version "3.39")
-    (source (origin
-             (method http-fetch)
-             ;; FIXME: `http-get' doesn't follow redirects, hence the URL.
-             (uri (string-append
-                   "http://download-mirror.savannah.gnu.org/releases/lout/lout-"
-                   version ".tar.gz"))
-             (sha256
-              (base32
-               "12gkyqrn0kaa8xq7sc7v3wm407pz2fxg9ngc75aybhi5z825b9vq"))))
-    (build-system gnu-build-system)               ; actually, just a makefile
-    (outputs '("out" "doc"))
-    (inputs `(("ghostscript" ,(nixpkgs-derivation* "ghostscript"))))
-    (arguments `(#:modules ((guix build utils)
-                            (guix build gnu-build-system)
-                            (srfi srfi-1))        ; we need SRFI-1
-                 #:tests? #f                      ; no "check" target
-
-                 ;; Customize the build phases.
-                 #:phases (alist-replace
-                           'configure ,configure-phase
-
-                           (alist-cons-after
-                            'install 'install-man-pages
-                            ,install-man-phase
-
-                            (alist-cons-after
-                             'install 'install-doc
-                             ,doc-phase
-                             %standard-phases)))))
-    (description "Lout, a document layout system similar in style to LaTeX")
-    (long-description
-"The Lout document formatting system is now reads a high-level description of
-a document similar in style to LaTeX and produces a PostScript or plain text
-output file.
-
-Lout offers an unprecedented range of advanced features, including optimal
-paragraph and page breaking, automatic hyphenation, PostScript EPS file
-inclusion and generation, equation formatting, tables, diagrams, rotation and
-scaling, sorted indexes, bibliographic databases, running headers and
-odd-even pages, automatic cross referencing, multilingual documents including
-hyphenation (most European languages are supported), formatting of computer
-programs, and much more, all ready to use.  Furthermore, Lout is easily
-extended with definitions which are very much easier to write than troff of
-TeX macros because Lout is a high-level, purely functional language, the
-outcome of an eight-year research project that went back to the
-beginning.")
-    (license "GPLv3+")
-    (home-page "http://savannah.nongnu.org/projects/lout/"))))
-
-;;; Local Variables:
-;;; eval: (put 'lambda* 'scheme-indent-function 1)
-;;; eval: (put 'substitute* 'scheme-indent-function 1)
-;;; eval: (put 'with-directory-excursion 'scheme-indent-function 1)
-;;; eval: (put 'package 'scheme-indent-function 1)
-;;; eval: (put 'substitute-keyword-arguments 'scheme-indent-function 1)
-;;; End:
+;;; base.scm ends here
diff --git a/distro/packages/databases.scm b/distro/packages/databases.scm
new file mode 100644
index 0000000000..5c42ef142b
--- /dev/null
+++ b/distro/packages/databases.scm
@@ -0,0 +1,60 @@
+;;; Guix --- Nix package management from Guile.         -*- coding: utf-8 -*-
+;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of Guix.
+;;;
+;;; Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (distro packages databases)
+  #:use-module (distro)
+  #:use-module (guix packages)
+  #:use-module (guix http)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu))
+
+;;; Commentary:
+;;;
+;;; Database management software and related packages.
+;;;
+;;; Code:
+
+(define-public recutils
+  (package
+   (name "recutils")
+   (version "1.5")
+   (source (origin
+            (method http-fetch)
+            (uri (string-append "http://ftp.gnu.org/gnu/recutils/recutils-"
+                                version ".tar.gz"))
+            (sha256
+             (base32
+              "1v2xzwwwhc5j5kmvg4sv6baxjpsfqh8ln7ilv4mgb1408rs7xmky"))))
+   (build-system gnu-build-system)
+   (inputs `(("curl" ,(nixpkgs-derivation* "curl"))
+             ("emacs" ,(nixpkgs-derivation* "emacs"))
+             ("check" ,(nixpkgs-derivation* "check"))
+             ("bc" ,(nixpkgs-derivation* "bc"))
+             ("patch/gets"
+              ,(search-patch "diffutils-gets-undeclared.patch"))))
+   (arguments `(#:patches (list (assoc-ref %build-inputs "patch/gets"))))
+   (description "GNU recutils, tools and libraries to access human-editable,
+text-based databases")
+   (long-description
+    "GNU recutils is a set of tools and libraries to access human-editable,
+text-based databases called recfiles.  The data is stored as a sequence of
+records, each record containing an arbitrary number of named fields.")
+   (license "GPLv3+")
+   (home-page "http://www.gnu.org/software/recutils/")))
+
+;;; databases.scm ends here
diff --git a/distro/packages/guile.scm b/distro/packages/guile.scm
new file mode 100644
index 0000000000..c72bd3b41d
--- /dev/null
+++ b/distro/packages/guile.scm
@@ -0,0 +1,75 @@
+;;; Guix --- Nix package management from Guile.         -*- coding: utf-8 -*-
+;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of Guix.
+;;;
+;;; Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (distro packages guile)
+  #:use-module (distro packages base)
+  #:use-module (guix packages)
+  #:use-module (guix http)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu))
+
+;;; Commentary:
+;;;
+;;; Modules and extensions for GNU Guile.
+;;;
+;;; Code:
+
+(define (guile-reader guile)
+  "Build Guile-Reader against GUILE, a package of some version of Guile 1.8
+or 2.0."
+  (package
+   (name (string-append "guile-reader-for-guile-" (package-version guile)))
+   (version "0.6")
+   (source  (origin
+             (method http-fetch)
+             (uri (string-append
+                   "http://download-mirror.savannah.gnu.org/releases/guile-reader/guile-reader-"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "1svlyk5pm4fsdp2g7n6qffdl6fdggxnlicj0jn9s4lxd63gzxy1n"))))
+   (build-system gnu-build-system)
+   (native-inputs `(("pkgconfig" ,(nixpkgs-derivation* "pkgconfig"))
+                    ("gperf" ,(nixpkgs-derivation* "gperf"))))
+   (inputs `(("guile" ,guile)))
+   (description "Guile-Reader, a simple framework for building readers for
+GNU Guile")
+   (long-description
+"Guile-Reader is a simple framework for building readers for GNU Guile.
+
+The idea is to make it easy to build procedures that extend Guile’s read
+procedure. Readers supporting various syntax variants can easily be written,
+possibly by re-using existing “token readers” of a standard Scheme
+readers. For example, it is used to implement Skribilo’s R5RS-derived
+document syntax.
+
+Guile-Reader’s approach is similar to Common Lisp’s “read table”, but
+hopefully more powerful and flexible (for instance, one may instantiate as
+many readers as needed).")
+   (home-page "http://www.nongnu.org/guile-reader/")
+   (license "GPLv3+")))
+
+(define-public guile-reader/guile-1.8
+  ;; Guile-Reader built against Guile 1.8.
+  (guile-reader guile-1.8))
+
+(define-public guile-reader/guile-2.0
+  ;; Guile-Reader built against Guile 2.0.
+  (guile-reader guile-2.0))
+
+;;; guile.scm ends here
diff --git a/distro/packages/typesetting.scm b/distro/packages/typesetting.scm
new file mode 100644
index 0000000000..cd0eae1187
--- /dev/null
+++ b/distro/packages/typesetting.scm
@@ -0,0 +1,137 @@
+;;; Guix --- Nix package management from Guile.         -*- coding: utf-8 -*-
+;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of Guix.
+;;;
+;;; Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (distro packages typesetting)
+  #:use-module (guix packages)
+  #:use-module (guix http)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu))
+
+;;; Commentary:
+;;;
+;;; Typesetting-related packages.
+;;;
+;;; Code:
+
+(define-public lout
+  ;; This one is a bit tricky, because it doesn't follow the GNU Build System
+  ;; rules.  Instead, it has a makefile that has to be patched to set the
+  ;; prefix, etc., and it has no makefile rules to build its doc.
+  (let ((configure-phase
+         '(lambda* (#:key outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out"))
+                  (doc (assoc-ref outputs "doc")))
+              (substitute* "makefile"
+                (("^PREFIX[[:blank:]]*=.*$")
+                 (string-append "PREFIX = " out "\n"))
+                (("^LOUTLIBDIR[[:blank:]]*=.*$")
+                 (string-append "LOUTLIBDIR = " out "/lib/lout\n"))
+                (("^LOUTDOCDIR[[:blank:]]*=.*$")
+                 (string-append "LOUTDOCDIR = " doc "/doc/lout\n"))
+                (("^MANDIR[[:blank:]]*=.*$")
+                 (string-append "MANDIR = " out "/man\n")))
+              (mkdir out)
+              (mkdir (string-append out "/bin"))  ; TODO: use `mkdir-p'
+              (mkdir (string-append out "/lib"))
+              (mkdir (string-append out "/man"))
+              (mkdir doc)
+              (mkdir (string-append doc "/doc"))
+              (mkdir (string-append doc "/doc/lout")))))
+        (install-man-phase
+         '(lambda* (#:key outputs #:allow-other-keys)
+            (zero? (system* "make" "installman"))))
+        (doc-phase
+         '(lambda* (#:key outputs #:allow-other-keys)
+            (define out
+              (assoc-ref outputs "doc"))
+
+            (setenv "PATH"
+                    (string-append (assoc-ref outputs "out")
+                                   "/bin:" (getenv "PATH")))
+            (chdir "doc")
+            (every (lambda (doc)
+                     (format #t "doc: building `~a'...~%" doc)
+                     (with-directory-excursion doc
+                       (let ((file (string-append out "/doc/lout/"
+                                                  doc ".ps")))
+                         (and (or (file-exists? "outfile.ps")
+                                  (zero? (system* "lout" "-r4" "-o"
+                                                  "outfile.ps" "all")))
+                              (begin
+                                (copy-file "outfile.ps" file)
+                                #t)
+                              (zero? (system* "ps2pdf"
+                                              "-dPDFSETTINGS=/prepress"
+                                              "-sPAPERSIZE=a4"
+                                              file
+                                              (string-append out "/doc/lout/"
+                                                             doc ".pdf")))))))
+                   '("design" "expert" "slides" "user")))))
+   (package
+    (name "lout")
+    (version "3.39")
+    (source (origin
+             (method http-fetch)
+             ;; FIXME: `http-get' doesn't follow redirects, hence the URL.
+             (uri (string-append
+                   "http://download-mirror.savannah.gnu.org/releases/lout/lout-"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "12gkyqrn0kaa8xq7sc7v3wm407pz2fxg9ngc75aybhi5z825b9vq"))))
+    (build-system gnu-build-system)               ; actually, just a makefile
+    (outputs '("out" "doc"))
+    (inputs `(("ghostscript" ,(nixpkgs-derivation* "ghostscript"))))
+    (arguments `(#:modules ((guix build utils)
+                            (guix build gnu-build-system)
+                            (srfi srfi-1))        ; we need SRFI-1
+                 #:tests? #f                      ; no "check" target
+
+                 ;; Customize the build phases.
+                 #:phases (alist-replace
+                           'configure ,configure-phase
+
+                           (alist-cons-after
+                            'install 'install-man-pages
+                            ,install-man-phase
+
+                            (alist-cons-after
+                             'install 'install-doc
+                             ,doc-phase
+                             %standard-phases)))))
+    (description "Lout, a document layout system similar in style to LaTeX")
+    (long-description
+"The Lout document formatting system is now reads a high-level description of
+a document similar in style to LaTeX and produces a PostScript or plain text
+output file.
+
+Lout offers an unprecedented range of advanced features, including optimal
+paragraph and page breaking, automatic hyphenation, PostScript EPS file
+inclusion and generation, equation formatting, tables, diagrams, rotation and
+scaling, sorted indexes, bibliographic databases, running headers and
+odd-even pages, automatic cross referencing, multilingual documents including
+hyphenation (most European languages are supported), formatting of computer
+programs, and much more, all ready to use.  Furthermore, Lout is easily
+extended with definitions which are very much easier to write than troff of
+TeX macros because Lout is a high-level, purely functional language, the
+outcome of an eight-year research project that went back to the
+beginning.")
+    (license "GPLv3+")
+    (home-page "http://savannah.nongnu.org/projects/lout/"))))
+
+;;; typesetting.scm ends here