guix-commits
[Top][All Lists]
Advanced

[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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]