diff options
-rw-r--r-- | doc/guix.texi | 6 | ||||
-rw-r--r-- | gnu/services/guix.scm | 46 |
2 files changed, 50 insertions, 2 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 9454fa365c..08ffbc36d7 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -40261,6 +40261,12 @@ Extra command line options for @code{guix-data-service}. @item @code{extra-process-jobs-options} (default: @var{'()}) Extra command line options for @code{guix-data-service-process-jobs}. +@item @code{git-repositories} (default: @var{#f}) +List of git-repository information to insert into the database. + +@item @code{build-servers} (default: @var{#f}) +List of build-server information to insert into the database. + @end table @end deftp diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm index 6c58b3a292..7a399238ef 100644 --- a/gnu/services/guix.scm +++ b/gnu/services/guix.scm @@ -100,6 +100,8 @@ guix-data-service-host guix-data-service-getmail-idle-mailboxes guix-data-service-commits-getmail-retriever-configuration + guix-data-service-configuration-git-repositories + guix-data-service-configuration-build-servers guix-data-service-type @@ -556,7 +558,11 @@ (default '())) (extra-process-jobs-options guix-data-service-extra-process-jobs-options - (default '()))) + (default '())) + (git-repositories guix-data-service-configuration-git-repositories + (default #f)) + (build-servers guix-data-service-configuration-build-servers + (default #f))) (define (guix-data-service-profile-packages config) "Return the guix-data-service package, this will populate the @@ -566,7 +572,8 @@ ca-certificates.crt file in the system profile." (define (guix-data-service-shepherd-services config) (match-record config <guix-data-service-configuration> - (package user group port host extra-options extra-process-jobs-options) + (package user group port host extra-options extra-process-jobs-options + git-repositories build-servers) (list (shepherd-service (documentation "Guix Data Service web server") @@ -596,6 +603,41 @@ ca-certificates.crt file in the system profile." (stop #~(make-kill-destructor))) (shepherd-service + (documentation "Guix Data Service setup database") + (provision '(guix-data-service-setup-database)) + (requirement '(postgres)) + (one-shot? #t) + (start + (with-extensions (cons package + ;; This is a poorly constructed Guile load path, + ;; since it contains things that aren't Guile + ;; libraries, but it means that the Guile + ;; libraries needed for the Guix Data Service + ;; don't need to be individually specified here. + (append + (map second (package-inputs package)) + (map second (package-propagated-inputs package)))) + #~(lambda _ + (use-modules (guix-data-service database) + (guix-data-service model git-repository) + (guix-data-service model build-server)) + + (begin + ((@ (guix-data-service database) run-sqitch)) + + #$@(if git-repositories + #~(((@ (guix-data-service model git-repository) + specify-git-repositories) + '(#$@git-repositories))) + '()) + #$@(if build-servers + #~(((@ (guix-data-service model build-server) + specify-build-servers) + '(#$@build-servers))) + '()))))) + (auto-start? #t)) + + (shepherd-service (documentation "Guix Data Service process jobs") (provision '(guix-data-service-process-jobs)) (requirement '(postgres networking)) |