summaryrefslogtreecommitdiff
path: root/gnu/services
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2025-03-12 09:27:47 +0000
committerChristopher Baines <mail@cbaines.net>2025-03-12 09:27:47 +0000
commit6a499bbb8e438870fa810de322f3a36ad8bb4871 (patch)
tree8ef780bba09e4211dec101045e4f51c2dd6ed68a /gnu/services
parent49e1504de2a256563d0f383362cddd21f03aad2d (diff)
services: guix-data-service: Use a script for database setup.
To avoid loading data service code in to the shepherd. * gnu/services/guix.scm (guix-data-service-shepherd-services): Use a script for database setup. Change-Id: Ic67b33a98d63be69c8ee36d6e279d2c5690c179e
Diffstat (limited to 'gnu/services')
-rw-r--r--gnu/services/guix.scm64
1 files changed, 39 insertions, 25 deletions
diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm
index 24d22a7a3d1..f7da528e662 100644
--- a/gnu/services/guix.scm
+++ b/gnu/services/guix.scm
@@ -615,33 +615,47 @@ ca-certificates.crt file in the system profile."
(requirement '(user-processes 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))
+ #~(make-forkexec-constructor
+ (list
+ #$(program-file
+ "data-service-setup-database"
+ (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))
+ (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)))
- '())))))
+ #$@(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)))
+ '()))))))
+ #:user #$user
+ #:group #$group
+ #:directory "/var/lib/guix-data-service"
+ #:environment-variables
+ `(,(string-append
+ "GUIX_LOCPATH="
+ #$(libc-utf8-locales-for-target) "/lib/locale")
+ "LC_ALL=en_US.utf8")
+ #:log-file "/var/log/guix-data-service/setup-database.log"))
(auto-start? #t))
(shepherd-service