diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2023-02-07 22:12:35 +0100 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2023-02-07 23:22:28 +0100 |
commit | aa8431658ffd40ae0c2cdb63d93b65eefbf58d57 (patch) | |
tree | 6d8be150dd48894db585045d4132b56d134a4347 |
Add the copirate site service
-rw-r--r-- | copirate/services/copirate-site.scm | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/copirate/services/copirate-site.scm b/copirate/services/copirate-site.scm new file mode 100644 index 0000000..bec3c33 --- /dev/null +++ b/copirate/services/copirate-site.scm @@ -0,0 +1,66 @@ +(define-module (copirate services copirate-site) + #:use-module (guix gexp) + #:use-module (guix modules) + #:use-module (guix git) + #:use-module (gnu services) + #:use-module (gnu services web) + #:use-module (gnu packages music) + #:use-module (gnu packages imagemagick) + #:export + ( + copirate-site-service-type + )) + +(define latest-copirate-site + (computed-file + "copirate-site" + (with-imported-modules + (source-module-closure '((guix build utils))) + #~(begin + (use-modules (guix build utils) (ice-9 ftw)) + (mkdir-p #$output) + (copy-recursively + #$(git-checkout + (url "file:///srv/git/copirate-site.git")) + #$output) + (with-directory-excursion + #$output + (let ((enter? (lambda (name stat result) #t)) + (leaf (lambda (name stat result) + (when (string-suffix? ".ly" name) + (invoke #$(file-append lilypond "/bin/lilypond") name)))) + (down (lambda (name stat result) #t)) + (up (lambda (name stat result) #t)) + (skip (lambda (name stat result) #t)) + (error (lambda (name stat errno result) #t))) + (file-system-fold enter? leaf down up skip error #t ".")) + (let ((enter? (lambda (name stat result) #t)) + (leaf (lambda (name stat result) + (when (string-suffix? ".pdf" name) + (let ((miniature-name + (string-append + (substring name 0 (- (string-length name) (string-length ".pdf"))) + "-miniature.png"))) + (invoke #$(file-append imagemagick "/bin/convert") + "-resize" "210x297" + (string-append name "[0]") + miniature-name))))) + (down (lambda (name stat result) #t)) + (up (lambda (name stat result) #t)) + (skip (lambda (name stat result) #t)) + (error (lambda (name stat errno result) #t))) + (file-system-fold enter? leaf down up skip error #t "."))))))) + +(define copirate-site-service-type + (service-type + (name 'copirate) + (extensions + (list + (service-extension + nginx-service-type + (const + (list + (nginx-server-configuration + (root latest-copirate-site))))))) + (description + (format #f "The Copirate editions main website.")))) |