aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2025-03-28 04:26:38 +0000
committerArun Isaac2025-03-28 04:32:16 +0000
commitfe282755ccb96a6153d8e3dba61ad67b14a03ec3 (patch)
treed1b14606c8b005850974018fc125fe7efaa50231
parent33a36121327c366d34022b3df3a78a3b47adfd99 (diff)
downloadguix-forge-fe282755ccb96a6153d8e3dba61ad67b14a03ec3.tar.gz
guix-forge-fe282755ccb96a6153d8e3dba61ad67b14a03ec3.tar.lz
guix-forge-fe282755ccb96a6153d8e3dba61ad67b14a03ec3.zip
forge: Make forge web listing optional.HEADmain
* doc/forge.skb: * guix/forge/forge.scm (<forge-configuration>)[web-domain]: Set default to #f. * guix/forge/forge.scm (forge-tissue-host): Rename to forge-tissue-hosts. Return list of <tissue-host> objects. (forge-service-type): Update call to forge-tissue-host. Add default value.
-rw-r--r--doc/forge.skb3
-rw-r--r--guix/forge/forge.scm43
2 files changed, 27 insertions, 19 deletions
diff --git a/doc/forge.skb b/doc/forge.skb
index d62336a..2538401 100644
--- a/doc/forge.skb
+++ b/doc/forge.skb
@@ -557,7 +557,8 @@ gunicorn is run in]))))))
[Its value]))
(record-documentation "guix/forge/forge.scm" '<forge-configuration>
(record-field "web-domain"
- [Domain name to serve forge on])
+ [Optional domain name on which to serve project listing and
+tissue-powered websites])
(record-field "projects"
[List of ,(record-ref "<forge-project>") objects describing
projects managed by guix-forge]))
diff --git a/guix/forge/forge.scm b/guix/forge/forge.scm
index 09f92c9..cfe8337 100644
--- a/guix/forge/forge.scm
+++ b/guix/forge/forge.scm
@@ -105,7 +105,8 @@
(define-record-type* <forge-configuration>
forge-configuration make-forge-configuration
forge-configuration?
- (web-domain forge-configuration-web-domain)
+ (web-domain forge-configuration-web-domain
+ (default #f))
(projects forge-configuration-projects
(default '())))
@@ -463,22 +464,27 @@ forge configuration @var{config}."
(root website-directory))))
(forge-configuration-projects config)))
-(define (forge-tissue-host config)
- "Return @code{<tissue-host>} object for forge configuration
+(define (forge-tissue-hosts config)
+ "Return list of @code{<tissue-host>} objects for forge configuration
@var{config}."
- (tissue-host
- (name (forge-configuration-web-domain config))
- (projects
- (filter-map (lambda (project)
- (and (forge-project-tissue? project)
- (tissue-project
- (name (forge-project-name project))
- ;; The laminar user must own the host state so
- ;; that it can run tissue pull.
- (user "laminar")
- (upstream-repository
- (forge-project-repository project)))))
- (forge-configuration-projects config)))))
+ (match-record config <forge-configuration>
+ (web-domain projects)
+ (if web-domain
+ (list (tissue-host
+ (name web-domain)
+ (projects
+ (filter-map (lambda (project)
+ (and (forge-project-tissue? project)
+ (tissue-project
+ (name (forge-project-name project))
+ ;; The laminar user must own the
+ ;; host state so that it can run
+ ;; tissue pull.
+ (user "laminar")
+ (upstream-repository
+ (forge-project-repository project)))))
+ projects))))
+ (list))))
(define (forge-ci-jobs config)
"Return list of CI jobs for forge configuration @var{config}. Each
@@ -572,7 +578,7 @@ value is a list of @code{<webhook-hook>} objects."
(service-extension forge-nginx-service-type
forge-nginx-server-blocks)
(service-extension tissue-service-type
- (compose list forge-tissue-host))
+ forge-tissue-hosts)
(service-extension forge-laminar-service-type
forge-ci-jobs+contexts+groups)
;; TODO: Run CI job only if there are new commits
@@ -586,4 +592,5 @@ value is a list of @code{<webhook-hook>} objects."
(forge-configuration
(inherit config)
(projects (append (forge-configuration-projects config)
- projects)))))))
+ projects)))))
+ (default-value (forge-configuration))))