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