about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.guix/skribilo-package.scm67
1 files changed, 66 insertions, 1 deletions
diff --git a/.guix/skribilo-package.scm b/.guix/skribilo-package.scm
index 839ad65..15a261e 100644
--- a/.guix/skribilo-package.scm
+++ b/.guix/skribilo-package.scm
@@ -1,7 +1,7 @@
 ;;; guix.scm  --  Build recipe for GNU Guix.
 ;;;
 ;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2023 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2023–2024 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of Skribilo.
 ;;;
@@ -23,9 +23,11 @@
   #:use-module ((gnu packages autotools) #:select (autoconf automake))
   #:use-module ((gnu packages gettext) #:select (gnu-gettext))
   #:use-module ((gnu packages skribilo) #:select (skribilo) #:prefix guix:)
+  #:use-module ((guix build-system guile) #:select (%guile-build-system-modules))
   #:use-module (guix gexp)
   #:use-module ((guix git-download) #:select (git-predicate))
   #:use-module (guix packages)
+  #:use-module (guix profiles)
   #:use-module (guix utils))
 
 (define S specification->package)
@@ -74,4 +76,67 @@
     (native-inputs
      (package-native-inputs skribilo))))
 
+(define skribilo-website-gexp
+  (let ((development-profile
+         (profile
+          (content (package->development-manifest skribilo)))))
+    (with-imported-modules %guile-build-system-modules
+      #~(begin
+          (use-modules (guix build guile-build-system)
+                       (guix build utils))
+
+          (define (patch-shebangs)
+            (for-each patch-shebang
+                      (find-files "."
+                                  (lambda (file stat)
+                                    (eq? 'regular (stat:type stat))))))
+
+          (copy-recursively #$(package-source skribilo)
+                            (getcwd))
+          (set-path-environment-variable
+           "PATH" (list "/bin") (list #$development-profile))
+          (set-path-environment-variable
+           "LIBRARY_PATH" (list "/lib") (list #$development-profile))
+          (set-path-environment-variable
+           "ACLOCAL_PATH" (list "/share/aclocal") (list #$development-profile))
+          (set-path-environment-variable
+           "PKG_CONFIG_PATH" (list "/lib/pkgconfig") (list #$development-profile))
+          (set-path-environment-variable
+           "GUILE_LOAD_PATH"
+           (list (string-append "/share/guile/site/"
+                                (target-guile-effective-version)))
+           (list #$development-profile))
+          (set-path-environment-variable
+           "GUILE_LOAD_COMPILED_PATH"
+           (list (string-append "/lib/guile/" (target-guile-effective-version) "/site-ccache"))
+           (list #$development-profile))
+          (substitute* "doc/user/Makefile.am"
+            (("skribilo = [^\n]*")
+             (string-append "skribilo = " #$(file-append skribilo "/bin/skribilo"))))
+          (patch-shebangs)
+          (invoke "autoreconf" "--verbose" "--install" "--force")
+          (patch-shebangs)
+          (invoke "./configure" "CONFIG_SHELL=sh" "SHELL=sh")
+          (invoke "make"
+                  "--directory" "doc/user")
+          (invoke "make"
+                  (string-append "SKRIBILO=" #$skribilo "/bin/skribilo")
+                  "--directory" "web")
+          ;; Install website.
+          (for-each (lambda (file)
+                      (install-file file (string-append #$output "/doc")))
+                    (find-files "doc/user"
+                                (lambda (file stat)
+                                  (and (string=? (basename (dirname file)) "user")
+                                       (or (string-suffix? ".html" file)
+                                           (string-suffix? ".png" file))))))
+          (copy-recursively "doc/user/static"
+                            (string-append #$output "/doc/static"))
+          (install-file "web/index.html" #$output)
+          (copy-recursively "doc/user/static"
+                            (string-append #$output "/static"))))))
+
+(define-public skribilo-website
+  (computed-file "skribilo-website" skribilo-website-gexp))
+
 skribilo