[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/02: hydra: services: Goggles has access to its cache directory.
From: |
Ludovic Courtès |
Subject: |
01/02: hydra: services: Goggles has access to its cache directory. |
Date: |
Fri, 26 Jun 2020 11:50:20 -0400 (EDT) |
civodul pushed a commit to branch master
in repository maintenance.
commit 2bb7289f01323eb2f78873cbc1c5f90fce8b3912
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Fri Jun 26 17:37:51 2020 +0200
hydra: services: Goggles has access to its cache directory.
* hydra/modules/sysadmin/services.scm (%goggles-cache-directory)
(%goggles-activation): New variables.
(goggles-shepherd-services): Pass #:mappings to
'make-forkexec-constructor/container'.
(goggles-service-type): Extend ACTIVATION-SERVICE-TYPE.
---
hydra/modules/sysadmin/services.scm | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/hydra/modules/sysadmin/services.scm
b/hydra/modules/sysadmin/services.scm
index ccab573..29b175e 100644
--- a/hydra/modules/sysadmin/services.scm
+++ b/hydra/modules/sysadmin/services.scm
@@ -455,17 +455,37 @@
#:output-file #$output))))
(main (command-line))))))
+(define %goggles-cache-directory
+ ;; Directory where Goggles stores its Xapian index.
+ "/var/cache/logs.xapian")
+
+(define %goggles-activation
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((user (getpwnam "goggles")))
+ (mkdir-p #$%goggles-cache-directory)
+ (chown #$%goggles-cache-directory
+ (passwd:uid user) (passwd:gid user))))))
+
(define (goggles-shepherd-services goggles)
- (with-imported-modules (source-module-closure '((gnu build shepherd)))
+ (with-imported-modules (source-module-closure
+ '((gnu build shepherd)
+ (gnu system file-systems)))
(list (shepherd-service
(provision '(goggles))
(requirement '(user-processes loopback))
(documentation "Run Goggles, the web interface for IRC logs.")
- (modules '((gnu build shepherd)))
+ (modules '((gnu build shepherd)
+ (gnu system file-systems)))
(start #~(make-forkexec-constructor/container
(list #$goggles)
#:user "goggles" #:group "goggles"
- #:log-file "/var/log/goggles.log"))
+ #:log-file "/var/log/goggles.log"
+ #:mappings (list (file-system-mapping
+ (source #$%goggles-cache-directory)
+ (target source)
+ (writable? #t)))))
(stop #~(make-kill-destructor))))))
(define %goggles-accounts
@@ -486,6 +506,8 @@
(name 'goggles)
(extensions (list (service-extension account-service-type
(const %goggles-accounts))
+ (service-extension activation-service-type
+ (const %goggles-activation))
(service-extension shepherd-root-service-type
goggles-shepherd-services)))
(default-value goggles)