about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMunyoki Kilyungi2025-12-01 15:24:17 +0300
committerMunyoki Kilyungi2025-12-09 14:30:52 +0300
commit74d387d58590779e2ef8d61457e6a9ebe6bc4f82 (patch)
treebe2a40d5c9744de83a18698c55ade1c290ccefdd
parent38602ab52b69ab3bf791079031c5042b1f9d2314 (diff)
downloadguix-bioinformatics-74d387d58590779e2ef8d61457e6a9ebe6bc4f82.tar.gz
Add sheepdog as a service.
Signed-off-by: Munyoki Kilyungi <me@bonfacemunyoki.com>
-rw-r--r--gn/services/monitoring.scm48
1 files changed, 48 insertions, 0 deletions
diff --git a/gn/services/monitoring.scm b/gn/services/monitoring.scm
new file mode 100644
index 0000000..0daad88
--- /dev/null
+++ b/gn/services/monitoring.scm
@@ -0,0 +1,48 @@
+(define-module (gn services monitoring)
+  #:use-module (gnu)
+  #:use-module (gnu services shepherd)
+  #:use-module ((gn packages guile) #:select (guile-sheepdog))
+  #:use-module (guix gexp)
+  #:use-module (guix records)
+  #:use-module (ice-9 match)
+  #:export (guile-sheepdog-configuration
+	    guile-sheepdog-configuration?
+	    guile-sheepdog-configuration-settings-file
+	    guile-sheepdog-configuration-package
+	    guile-sheepdog-service-type))
+
+(define-record-type* <guile-sheepdog-configuration>
+  guile-sheepdog-configuration
+  make-guile-sheepdog-configuration
+  guile-sheepdog-configuration?
+  (settings-file guile-sheepdog-configuration-settings-file
+		 (default "/etc/conn.scm"))
+  (package guile-sheepdog-configuration-package (default guile-sheepdog)))
+
+(define (guile-sheepdog-gexp config)
+  (match-record config <guile-sheepdog-configuration> (settings-file package)
+    (program-file
+     "guile-sheepdog"
+     (with-imported-modules '((guix build utils))
+       #~(begin
+	   (use-modules (guix build utils))
+	   (invoke #$(file-append package "/bin/guile-sheepdog") #$settings-file))))))
+
+(define (guile-sheepdog-shepherd-service config)
+  (shepherd-service
+      (documentation "Run Sheepdog")
+      (provision '(guile-sheepdog))
+      (requirement '(networking))
+      (start #~(make-forkexec-constructor
+		(list #$(guile-sheepdog-gexp config))
+		#:log-file "/var/log/sheepdog.log"))
+      (stop #~(make-kill-destructor))))
+
+(define guile-sheepdog-service-type
+  (service-type
+   (name 'guile-sheepdog)
+   (description "Run sheepdog monitor")
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             (compose list guile-sheepdog-shepherd-service))))
+   (default-value (guile-sheepdog-configuration))))