diff options
author | Arun Isaac | 2025-03-28 01:34:03 +0000 |
---|---|---|
committer | Arun Isaac | 2025-03-28 03:26:47 +0000 |
commit | 7519f07374cb7b617aa5efc30619e954fd260499 (patch) | |
tree | 60bf663f033f325d16bc55e9f804497f003f31fc /guix | |
parent | 4fa319a958c92238094c0a989fdc44f9b17131b7 (diff) | |
download | guix-forge-7519f07374cb7b617aa5efc30619e954fd260499.tar.gz guix-forge-7519f07374cb7b617aa5efc30619e954fd260499.tar.lz guix-forge-7519f07374cb7b617aa5efc30619e954fd260499.zip |
forge: Serve project websites.
* guix/forge/forge.scm: Import (forge nginx) and (gnu services web).
(<forge-project>)[web-domain]: New field.
(forge-nginx-server-blocks): New function.
* guix/forge/forge.scm: Extend forge-nginx-service-type.
* doc/forge.skb (Reference)[forge-project]: Document web-domain.
Diffstat (limited to 'guix')
-rw-r--r-- | guix/forge/forge.scm | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/guix/forge/forge.scm b/guix/forge/forge.scm index 866b132..abd8a26 100644 --- a/guix/forge/forge.scm +++ b/guix/forge/forge.scm @@ -29,6 +29,7 @@ #:use-module ((gnu packages version-control) #:select (git-minimal)) #:use-module (gnu services) #:use-module (gnu services mcron) + #:use-module (gnu services web) #:use-module (guix channels) #:use-module (guix deprecation) #:use-module (guix gexp) @@ -39,6 +40,7 @@ #:use-module (guix store) #:use-module ((forge guile-git) #:select (guile-git)) #:use-module (forge laminar) + #:use-module (forge nginx) #:use-module (forge tissue) #:use-module (forge utils) #:use-module (forge webhook) @@ -53,6 +55,7 @@ forge-project-user forge-project-repository forge-project-repository-branch + forge-project-web-domain forge-project-website-directory forge-project-ci-jobs forge-project-ci-jobs-trigger @@ -78,6 +81,8 @@ (default "main")) (description forge-project-description (default #f)) + (web-domain forge-project-web-domain + (default #f)) (website-directory forge-project-website-directory (default #f)) (ci-jobs forge-project-ci-jobs @@ -438,6 +443,20 @@ that were built." (package-channels pkg)))))))) inferior)))))))) +(define (forge-nginx-server-blocks config) + "Return list of @code{<nginx-server-configuration>} extensions for +forge configuration @var{config}." + ;; Configure nginx server blocks for projects that have a web domain + ;; and a website directory. + (filter-map (match-record-lambda <forge-project> + (web-domain website-directory tissue?) + (and web-domain + website-directory + (nginx-server-configuration + (server-name (list web-domain)) + (root website-directory)))) + (forge-configuration-projects config))) + (define (forge-ci-jobs config) "Return list of CI jobs for forge configuration @var{config}. Each value of the returned list is a @code{<forge-laminar-job>} object." @@ -527,6 +546,8 @@ value is a list of @code{<webhook-hook>} objects." (description "Run guix-forge.") (extensions (list (service-extension activation-service-type forge-activation) + (service-extension forge-nginx-service-type + forge-nginx-server-blocks) (service-extension forge-laminar-service-type forge-ci-jobs+contexts+groups) ;; TODO: Run CI job only if there are new commits |