summaryrefslogtreecommitdiff
path: root/website/guix.scm
blob: 5552791fe52654c57f8dd07e9ff40ce5a40c2da2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
;;; GuixSD website --- GNU's advanced distro website
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GuixSD website.
;;;
;;; GuixSD website 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.
;;;
;;; GuixSD website 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 GuixSD website.  If not, see <http://www.gnu.org/licenses/>.

;; Run 'guix build -f guix.scm' to build the web site.

(use-modules (guix) (gnu)
             (guix modules)
             (guix git-download))

(define source
  (local-file "." "guix-web-site"
              #:recursive? #t
              #:select? (git-predicate ".")))

(define-syntax let-package
  (syntax-rules ()
    ((_ () body ...)
     (begin body ...))
    ((_ ((var name) rest ...) body ...)
     (let ((var (specification->package name)))
       (let-package (rest ...) body ...)))))

(let-package ((guix "guix")
              (guile-json "guile-json")
              (haunt "haunt")
              (guile-commonmark "guile-commonmark")
              (guile-syntax-highlight "guile-syntax-highlight"))
  (with-imported-modules (source-module-closure
                          '((guix build utils)))
    #~(begin
        (use-modules (guix build utils))

        (copy-recursively #$source ".")

        ;; For Haunt.
        (setenv "GUILE_LOAD_PATH"
                (string-join (list #+guile-commonmark #+guile-json
                                   #+guile-syntax-highlight
                                   #+guix)
                             "/share/guile/site/2.2:"
                             'suffix))
        (setenv "GUILE_LOAD_COMPILED_PATH"
                #+(file-append guix "/lib/guile/2.2/site-ccache"))

        ;; So we can read/write UTF-8 files.
        (setenv "GUIX_LOCPATH"
                #+(file-append (specification->package "glibc-utf8-locales")
                               "/lib/locale"))
        (setenv "LC_ALL" "en_US.utf8")

        (and (zero? (system* #+(file-append haunt "/bin/haunt")
                             "build"))
             (begin
               (mkdir-p #$output)
               (copy-recursively "site" #$output))))))

;; Local Variables:
;; eval: (put 'let-package 'scheme-indent-function 1)
;; End: