about summary refs log tree commit diff
path: root/guix
diff options
context:
space:
mode:
Diffstat (limited to 'guix')
-rw-r--r--guix/gn-machines/genenetwork.scm57
-rw-r--r--guix/gn-machines/services/monitoring.scm68
2 files changed, 115 insertions, 10 deletions
diff --git a/guix/gn-machines/genenetwork.scm b/guix/gn-machines/genenetwork.scm
index 06e7425..657322e 100644
--- a/guix/gn-machines/genenetwork.scm
+++ b/guix/gn-machines/genenetwork.scm
@@ -2,11 +2,14 @@
   #:use-module ((gn packages genenetwork)
                 #:select (genenetwork2 genenetwork3 gn-auth gn-uploader gn-libs)
                 #:prefix gn:)
+  #:use-module((gn packages guile)
+               #:select (gn-guile guile-sheepdog)
+               #:prefix gng:)
   #:use-module (guix git-download)
   #:use-module (guix packages))
 
 (define-public genenetwork2
-  (let ((commit "bde8bde1732cc042e96819bfdfd17a004b92d06f")
+  (let ((commit "905cacdc33a054b463d3b98c2adcd882dc3573fe")
         (revision "4"))
     (package
       (inherit gn:genenetwork2)
@@ -20,14 +23,14 @@
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
-                  "05yslcqykvxiddlhdvfmjpmrm36149zxr7mjwq0pyhm6fg5dgzqp"))))
+                  "0vjsfihj94g1cxivkvmfnixjpmmn3wsciiiry2zkqjnzb3yryy2x"))))
       (propagated-inputs
        (modify-inputs (package-propagated-inputs gn:genenetwork2)
          (replace "gn-libs" gn-libs)
          (replace "genenetwork3" genenetwork3))))))
 
 (define-public genenetwork3
-  (let ((commit "c16eedfa97f7dfbf0a217d9dee2e210d1c51c7ed")
+  (let ((commit "34a6b37b312b2e2e92324683ec47046b6ab63fe4")
         (revision "5"))
     (package
       (inherit gn:genenetwork3)
@@ -42,13 +45,13 @@
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0f3z98yg8mz2x2kgbghdhjj90qm35zc84v5fjmr8g949gws1k7xv"))))
+           "1mz71kc4icgcj8mjpnipbyfv3nvyrdmqdzpjy1nd3j2f9zjxypz0"))))
       (propagated-inputs
        (modify-inputs (package-propagated-inputs gn:genenetwork3)
          (replace "gn-libs" gn-libs))))))
 
 (define-public gn-auth
-  (let ((commit "1f2c00e2657f1b7edcfcc9f9bd1a573625d7fb29")
+  (let ((commit "bd0f453033327a392afa3194538db5d2be22969e")
         (revision "1"))
     (package
       (inherit gn:gn-auth)
@@ -64,13 +67,13 @@
          (hash
           (content-hash
            (base32
-            "04xra524dfm1w048ml8n9mc76020j9ipp3dbmf4cc0jps7vq3j91")))))
+            "0iamdg2xbj4f5z0qd8z8jildmq2scr10s547fn2k4rac2xm0yn59")))))
       (propagated-inputs
        (modify-inputs (package-propagated-inputs gn:gn-auth)
          (replace "gn-libs" gn-libs))))))
 
 (define-public gn-uploader
-  (let ((commit "9514647b70fe90a709b2881e50871a6e15f1236e")
+  (let ((commit "096fe9dfe3a582658c6bf9179b6c2662cc78711b")
         (revision "0"))
     (package
       (inherit gn:gn-uploader)
@@ -85,13 +88,13 @@
                 (hash
                  (content-hash
                   (base32
-                   "1gdn60vb4jk63akffkmbmgi7lil6bv8fqksdn1v2bww1z9rmiydl")))))
+                   "02ds5vv8x2367r95zv0ddh42cqdlwh2jjbqipfd6ppn1dms3p9yj")))))
       (propagated-inputs
        (modify-inputs (package-propagated-inputs gn:gn-uploader)
          (replace "gn-libs" gn-libs))))))
 
 (define-public gn-libs
-  (let ((commit "edfbd94378980e1189fcfb769a207e0519af228b")
+  (let ((commit "5f977e69b46e0ee99845fb69d504f299dc7429a1")
         (revision "03"))
     (package
       (inherit gn:gn-libs)
@@ -105,4 +108,38 @@
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
-                  "1ran4hrv4waf1fi8zal1kk2asjp4br7n1dpyds7wxwdia1gnxjnk")))))))
+                  "0hvixdpmqhhby4xv2sq7wnw15gbbp3vicxxa04rmgq1fd4mj0j49")))))))
+
+(define-public gn-guile
+  (let ((commit "454244b774ece37f04f146c74353ea4ec35d43e1")
+	(revision "0"))
+    (package
+      (inherit gng:gn-guile)
+      (name "gn-guile")
+      (version (git-version "4.0.0" revision commit))
+      (source (origin
+		(method git-fetch)
+		(uri (git-reference
+		      (url "https://git.genenetwork.org/gn-guile/")
+		      (commit commit)))
+		(file-name (string-append name "-" version))
+		(sha256
+		 (base32
+                  "1n1zjpwfksq8bf42d7xr7lnblgsbqc0yszkbid253s943fyxzhfn")))))))
+
+(define-public guile-sheepdog
+  (let ((commit "1426617d58f305a4126bb867202843e8cf7dd4b2")
+	(revision "0"))
+    (package
+     (inherit gng:guile-sheepdog)
+     (name "guile-sheepdog")
+     (version (git-version "4.0.0" revision commit))
+     (source (origin
+	      (method git-fetch)
+	      (uri (git-reference
+		    (url "https://github.com/BonfaceKilz/guile-sheepdog.git")
+		    (commit commit)))
+	      (file-name (string-append name "-" version))
+	      (sha256
+	       (base32
+                "1z0xzg11p75s2hk312akxlg2h5278w2abma27dhzjf981g3lcqvr")))))))
diff --git a/guix/gn-machines/services/monitoring.scm b/guix/gn-machines/services/monitoring.scm
new file mode 100644
index 0000000..7fa59c9
--- /dev/null
+++ b/guix/gn-machines/services/monitoring.scm
@@ -0,0 +1,68 @@
+;;; genenetwork-machines --- Guix configuration for genenetwork machines
+;;; Copyright © 2025 Munyoki Kilyungi <me@bonfacemunyoki.com>
+;;;
+;;; This file is part of genenetwork-machines.
+;;;
+;;; genenetwork-machines is free software: you can redistribute it
+;;; and/or modify it under the terms of the GNU General Public License
+;;; as published by the Free Software Foundation, either version 3 of
+;;; the License, or (at your option) any later version.
+;;;
+;;; genenetwork-machines is distributed in the hope that it will be
+;;; useful, but WITHOUT ANY WARRANTY; without even the implied
+;;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+;;; See the GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with genenetwork-machines.  If not, see
+;;; <https://www.gnu.org/licenses/>.
+
+(define-module (gn-machines services monitoring)
+  #:use-module (gnu)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu services databases)
+  #:use-module ((gn-machines genenetwork) #: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 redis))
+      (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))))