guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/02: hydra: services: Add Goggles service.


From: Ludovic Courtès
Subject: 01/02: hydra: services: Add Goggles service.
Date: Fri, 26 Jun 2020 09:01:35 -0400 (EDT)

civodul pushed a commit to branch master
in repository maintenance.

commit 6d3cd42d537c7e3e2d90b5591dce8e3d01acdfa4
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Fri Jun 26 14:59:51 2020 +0200

    hydra: services: Add Goggles service.
    
    * hydra/modules/sysadmin/services.scm (goggles, %goggles-accounts)
    (goggles-shepherd-services, goggles-service-type): New variables.
---
 hydra/modules/sysadmin/services.scm | 66 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 65 insertions(+), 1 deletion(-)

diff --git a/hydra/modules/sysadmin/services.scm 
b/hydra/modules/sysadmin/services.scm
index ea0d499..ccab573 100644
--- a/hydra/modules/sysadmin/services.scm
+++ b/hydra/modules/sysadmin/services.scm
@@ -28,8 +28,10 @@
   #:use-module (gnu services shepherd)
   #:use-module (gnu services ssh)
   #:use-module (gnu services web)
+  #:use-module (gnu system shadow)
   #:use-module (guix packages)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages ci)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages guile-xyz)
@@ -42,7 +44,8 @@
   #:use-module (ice-9 match)
   #:export (firewall-service
             frontend-services
-            KiB MiB GiB TiB))
+            KiB MiB GiB TiB
+            goggles-service-type))
 
 (define not-config?
   ;; Select (guix …) and (gnu …) modules, except (guix config).
@@ -426,3 +429,64 @@
                     config => (login-configuration
                                (inherit config)
                                (motd motd)))))))
+
+
+;;;
+;;; Goggles, for IRC logs at http://logs.guix.gnu.org.
+;;;
+
+(define goggles
+  ;; The 'goggles' executable.
+  (program-file "goggles"
+                (with-extensions (list guile-xapian)
+                  #~(begin
+                      (setvbuf (current-output-port) 'line)
+                      (setvbuf (current-error-port) 'line)
+                      (format (current-error-port) "Starting Goggles...~%")
+
+                      (load-compiled
+                       #$(computed-file
+                          "goggles.go"
+                          #~(begin
+                              (use-modules (system base compile))
+
+                              (compile-file
+                               #$(local-file "../../goggles.scm")
+                               #:output-file #$output))))
+                      (main (command-line))))))
+
+(define (goggles-shepherd-services goggles)
+  (with-imported-modules (source-module-closure '((gnu build shepherd)))
+    (list (shepherd-service
+           (provision '(goggles))
+           (requirement '(user-processes loopback))
+           (documentation "Run Goggles, the web interface for IRC logs.")
+           (modules '((gnu build shepherd)))
+           (start #~(make-forkexec-constructor/container
+                     (list #$goggles)
+                     #:user "goggles" #:group "goggles"
+                     #:log-file "/var/log/goggles.log"))
+           (stop #~(make-kill-destructor))))))
+
+(define %goggles-accounts
+  (list (user-account
+         (name "goggles")
+         (group "goggles")
+         (home-directory "/var/empty")
+         (create-home-directory? #f)
+         (shell (file-append shadow "/sbin/nologin"))
+         (comment "The Goggles web interface")
+         (system? #t))
+        (user-group
+         (name "goggles")
+         (system? #t))))
+
+(define goggles-service-type
+  (service-type
+   (name 'goggles)
+   (extensions (list (service-extension account-service-type
+                                        (const %goggles-accounts))
+                     (service-extension shepherd-root-service-type
+                                        goggles-shepherd-services)))
+   (default-value goggles)
+   (description "Run Goggles, the IRC log web interface.")))



reply via email to

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