aboutsummaryrefslogtreecommitdiff
path: root/gn/services
diff options
context:
space:
mode:
Diffstat (limited to 'gn/services')
-rw-r--r--gn/services/bnw-container.scm2
-rw-r--r--gn/services/bxd-power-container.scm24
-rw-r--r--gn/services/databases.scm5
-rw-r--r--gn/services/discourse.scm128
-rw-r--r--gn/services/file-systems.scm653
-rw-r--r--gn/services/genecup-container.scm3
-rw-r--r--gn/services/genenetwork1.scm33
-rw-r--r--gn/services/genome-browser.scm207
-rw-r--r--gn/services/gitea-README17
-rw-r--r--gn/services/gitea-container.scm94
-rw-r--r--gn/services/gitea-dump.service11
-rw-r--r--gn/services/gitea-dump.timer9
-rw-r--r--gn/services/gitea-nocontainer.service10
-rw-r--r--gn/services/gitea.service10
-rw-r--r--gn/services/gn1-httpd-config.scm136
-rw-r--r--gn/services/monitoring.scm49
-rw-r--r--gn/services/pluto.scm3
-rw-r--r--gn/services/rn6-assembly-container.scm24
-rw-r--r--gn/services/rshiny.scm86
-rw-r--r--gn/services/science.scm387
-rw-r--r--gn/services/singlecell-container.scm27
21 files changed, 58 insertions, 1860 deletions
diff --git a/gn/services/bnw-container.scm b/gn/services/bnw-container.scm
index 4309f75..723e063 100644
--- a/gn/services/bnw-container.scm
+++ b/gn/services/bnw-container.scm
@@ -84,7 +84,7 @@
;; We don't need any packages inside the container.
(packages (list coreutils))
- (services (list (service dhcp-client-service-type)
+ (services (list (service dhcp-service-type)
(service bnw-service-type
;; The following is for testing:
;(bnw-configuration
diff --git a/gn/services/bxd-power-container.scm b/gn/services/bxd-power-container.scm
deleted file mode 100644
index 9191302..0000000
--- a/gn/services/bxd-power-container.scm
+++ /dev/null
@@ -1,24 +0,0 @@
-(define-module (gn services bxd-power-container))
-
-(use-modules (gnu)
- (gn packages bioinformatics)
- (gn services rshiny))
-
-(operating-system
- (host-name "bxd-power")
- (timezone "Etc/UTC")
- (locale "en_US.utf8")
-
- (bootloader (bootloader-configuration
- (bootloader grub-bootloader)
- (targets '("does-not-matter"))))
- (file-systems %base-file-systems)
- ;; No firmware for VMs.
- (firmware '())
- ;; We only need a few packages inside the container.
- (packages (list coreutils))
-
- (services (list (service rshiny-service-type
- (rshiny-configuration
- (package bxd-power-calculator-app)
- (binary "bxd-power-calculator-app"))))))
diff --git a/gn/services/databases.scm b/gn/services/databases.scm
index 4cbbb5e..fbdf39e 100644
--- a/gn/services/databases.scm
+++ b/gn/services/databases.scm
@@ -54,6 +54,8 @@
(default "/var/lib/virtuoso/virtuoso.lck"))
(transaction-file virtuoso-configuration-transaction-file
(default "/var/lib/virtuoso/virtuoso.trx"))
+ (error-log-file virtuoso-configuration-error-log-file
+ (default "/var/lib/virtuoso/virtuoso-errors.log"))
(syslog virtuoso-configuration-syslog
(default "0")))
@@ -116,10 +118,11 @@
#$(virtuoso-configuration-http-server-ip config)
#$(virtuoso-configuration-http-server-port config)))
(format port
- "[Database]~%DatabaseFile = ~a~%LockFile = ~a~%TransactionFile = ~a~%Syslog = ~a~%"
+ "[Database]~%DatabaseFile = ~a~%LockFile = ~a~%TransactionFile = ~a~%ErrorLogFile = ~a~%Syslog = ~a~%"
#$(virtuoso-configuration-database-file config)
#$(virtuoso-configuration-lock-file config)
#$(virtuoso-configuration-transaction-file config)
+ #$(virtuoso-configuration-error-log-file config)
#$(virtuoso-configuration-syslog config))))))
#:directory #$(virtuoso-configuration-state-directory config)
#:user "virtuoso"
diff --git a/gn/services/discourse.scm b/gn/services/discourse.scm
deleted file mode 100644
index 0074c7b..0000000
--- a/gn/services/discourse.scm
+++ /dev/null
@@ -1,128 +0,0 @@
-(define-module (gn services discourse))
-
-(use-modules (gnu)
- (gn packages ruby)
- (guix modules)
- (guix records)
- (ice-9 match))
-(use-service-modules networking shepherd web)
-(use-package-modules node ruby)
-
-(define-record-type* <discourse-configuration>
- discourse-configuration
- make-discourse-configuration
- discourse-configuration?
- (package discourse-configuration-package ; package
- (default discourse))
- (deploy-directory discourse-deploy-directory ; string
- (default "/srv/http"))
- (port discourse-configuration-port ; list of strings
- (default '("3000")))
- (bundler discourse-configuration-bundler ; package
- (default bundler))
- )
-
-(define discourse-activation
- (match-lambda
- (($ <discourse-configuration> package deploy-directory port bundler)
- #~(begin
- (mkdir-p #$deploy-directory)
- (copy-recursively #$package #$deploy-directory)
- (for-each make-file-writable (find-files #$deploy-directory))
- (with-directory-excursion #$deploy-directory
- ;; copied from the discourse package.
- (substitute* "Gemfile"
- ;; Don't require specific versions of these gems
- (("6.0.3.3") (package-version ruby-rails))
- (("2.0.1") (package-version ruby-sassc))
- (("active_model_serializers.*") "active_model_serializers'\n")
- ;; Add tzinfo-data and figure out how to use non-Ruby version later
- (("active_model_serializers'")
- "active_model_serializers'\ngem 'tzinfo-data'")
- ;; ruby-cppjieba-rb never finishes the install phase with ruby-2.6
- ((".*cppjieba_rb.*") ""))
- (invoke #$(file-append node "/bin/npm") "install" "svgo")
- )
- ))))
-
-(define discourse-service
- (match-lambda
- (($ <discourse-configuration> package deploy-directory port bundler)
- (with-imported-modules (source-module-closure
- '((gnu build shepherd)
- (gnu system file-systems)))
- (list (shepherd-service
- (provision '(discourse))
- (requirement '(networking))
- (modules '((gnu build shepherd)
- (gnu system file-systems)))
- (start #~(make-forkexec-constructor/container
- (list #$(file-append package "/server.py"))
- ;; Needs to run from the directory it is located in.
- #:directory #$deploy-directory
- #:log-file "/var/log/discourse.log"
- ;; We don't need to set TMPDIR because we're inside a container.
- #:environment-variables
- '(
- ;"EDIRECT_PUBMED_MASTER=/export2/PubMed"
- ;"NLTK_DATA=/var/cache/nltk_data"
- ;"PERL_LWP_SSL_CA_FILE=/etc/ssl/certs/ca-certificates.crt"
- )
- ;#:mappings (list (file-system-mapping
- ; (source "/export2/PubMed")
- ; (target source)
- ; (writable? #t))
- ; (file-system-mapping
- ; (source "/export/ratspub")
- ; (target source)
- ; (writable? #t))
- ; (file-system-mapping
- ; (source "/var/cache/nltk_data")
- ; (target source))
- ; (file-system-mapping
- ; (source "/etc/ssl/certs")
- ; (target source)))
- ))
- (stop #~(make-kill-destructor)))))
- )))
-
-(define discourse-service-type
- (service-type
- (name 'discourse)
- (extensions
- (list
- (service-extension activation-service-type
- discourse-activation)
- (service-extension shepherd-root-service-type
- discourse-service)
- ;; Make sure discourse doesn't get garbage collected.
- (service-extension profile-service-type
- (compose list discourse-configuration-package))
- ;; Make sure php-fpm is instantiated.
- (service-extension php-fpm-service-type
- (const #t))))
- (default-value (discourse-configuration))
- (description
- "Run an instance of Discourse.")))
-
-(operating-system
- (host-name "discourse")
- (timezone "Etc/UTC")
- (locale "en_US.utf8")
-
- (bootloader (bootloader-configuration
- (bootloader grub-bootloader)
- (targets '("does-not-matter"))))
- (file-systems %base-file-systems)
- ;; No firmware for VMs.
- (firmware '())
- (packages (append
- (list node)
- %base-packages))
-
- (services (list (service dhcp-client-service-type)
- (service discourse-service-type
- ;; The following is for testing:
- ;(discourse-configuration
- ; (port '("3333")))
- ))))
diff --git a/gn/services/file-systems.scm b/gn/services/file-systems.scm
deleted file mode 100644
index 386f2ac..0000000
--- a/gn/services/file-systems.scm
+++ /dev/null
@@ -1,653 +0,0 @@
-(define-module (gn services file-systems)
- #:use-module (guix gexp)
- #:use-module (guix records)
- #:use-module (gnu services)
- #:use-module (gnu services shepherd)
- #:use-module (gnu system accounts)
- #:use-module (gnu system shadow)
- #:use-module (gnu packages admin)
- #:use-module (gnu packages linux)
- #:use-module (gn packages file-systems)
- #:use-module (ice-9 match)
- #:use-module (srfi srfi-1)
- #:use-module (srfi srfi-9)
-
- #:export (lizardfs-configuration
- lizardfs-configuration?
- lizardfs-service-type
-
- lizardfs-mfschunkserver-config-file
- lizardfs-mfschunkserver-config-file?
- lizardfs-mfshdd-config-file
- lizardfs-mfshdd-config-file?
- lizardfs-mfsmaster-config-file
- lizardfs-mfsmaster-config-file?
- lizardfs-mfsmetalogger-config-file
- lizardfs-mfsmetalogger-config-file?))
-
-
-(define %lizardfs-accounts
- (list (user-group
- (name "lizardfs")
- (system? #t))
- (user-account
- (name "lizardfs")
- (group "lizardfs")
- (system? #t)
- (comment "Lizardfs User")
- (home-directory "/var/lib/lizardfs")
- (shell (file-append shadow "/sbin/nologin")))))
-
-(define-record-type* <lizardfs-mfsmetalogger-config-file>
- lizardfs-mfsmetalogger-config-file
- make-lizardfs-mfsmetalogger-config-file
- lizardfs-mfsmetalogger-config-file?
- (working-user lizardfs-mfsmetalogger-config-file-working-user
- (default "lizardfs"))
- (working-group lizardfs-mfsmetalogger-config-file-working-group
- (default "lizardfs"))
- (syslog-identifier lizardfs-mfsmetalogger-config-file-syslog-identifier
- (default "mfsmetalogger"))
- (lock-memory lizardfs-mfsmetalogger-config-file-lock-memory
- (default #f)) ; 0 or 1
- (nice-level lizardfs-mfsmetalogger-config-file-nice-level
- (default -19))
- (data-path lizardfs-mfsmetalogger-config-file-data-path
- (default "/var/lib/lizardfs"))
- (back-logs lizardfs-mfsmetalogger-config-file-back-logs
- (default 50))
- (back-meta-keep-previous lizardfs-mfsmetalogger-config-file-back-meta-keep-previous
- (default 3))
- (meta-download-frequency lizardfs-mfsmetalogger-config-file-meta-download-frequency
- (default 24))
- (master-reconnection-delay lizardfs-mfsmetalogger-config-file-master-reconnection-delay
- (default 5))
- (master-host lizardfs-mfsmetalogger-config-file-master-host
- (default "mfsmaster"))
- (master-port lizardfs-mfsmetalogger-config-file-master-port
- (default 9419))
- (master-timeout lizardfs-mfsmetalogger-config-file-master-timeout
- (default 60)))
-
-(define-gexp-compiler (lizardfs-mfsmetalogger-config-file-compiler
- (file <lizardfs-mfsmetalogger-config-file>) system target)
- (match file
- (($ <lizardfs-mfsmetalogger-config-file> working-user working-group syslog-identifier lock-memory nice-level data-path back-logs back-meta-keep-previous meta-download-frequency master-reconnection-delay master-host master-port master-timeout)
- (gexp->derivation
- "mfsmetalogger.cfg"
- #~(call-with-output-file #$output
- (lambda (port)
- (display
- (string-append
- "# This file generated by GNU Guix\n\n"
- (ungexp-splicing
- `(,@`("WORKING_USER = " ,working-user "\n")
- ,@`("WORKING_GROUP = " ,working-group "\n")
- ,@`("SYSLOG_IDENT = " ,syslog-identifier "\n")
- ,@(if lock-memory
- `("LOCK_MEMORY = 1\n")
- `("LOCK_MEMORY = 0\n"))
- ,@`("NICE_LEVEL = " ,(number->string nice-level) "\n")
- ,@`("DATA_PATH = " ,data-path "\n")
- ,@`("BACK_LOGS = " ,(number->string back-logs) "\n")
- ,@`("BACK_META_KEEP_PREVIOUS = " ,(number->string back-meta-keep-previous) "\n")
- ,@`("META_DOWNLOAD_FREQ = " ,(number->string meta-download-frequency) "\n")
- ,@`("MASTER_RECONNECTION_DELAY = " ,(number->string master-reconnection-delay) "\n")
- ,@`("MASTER_HOST = " ,master-host "\n")
- ,@`("MASTER_PORT = " ,(number->string master-port) "\n")
- ,@`("MASTER_TIMEOUT = " ,(number->string master-timeout) "\n"))))
- port)))
- #:local-build? #t))))
-
-(define-record-type* <lizardfs-mfschunkserver-config-file>
- lizardfs-mfschunkserver-config-file
- make-lizardfs-mfschunkserver-config-file
- lizardfs-mfschunkserver-config-file?
- (label lizardfs-mfschunkserver-label
- (default "_"))
- (working-user lizardfs-mfschunkserver-config-file-working-user
- (default "lizardfs"))
- (working-group lizardfs-mfschunkserver-config-file-working-group
- (default "lizardfs"))
- (syslog-identifier lizardfs-mfschunkserver-config-file-syslog-identifier
- (default "mfschunkserver"))
- (lock-memory lizardfs-mfschunkserver-config-file-lock-memory
- (default #f)) ; 0 or 1
- (nice-level lizardfs-mfschunkserver-config-file-nice-level
- (default -19))
- (data-path lizardfs-mfschunkserver-config-file-data-path
- (default "/var/lib/lizardfs"))
- (master-reconnection-delay lizardfs-mfschunkserver-config-file-master-reconnection-delay
- (default 5))
- (bind-host lizardfs-mfschunkserver-bind-host
- (default "*"))
- (master-host lizardfs-mfschunkserver-config-file-master-host
- (default "mfsmaster"))
- (master-port lizardfs-mfschunkserver-config-file-master-port
- (default 9420))
- (master-timeout lizardfs-mfschunkserver-config-file-master-timeout
- (default 60))
- (csserv-listen-host lizardfs-mfschunkserver-config-csserv-listen-host
- (default "*"))
- (csserv-listen-port lizardfs-mfschunkserver-config-csserv-listen-port
- (default 9422))
- (hdd-conf-filename lizardfs-mfschunkserver-config-hdd-conf-filename
- (default "/etc/lizardfs/mfshdd.cfg")) ; This should be our generated one
- (hdd-leave-space-default lizardfs-mfschunkserver-config-hdd-leave-space-default
- (default "4GiB"))
- (hdd-test-freq lizardfs-mfschunkserver-config-hdd-test-freq
- (default 10))
- (hdd-advise-no-cache lizardfs-mfschunkserver-config-hdd-advise-no-cache
- (default #t)) ; 0 or 1
- (hdd-punch-holes lizardfs-mfschunkserver-config-hdd-punch-holes
- (default #t)) ; 0 or 1
- (enable-load-factor lizardfrs-mfschunkserver-config-enable-load-factor
- (default #f)) ; 0 or 1
- (replication-bandwidth-limit-kbps
- lizardfs-mfschunkserver-config-replication-bandwidth-limit-kbps
- (default 8192))
- (nr-of-network-workers lizardfs-mfschunkserver-config-nr-of-network-workers
- (default 1))
- (nr-of-hdd-workers-per-network-worker
- lizardfs-mfschunkerver-config-nr-of-hdd-workers-per-network-pworker
- (default 20))
- (read-ahead-kb lizardfs-mfschunkserver-config-read-ahead-kb
- (default 0))
- (max-read-behind-kb lizardfs-mfschunkserver-config-max-read-behind-kb
- (default 0))
- (create-new-chunks-in-moosefs-format
- lizardfs-mfschunkserver-config-crate-new-chunks-in-moosefs-format
- (default #t)) ; 0 or 1
- (perform-fsync lizardfs-mfschunkserver-config-perform-fsync
- (default #t)) ; 0 or 1
- )
-
-(define-gexp-compiler (lizardfs-mfschunkserver-config-file-compiler
- (file <lizardfs-mfschunkserver-config-file>) system target)
- (match file
- (($ <lizardfs-mfschunkserver-config-file> label working-user working-group syslog-identifier lock-memory nice-level data-path master-reconnection-delay bind-host master-host master-port master-timeout csserv-listen-host csserv-listen-port hdd-conf-filename hdd-leave-space-default hdd-test-freq hdd-advise-no-cache hdd-punch-holes enable-load-factor replication-bandwidth-limit-kbps nr-of-network-workers nr-of-hdd-workers-per-network-worker read-ahead-kb max-read-behind-kb create-new-chunks-in-moosefs-format perform-fsync)
- (gexp->derivation
- "mfschunkserver.cfg"
- #~(call-with-output-file #$output
- (lambda (port)
- (display
- (string-append
- "# This file generated by GNU Guix\n\n"
- (ungexp-splicing
- `(,@`("LABEL = " ,label "\n")
- ,@`("WORKING_USER = " ,working-user "\n")
- ,@`("WORKING_GROUP = " ,working-group "\n")
- ,@`("SYSLOG_IDENT = " ,syslog-identifier "\n")
- ,@(if lock-memory
- `("LOCK_MEMORY = 1\n")
- `("LOCK_MEMORY = 0\n"))
- ,@`("NICE_LEVEL = " ,(number->string nice-level) "\n")
- ,@`("DATA_PATH = " ,data-path "\n")
- ,@`("MASTER_RECONNECTION_DELAY = " ,(number->string master-reconnection-delay) "\n")
- ,@`("MASTER_HOST = " ,master-host "\n")
- ,@`("MASTER_PORT = " ,(number->string master-port) "\n")
- ,@`("MASTER_TIMEOUT = " ,(number->string master-timeout) "\n")
- ,@`("CSSERV_LISTEN_HOST = " ,csserv-listen-host "\n")
- ,@`("CSSERV_LISTEN_PORT = " ,(number->string csserv-listen-port) "\n")
- ,@`("HDD_CONF_FILENAME = " ,hdd-conf-filename "\n")
- ,@`("HDD_LEAVE_SPACE_DEFAULT = " ,hdd-leave-space-default "\n")
- ,@`("HDD_TEST_FREQ = " ,(number->string hdd-test-freq) "\n")
- ,@(if hdd-advise-no-cache
- `("HDD_ADVISE_NO_CACHE = 1\n")
- `("HDD_ADVISE_NO_CACHE = 0\n"))
- ,@(if hdd-punch-holes
- `("HDD_PUNCH_HOLES = 1\n")
- `("HDD_PUNCH_HOLES = 0\n"))
- ,@(if enable-load-factor
- `("ENABLE_LOAD_FACTOR = 1\n")
- `("ENABLE_LOAD_FACTOR = 0\n"))
- ,@`("REPLICATION_BANDWIDTH_LIMIT_KBPS = " ,(number->string replication-bandwidth-limit-kbps) "\n")
- ,@`("NR_OF_NETWORK_WORKERS = " ,(number->string nr-of-network-workers) "\n")
- ,@`("NR_OF_HDD_WORKERS_PER_NETWORK_WORKER = " ,(number->string nr-of-hdd-workers-per-network-worker) "\n")
- ,@`("READ_AHEAD_KB = " ,(number->string read-ahead-kb) "\n")
- ,@`("MAX_READ_BEHIND_KB = " ,(number->string max-read-behind-kb) "\n")
- ,@(if create-new-chunks-in-moosefs-format
- `("CREATE_NEW_CHUNKS_IN_MOOSEFS_FORMAT = 1\n")
- `("CREATE_NEW_CHUNKS_IN_MOOSEFS_FORMAT = 0\n"))
- ,@(if perform-fsync
- `("PERFORM_FSYNC = 1\n")
- `("PERFORM_FSYNC = 0\n")))))
- port)))
- #:local-build? #t))))
-
-(define-record-type* <lizardfs-mfshdd-config-file>
- lizardfs-mfshdd-config-file
- make-lizardfs-mfshdd-config-file
- lizardfs-mfshdd-config-file?
- (disks-to-use lizardfs-mfshdd-config-file-disks-to-use
- (default '()))
- (disks-to-remove lizardfs-mfshdd-config-file-disks-to-remove
- (default '())))
-
-(define-gexp-compiler (lizardfs-mfshdd-config-file-compiler
- (file <lizardfs-mfshdd-config-file>) system target)
- (match file
- (($ <lizardfs-mfshdd-config-file> disks-to-use disks-to-remove)
- (gexp->derivation
- "mfshdd.cfg"
- #~(call-with-output-file #$output
- (lambda (port)
- (display
- (string-append
- "# This file generated by GNU Guix\n\n"
- (ungexp-splicing
- `(,@(append-map
- (lambda (disk)
- `(,disk "\n"))
- disks-to-use)
- ,@(append-map
- (lambda (disk)
- `("*" ,disk "\n"))
- disks-to-remove))))
- port)))
- #:local-build? #t))))
-
-(define-record-type* <lizardfs-mfsmaster-config-file>
- lizardfs-mfsmaster-config-file
- make-lizardfs-mfsmaster-config-file
- lizardfs-mfsmaster-config-file?
- (personality lizardsf-mfsmaster-config-personality
- (default ""))
- (admin-password lizardfs-mfsmaster-config-admin-password
- (default ""))
- (working-user lizardfs-mfsmaster-config-working-user
- (default "lizardfs"))
- (working-group lizardfs-mfsmaster-config-working-group
- (default "lizardfs"))
- (syslog-ident lizardfs-mfsmaster-config-syslog-ident
- (default "mfsmaster"))
- (lock-memory lizardfs-mfsmaster-config-lock-memory
- (default #f)) ; 0 or 1
- (nice-level lizardfs-mfsmaster-config-nice-level
- (default -19))
- (exports-filename lizardfs-mfsmaster-config-exports-filename
- (default "/etc/lizardfs/mfsexports.cfg")) ; our created one?
- (topology-filename lizardfs-mfsmaster-config-topology-filename
- (default "/etc/lizardfs/mfstopology.cfg")) ; our created one?
- (custom-goals-filename lizardfs-mfsmaster-config-custom-goals-filename
- (default "/etc/lizardfs/mfsgoals.cfg")) ; our created one?
- (data-path lizardfs-mfsmaster-config-data-path
- (default "/var/lib/lizardfs"))
- (prefer-local-chunkserver lizardfs-mfsmaster-prefer-local-chunkserver
- (default #t)) ; 0 or 1
- (auto-recovery lizardfs-mfsmaster-config-auto-recovery
- (default #f)) ; 0 or 1
- (back-logs lizardfs-mfsmaster-config-back-logs
- (default 50))
- (back-meta-keep-previous lizardfs-mfsmaster-config-back-meta-keep-previous
- (default 1))
- (operations-delay-init lizardfs-mfsmaster-config-operations-delay-init
- (default 300))
- (operations-delay-disconnect lizardfs-mfsmaster-config-operations-delay-disconnect
- (default 3600))
- (matoml-listen-host lizardfs-mfsmaster-config-matoml-listen-host
- (default "*"))
- (matoml-listen-port lizardfs-mfsmaster-config-matoml-listen-port
- (default 9419))
- (matoml-log-preserve-seconds lizardfs-mfsmaster-config-matoml-log-preserve-seconds
- (default 600))
- (matocs-listen-host lizardfs-mfsmaster-config-matocs-listen-host
- (default "*"))
- (matocs-listen-port lizardfs-mfsmaster-config-matocs-listen-port
- (default 9420))
- (matocl-listen-host lizardfs-mfsmaster-config-matocl-listen-host
- (default "*"))
- (matocl-listen-port lizardfs-mfsmaster-config-matocl-listen-port
- (default 9421))
- (matots-listen-host lizardfs-mfsmaster-config-matots-listen-host
- (default "*"))
- (matots-listen-port lizardfs-mfsmaster-config-matots-listen-port
- (default 9424))
- (chunks-loop-max-cps lizardfs-mfsmaster-config-chunks-loop-max-cps
- (default 100000))
- (chunks-loop-min-time lizardfs-mfsmaster-config-chunks-loop-min-time
- (default 300))
- (chunks-loop-peroid lizardfs-mfsmaster-config-chunks-loop-period
- (default 1000))
- (chunks-loop-max-cpu lizardfs-mfsmaster-config-chunks-loop-max-cpu
- (default 60))
- (chunks-soft-del-limit lizardfs-mfsmaster-config-chunks-soft-del-limit
- (default 10))
- (chunks-hard-del-limit lizardfs-mfsmaster-config-chunks-hard-del-limit
- (default 25))
- (chunks-write-rep-limit lizardfs-mfsmaster-config-chunks-write-rep-limit
- (default 2))
- (chunks-read-rep-limit lizardfs-mfsmaster-config-chunks-read-rep-limit
- (default 10))
- (endangered-chunks-priority lizardfs-mfsmaster-config-endangered-chunks-priority
- (default 0))
- (endangered-chunks-max-capacity lizardfs-mfsmaster-config-endangered-chunks-max-capacity
- (default "1Mi"))
- (acceptable-difference lizardfs-mfsmaster-config-acceptable-difference
- (default 0.1))
- (chunks-rebalancing-between-labels lizardfs-mfsmaster-config-chunks-rebalancing-between-labels
- (default 0))
- (free-inodes-period lizardfs-mfsmaster-config-free-inodes-period
- (default 60))
- (no-atime lizardfs-mfsmaster-config-no-atime
- (default #f)) ; 0 or 1
- (session-sustain-time lizardfs-mfsmaster-config-session-sustain-time
- (default 86400))
- (reject-old-client lizardfs-mfsmaster-config-reject-old-clients
- (default #f)) ; 0 or 1
- (globaliolimits-filename lizardfs-mfsmaster-config-globaliolimits-filename
- (default "/etc/lizardfs/globaliolimits.cfg")) ; our generated one?
- (globaliolimits-renegotiation-period-settings
- lizardfs-mfsmaster-config-globaliolmits-renegotiation-period-settings
- (default 0.1))
- (globaliolimits-accumulate-ms lizardfs-mfsmaster-config-globaliolimits-accumulate-ms
- (default 250))
- (mfsmetarestore-path lizardfs-mfsmaster-config-mfsmeaterestore-path
- (default (file-append lizardfs "/sbin/mfsmetarestore")))
- (master-reconnection-delay lizardfs-mfsmaster-config-master-reconnection-delay
- (default 5))
- (master-host lizardfs-mfsmaster-config-master-host
- (default "mfsmaster"))
- (master-port lizardfs-mfsmaster-config-master-port
- (default 9419))
- (master-timeout lizardfs-mfsmaster-config-master-timeout
- (default 60))
- (metadata-checksum-interval lizardfs-mfsmaster-config-metadata-checksum-interval
- (default 50))
- (metadata-checksum-recalculation-speed lizardfs-mfsmaster-config-metadata-recalculation-speed
- (default 100))
- (disable-metadata-checksum-verification lizardfs-mfsmaster-config-disable-metadata-checksum-verification
- (default #f)) ; 0 or 1
- (metadata-save-request-min-period lizardfs-mfsmaster-config-metadata-save-request-min-period
- (default 1800))
- (use-bdb-for-name-storage lizardfs-mfsmaster-config-use-bdb-for-name-storage
- (default #t)) ; 0 or 1
- (bdb-name-storage-cache lizardfs-mfsmaster-config-bdb-name-storage-cache
- (default 10))
- (avoid-same-ip-chunkservers lizardfs-mfsmaster-config-avoid-same-ip-chunkservers
- (default #f)) ; 0 or 1
- (load-factor-penalty lizardfs-mfsmaster-config-load-factor-penalty
- (default 0)) ; between 0, 0.5, inclusive
- (redundancy-level lizardfs-mfsmaster-config-redundancy-level
- (default 0))
- (snapshot-initial-batch-size-limit lizardfs-mfsmaster-config-snapshot-initial-batch-size-limit
- (default 10000))
- (file-test-loop-min-time lizardfs-mfsmaster-config-file-test-loop-min-time
- (default 3600)))
-
-
-(define-gexp-compiler (lizardfs-mfsmaster-config-file-compiler
- (file <lizardfs-mfsmaster-config-file>) system target)
- (match file
- (($ <lizardfs-mfsmaster-config-file> personality admin-password working-user working-group syslog-ident lock-memory nice-level exports-filename topology-filename custom-goals-filename data-path prefer-local-chunkserver auto-recovery back-logs back-meta-keep-previous operations-delay-init operations-delay-disconnect matoml-listen-host matoml-listen-port matoml-log-preserve-seconds matocs-listen-host matocs-listen-port matocl-listen-host matocl-listen-port matots-listen-host matots-listen-port chunks-loop-max-cps chunks-loop-min-time chunks-loop-period chunks-loop-max-cpu chunks-soft-del-limit chunks-hard-del-limit chunks-write-rep-limit chunks-read-rep-limit endangered-chunks-priority endangered-chunks-max-capacity acceptable-difference chunks-rebalancing-between-labels free-inodes-period no-atime session-sustain-time reject-old-client globaliolimits-filename globaliolimits-renegotiation-period-settings globaliolimits-accumulate-ms mfsmetarestore-path master-reconnection-delay master-host master-port master-timeout metadata-checksum-interval metadata-checksum-recalculation-speed disable-metadata-checksum-verification metadata-save-request-min-period use-bdb-for-name-storage bdb-name-storage-cache avoid-same-ip-chunkservers load-factor-penalty redundancy-level snapshot-initial-batch-size-limit file-test-loop-min-time)
- (gexp->derivation
- "mfsmaster.cfg"
- #~(call-with-output-file #$output
- (lambda (port)
- (display
- (string-append
- "# This file generated by GNU Guix\n\n"
- (ungexp-splicing
- `(,@`("PERSONALITY = " ,personality "\n")
- ,@`("ADMIN_PASSWORD = \"" ,admin-password "\"\n")
- ,@`("WORKING_USER = " ,working-user "\n")
- ,@`("WORKING_GROUP = " ,working-group "\n")
- ,@`("SYSLOG_IDENT = " ,syslog-ident "\n")
- ,@(if lock-memory
- `("LOCK_MEMORY = 1\n")
- `("LOCK_MEMORY = 0\n"))
- ,@`("NICE_LEVEL = " ,(number->string nice-level) "\n")
- ,@`("EXPORTS_FILENAME = " ,exports-filename "\n")
- ,@`("TOPOLOGY_FILENAME = " ,topology-filename "\n")
- ,@`("CUSTOM_GOALS_FILENAME = " ,custom-goals-filename "\n")
- ,@`("DATA_PATH = " ,data-path "\n")
- ,@(if prefer-local-chunkserver
- `("PREFER_LOCAL_CHUNKSERVER = 1\n")
- `("PREFER_LOCAL_CHUNKSERVER = 0\n"))
- ,@(if auto-recovery
- `("AUTO_RECOVERY = 1\n")
- `("AUTO_RECOVERY = 0\n"))
- ,@`("BACK_LOGS = " ,(number->string back-logs) "\n")
- ,@`("BACK_META_KEEP_PREVIOUS = " ,(number->string back-meta-keep-previous) "\n")
- ,@`("OPERATIONS_DELAY_INIT = " ,(number->string operations-delay-init) "\n")
- ,@`("OPERATIONS_DELAY_DISCONNECT = " ,(number->string operations-delay-disconnect) "\n")
- ,@`("MATOML_LISTEN_HOST = " ,matoml-listen-host "\n")
- ,@`("MATOML_LISTEN_PORT = " ,(number->string matoml-listen-port) "\n")
- ,@`("MATOML_LOG_PRESERVE_SECONDS = " ,(number->string matoml-log-preserve-seconds) "\n")
- ,@`("MATOCS_LISTEN_HOST = " ,matocs-listen-host "\n")
- ,@`("MATOCS_LISTEN_PORT = " ,(number->string matocs-listen-port) "\n")
- ,@`("MATOCL_LISTEN_HOST = " ,matocl-listen-host "\n")
- ,@`("MATOCL_LISTEN_PORT = " ,(number->string matocl-listen-port) "\n")
- ,@`("MATOTS_LISTEN_HOST = " ,matots-listen-host "\n")
- ,@`("MATOTS_LISTEN_PORT = " ,(number->string matots-listen-port) "\n")
- ,@`("CHUNKS_LOOP_MAX_CPS = " ,(number->string chunks-loop-max-cps) "\n")
- ,@`("CHUNKS_LOOP_MIN_TIME = " ,(number->string chunks-loop-min-time) "\n")
- ,@`("CHUNKS_LOOP_PERIOD = " ,(number->string chunks-loop-period) "\n")
- ,@`("CHUNKS_LOOP_MAX_CPU = " ,(number->string chunks-loop-max-cpu) "\n")
- ,@`("CHUNKS_SOFT_DEL_LIMIT = " ,(number->string chunks-soft-del-limit) "\n")
- ,@`("CHUNKS_HARD_DEL_LIMIT = " ,(number->string chunks-hard-del-limit) "\n")
- ,@`("CHUNKS_WRITE_REP_LIMIT = " ,(number->string chunks-write-rep-limit) "\n")
- ,@`("CHUNKS_READ_REP_LIMIT = " ,(number->string chunks-read-rep-limit) "\n")
- ,@`("ENDANGERED_CHUNKS_PRIORITY = " ,(number->string endangered-chunks-priority) "\n")
- ,@`("ENDANGERED_CHUNKS_MAX_CAPACITY = " ,endangered-chunks-max-capacity "\n")
- ,@`("ACCEPTABLE_DIFFERENCE = " ,(number->string acceptable-difference) "\n")
- ,@`("CHUNKS_REBALANCING_BETWEEN_LABELS = " ,(number->string chunks-rebalancing-between-labels) "\n")
- ,@`("FREE_INODES_PERIOD = " ,(number->string free-inodes-period) "\n")
- ,@(if no-atime
- `("NO_ATIME = 1\n")
- `("NO_ATIME = 0\n"))
- ,@`("SESSION_SUSTAIN_TIME = " ,(number->string session-sustain-time) "\n")
- ,@(if reject-old-client
- `("REJECT_OLD_CLIENT = 1\n")
- `("REJECT_OLD_CLIENT = 0\n"))
- ,@`("GLOBALIOLIMITS_FILENAME = " ,globaliolimits-filename "\n")
- ,@`("GLOBALIOLIMITS_RENEGOTIATION_PERIOD_SETTINGS = " ,(number->string globaliolimits-renegotiation-period-settings) "\n")
- ,@`("GLOBALIOLIMITS_ACCUMULATE_MS = " ,(number->string globaliolimits-accumulate-ms) "\n")
- ,@`("MFSMETARESTORE_PATH = " ,mfsmetarestore-path "\n")
- ,@`("MASTER_RECONNECTION_DELAY = " ,(number->string master-reconnection-delay) "\n")
- ,@`("MASTER_HOST = " ,master-host "\n")
- ,@`("MASTER_PORT = " ,(number->string master-port) "\n")
- ,@`("MASTER_TIMEOUT = " ,(number->string master-timeout) "\n")
- ,@`("METADATA_CHECKSUM_INTERVAL = " ,(number->string metadata-checksum-interval) "\n")
- ,@`("METADATA_CHECKSUM_RECALCULATION_SPEED = " ,(number->string metadata-checksum-recalculation-speed) "\n")
- ,@(if disable-metadata-checksum-verification
- `("DISABLE_METADATA_CHECKSUM_VERIFICATION = 1\n")
- `("DISABLE_METADATA_CHECKSUM_VERIFICATION = 0\n"))
- ,@`("METADATA_SAVE_REQUEST_MIN_PERIOD = " ,(number->string metadata-save-request-min-period) "\n")
- ,@(if use-bdb-for-name-storage
- `("USE_BDB_FOR_NAME_STORAGE = 1\n")
- `("USE_BDB_FOR_NAME_STORAGE = 0\n"))
- ,@`("BDB_NAME_STORAGE_CACHE = " ,(number->string bdb-name-storage-cache) "\n")
- ,@(if avoid-same-ip-chunkservers
- `("AVOID_SAME_IP_CHUNKSERVERS = 1\n")
- `("AVOID_SAME_IP_CHUNKSERVERS = 0\n"))
- ,@`("LOAD_FACTOR_PENALTY = " ,(number->string load-factor-penalty) "\n")
- ,@`("REDUNDANCY_LEVEL = " ,(number->string redundancy-level) "\n")
- ,@`("SNAPSHOT_INITIAL_BATCH_SIZE_LIMIT = " ,(number->string snapshot-initial-batch-size-limit) "\n")
- ,@`("FILE_TEST_LOOP_MIN_TIME = " ,(number->string file-test-loop-min-time) "\n"))))
- port)))
- #:local-build? #t))))
-
-(define-record-type* <lizardfs-configuration>
- lizardfs-configuration
- make-lizardfs-configuration
- lizardfs-configuration?
- (package lizardfs-configuration-package
- (default lizardfs))
- (mfsmetalogger-config lizardfs-configuration-mfsmetalogger-config
- (default (lizardfs-mfsmetalogger-config-file)))
- (mfschunkserver-config lizardfs-configuration-mfschunkserver-config
- (default (lizardfs-mfschunkserver-config-file)))
- (mfshdd-config lizardfs-configuration-mfshdd-config
- (default (lizardfs-mfshdd-config-file)))
- (mfsmaster-config lizardfs-configuration-mfsmaster-config
- (default (lizardfs-mfsmaster-config-file)))
- (run-mfsmetalogger-service? lizardfs-configuration-run-mfsmetalogger-service
- (default #f))
- (mfsgoals-config lizardfs-configuration-mfsgoals-config
- (default (plain-file "mfsgoals.cfg"
- (string-append
- "1 1_copy : _\n"
- "2 2_copies : _ _\n"
- "3 3_copies : _ _ _\n"))))
- (mfsmount-config lizardfs-configuration-mfsmount-config
- (default (plain-file "mfsmount.cfg"
- "")))
- (mfsexports-config lizardfs-configuration-mfsexports-config
- (default (plain-file "mfsexports.cfg"
- "")))
- (mfstopology-config lizardfs-configuration-mfstopology-config
- (default (plain-file "mfstopology.cfg"
- "")))
- (globaliolimits-config lizardfs-configuration-globaliolimits-config
- (default (plain-file "globaliolimits.cfg"
- "")))
- (iolimits-config lizardfs-configuration-iolimits-config
- (default (plain-file "iolimits.cfg"
- ""))))
-
-(define lizardfs-shepherd-service
- (match-lambda
- (($ <lizardfs-configuration> package)
- (list
- (shepherd-service
- (documentation "Lizardfs mfsmaster server")
- (provision '(lizardfs))
- (requirement '(loopback))
- (start #~(make-forkexec-constructor
- (list #$(file-append package "/sbin/mfsmaster")
- "-c" "/etc/lizardfs/mfsmaster.cfg"
- "-d" "start")
- #:log-file "/var/log/mfsmaster.log"))
- (stop #~(make-system-destructor
- #$(file-append package "/sbin/mfsmaster")
- " -c /etc/lizardfs/mfsmaster.cfg"
- " stop"))
- (respawn? #f)
- (auto-start? #f)
- )))))
-
-(define lizardfs-mfsmetalogger-shepherd-service
- (match-lambda
- (($ <lizardfs-configuration> package)
- (list
- (shepherd-service
- (documentation "Lizardfs mfsmetalogger server")
- (provision '(lizardfs-mfsmetalogger))
- (requirement '(loopback lizardfs))
- (start #~(make-forkexec-constructor
- (list #$(file-append package "/sbin/mfsmetalogger")
- "-c" "/etc/lizardfs/mfsmetalogger.cfg"
- "-d" "start")
- #:log-file "/var/log/mfsmetalogger.log"))
- (stop #~(make-system-destructor
- #$(file-append package "/sbin/mfsmetalogger")
- " -c /etc/lizardfs/mfsmetalogger.cfg"
- " stop"))
- (auto-start? #f)
- )))))
-
-(define lizardfs-mfschunkserver-shepherd-service
- (match-lambda
- (($ <lizardfs-configuration> package)
- (list
- (shepherd-service
- (documentation "Lizardfs mfschunkserver server")
- (provision '(lizardfs-mfschunkserver))
- (requirement '(loopback lizardfs))
- (start #~(make-forkexec-constructor
- (list #$(file-append package "/sbin/mfschunkserver")
- "-c" "/etc/lizardfs/mfschunkserver.cfg"
- "-d" "start")
- #:log-file "/var/log/mfschunkserver.log"))
- (stop #~(make-system-destructor
- #$(file-append package "/sbin/mfschunkserver")
- " -c /etc/lizardfs/mfschunkserver.cfg"
- " stop"))
- (auto-start? #f)
- )))))
-
-(define lizardfs-mfsmount-shepherd-service
- (match-lambda
- (($ <lizardfs-configuration> package)
- (list
- (shepherd-service
- (documentation "Mount Lizardfs filesystems")
- (provision '(lizardfs-mounts))
- (requirement '(loopback))
- (start #~(make-forkexec-constructor
- (list #$(file-append package "/bin/mfsmount")
- ;#$mountpoint
- "-o" "mfsdelayedinit")
- ))
- ;(stop #~(make-system-destructor #$(file-append fuse "/bin/fusermount") " -u " #$mountpoint))
- (stop #~(make-kill-destructor))
- (auto-start? #f)
- )))))
-
-(define (lizardfs-etc-service config)
- `(("lizardfs/globaliolimits.cfg"
- ,(lizardfs-configuration-globaliolimits-config config))
- ("lizardfs/iolimits.cfg"
- ,(lizardfs-configuration-iolimits-config config))
- ("lizardfs/mfschunkserver.cfg"
- ,(lizardfs-configuration-mfschunkserver-config config))
- ("lizardfs/mfsexports.cfg"
- ,(lizardfs-configuration-mfsexports-config config))
- ("lizardfs/mfsgoals.cfg"
- ,(lizardfs-configuration-mfsgoals-config config))
- ("lizardfs/mfshdd.cfg"
- ,(lizardfs-configuration-mfshdd-config config))
- ("lizardfs/mfsmaster.cfg"
- ,(lizardfs-configuration-mfsmaster-config config))
- ("lizardfs/mfsmetalogger.cfg"
- ,(lizardfs-configuration-mfsmetalogger-config config))
- ("lizardfs/mfsmount.cfg"
- ,(lizardfs-configuration-mfsmount-config config))
- ("lizardfs/mfstopology.cfg"
- ,(lizardfs-configuration-mfstopology-config config))))
-
-(define (lizardfs-activation config)
- #~(begin
- (unless (and (file-exists? "/var/lib/lizardfs/metadata.mfs")
- (lizardfs-configuration-run-mfsmetalogger-service config))
- ;; First run "service".
- (with-output-to-file "/var/lib/lizardfs/metadata.mfs"
- (lambda ()
- (format #t "MFSM NEW"))))
- #$(plain-file? (lizardfs-configuration-globaliolimits-config config))
- #$(plain-file? (lizardfs-configuration-iolimits-config config))
- #$(plain-file? (lizardfs-configuration-mfschunkserver-config config))
- #$(plain-file? (lizardfs-configuration-mfsexports-config config))
- #$(plain-file? (lizardfs-configuration-mfsgoals-config config))
- #$(plain-file? (lizardfs-configuration-mfshdd-config config))
- #$(plain-file? (lizardfs-configuration-mfsmaster-config config))
- #$(plain-file? (lizardfs-configuration-mfsmetalogger-config config))
- #$(plain-file? (lizardfs-configuration-mfsmount-config config))
- #$(plain-file? (lizardfs-configuration-mfstopology-config config))
- #t))
-
-(define (lizardfs-services-to-run config)
- (append (lizardfs-shepherd-service config)
- (lizardfs-mfschunkserver-shepherd-service config)
- (if (lizardfs-configuration-run-mfsmetalogger-service config)
- (lizardfs-mfsmetalogger-shepherd-service config)
- '())))
-
-(define lizardfs-service-type
- (service-type
- (name 'lizardfs)
- (extensions
- (list
- (service-extension shepherd-root-service-type
- lizardfs-services-to-run)
- (service-extension activation-service-type
- lizardfs-activation)
- (service-extension etc-service-type
- lizardfs-etc-service)
- (service-extension account-service-type
- (const %lizardfs-accounts))
- (service-extension profile-service-type
- (compose list lizardfs-configuration-package))))
- (default-value (lizardfs-configuration))
- (description "")))
diff --git a/gn/services/genecup-container.scm b/gn/services/genecup-container.scm
index 42ad097..d61ed80 100644
--- a/gn/services/genecup-container.scm
+++ b/gn/services/genecup-container.scm
@@ -6,7 +6,8 @@
(guix modules)
(guix packages)
(guix records)
- (ice-9 match))
+ (ice-9 match)
+ ((gnu packages nss) #:select (nss-certs)))
(use-service-modules shepherd)
(use-package-modules certs compression)
diff --git a/gn/services/genenetwork1.scm b/gn/services/genenetwork1.scm
deleted file mode 100644
index 4e29956..0000000
--- a/gn/services/genenetwork1.scm
+++ /dev/null
@@ -1,33 +0,0 @@
-(define-module (gn services genenetwork1))
-
-(use-modules (gnu)
- (past packages python)
- (past packages web)
- (gn packages genenetwork)
- (gn packages python24)
- (gn services gn1-httpd-config))
-(use-service-modules web)
-
-(operating-system
- (host-name "genenetwork")
- (timezone "Etc/UTC")
- (locale "en_US.utf8")
-
- (bootloader (bootloader-configuration
- (bootloader grub-bootloader)
- (targets '("does-not-matter"))))
- (file-systems %base-file-systems)
- ;; No firmware for VMs
- (firmware '())
- (packages (cons* %base-packages))
- (services (list (service special-files-service-type
- ;; The genotypes folder doesn't have it's shebangs patched.
- `(("/usr/bin/python" ,(file-append python-2.4 "/bin/python"))))
- (service httpd-service-type
- (httpd-configuration
- ;; Must be a httpd-2.2 variant.
- (package httpd22-with-mod-python)
- (config GN1-httpd-config))))))
-
-;; guix system container -L /path/to/guix-past/modules/ -L /path/to/guix-bioinformatics/ /path/to/guix-bioinformatics/gn/services/genenetwork1.scm --network --expose=/gnshare/gn/web/genotypes
-;; xdg-open http://localhost:8042
diff --git a/gn/services/genome-browser.scm b/gn/services/genome-browser.scm
deleted file mode 100644
index e350674..0000000
--- a/gn/services/genome-browser.scm
+++ /dev/null
@@ -1,207 +0,0 @@
-;; See dockerfile for some clarification about choices:
-;; https://github.com/icebert/docker_ucsc_genome_browser/blob/master/Dockerfile
-;; http://genome.ucsc.edu/goldenPath/help/mirrorManual.html
-(define-module (gn services genome-browser))
-
-(use-modules (gnu)
- (guix build utils)
- (guix packages)
- (gn packages bioinformatics))
-(use-service-modules
- databases
- networking
- web)
-(use-package-modules
- bash
- databases
- ghostscript
- wget)
-
-(define %hg.conf
- (mixed-text-file "hg.conf"
- "browser.documentRoot=" ucsc-genome-browser "/html\n"
- ;"db.host=localhost\n"
- ;"db.user=readonly\n"
- ;"db.password=access\n"
- "db.host=tux02\n"
- "db.user=webqtlout\n"
- "db.password=webqtlout\n"
- "db.trackDb=trackDb\n"
- ;"db.port=13306\n"
- "gbdbLoc1=/gbdb/\n"
- "gbdbLoc2=http://hgdownload.soe.ucsc.edu/gbdb/\n"
- ;# To disable on-the-fly loading of mysql data, comment out these lines.
- "slow-db.host=genome-mysql.soe.ucsc.edu\n"
- "slow-db.user=genomep\n"
- "slow-db.password=password\n"
- "defaultGenome=Mouse\n"
- "central.db=hgcentral\n"
- ;"central.host=localhost\n"
- ;"central.socket=/run/mysqld/mysqld.sock\n" ; default for mysql service
- ;"central.user=readwrite\n"
- ;"central.password=update\n"
- "central.host=tux02\n"
- "central.user=webqtlout\n"
- "central.password=webqtlout\n"
- "central.domain=\n"
- "backupcentral.db=hgcentral\n"
- "backupcentral.host=tux02\n"
- "backupcentral.user=webqtlout\n"
- "backupcentral.password=webqtlout\n"
- "backupcentral.domain=\n"
- "freeType=on\n"
- "freeTypeDir=" gs-fonts "/share/fonts/type1/ghostscript\n"
- ;"hgc.psxyPath=" gmt "/bin/psxy"
- ;"hgc.ps2rasterPath=" gmt "/bin/ps2raster"
- "hgc.ghostscriptPath=" ghostscript "/bin/gs\n" ; needed?
- "udc.cacheDir=/var/cache/genome/udcCache\n")) ; default is /tmp/udcCache
-
-(define %startup-script
- (mixed-text-file "create_databases.sh"
- wget "/bin/wget http://hgdownload.soe.ucsc.edu/admin/hgcentral.sql\n"
- bash-minimal "/bin/sh " (package-source ucsc-genome-browser) "/src/product/ex.MySQLUserPerms.sh\n"
- mariadb "/bin/mysql -e \"create database hgcentral;\" mysql\n"
- mariadb "/bin/mysql hgcentral < hgcentral.sql\n"
- coreutils-minimal "/bin/mkdir -p /var/cache/genome\n"
- coreutils-minimal "/bin/chown -R httpd:httpd /var/www\n"))
-
-;; This might be useful as a one-off shepherd job.
-;(define %genome-activation-script
-; #~(begin
-; ;(unless (file-exists? "/var/lib/mysql/hgcentral")
-; ; (invoke #$(file-append wget "/bin/wget") "http://hgdownload.soe.ucsc.edu/admin/hgcentral.sql" "-O" "/var/lib/mysql/hgcentral.sql")
-; ; ;(invoke "sh" #$(file-append (package-source ucsc-genome-browser) "/src/product/ex.MySQLUserPerms.sh"))
-; ; (invoke #$(file-append mariadb "/bin/mysql") "-e" "\"create database hgcentral;\"" "mysql")
-; ; (invoke #$(file-append mariadb "/bin/mysql") "hgcentral" "<" "/var/lib/mysql/hgcentral.sql"))
-; (unless (file-exists? "/var/www/html/trash")
-; (mkdir-p "/var/www/html/trash"))
-; (unless (file-exists? "/var/cache/genome")
-; (mkdir-p "/var/cache/genome"))
-; (for-each (lambda (file)
-; (chown file (passwd:uid "httpd") (passwd:gid "httpd")))
-; (append (find-files "/var/cache/genome" #:directories? #t)
-; (find-files "/var/www/html/trash" #:directories? #t)))
-; (for-each (lambda (file)
-; (chown file (passwd:uid "mysql") (passwd:gid "mysql")))
-; (find-files "/var/lib/mysql" #:directories? #t))))
-
-;(define %one-month-files
-; (let ((%one-month (* 60 60 24 30)))
-; (find-files "/var/cache/genome" (lambda (file stat)
-; (> (stat:atime stat) %one-month)))))
-
-;; TODO:
-;; create 'daily clean' mcron scripts. Only needed in /var/cache/genome grows too large.
-;; use rsync to make sure mouse genome data is kept up-to-date.
-
-(define ucsc-genome-browser-port 4323)
-
-(operating-system
- (host-name "genome-browser")
- (timezone "Etc/UTC")
- (locale "en_US.utf8")
-
- (bootloader (bootloader-configuration
- (bootloader grub-bootloader)
- (targets '("does-not-matter"))))
- (file-systems %base-file-systems)
- ;; No firmware for VMs
- (firmware '())
- (packages (cons* mariadb ; for create-db script, interacting with database if necessary
- %base-packages))
- (services
- (list ;(service mysql-service-type
- ; (mysql-configuration
- ; (port 13306))) ; don't overlap with tux02's mariadb
- (service special-files-service-type
- `(;("/root/create_hgcentral" ,%startup-script)
- ("/var/lib/genome/hg.conf" ,%hg.conf)))
- (service inetd-service-type
- (inetd-configuration
- (entries
- (list
- (inetd-entry
- (node "127.0.0.1")
- (name "blat") ; yes, it's named blat
- (socket-type 'stream)
- (protocol "tcp") ; probably?
- (wait? #f)
- (user "httpd:httpd") ; or dedicated user. Needs write access.
- (program (file-append ucsc-genome-browser "/bin/gfServer"))
- (arguments
- '("gfServer" "dynserver" "/gbdb")))))))
- (service syslog-service-type) ; needed by inetd
- (service httpd-service-type
- (httpd-configuration
- (config
- (httpd-config-file
- (document-root (file-append ucsc-genome-browser "/html"))
- (server-name "Genome_Browser")
- (listen (list (number->string ucsc-genome-browser-port)))
- (modules
- (cons*
- (httpd-module
- (name "cgid_module")
- (file "modules/mod_cgid.so"))
- (httpd-module
- (name "include_module")
- (file "modules/mod_include.so"))
- %default-httpd-modules))
- (extra-config (list "\
-TypesConfig etc/httpd/mime.types
-# More logs for more debugging.
-LogFormat \"%h %l %u %t \\\"%r\\\" %>s %b\" common
-CustomLog /var/log/httpd/combined_log common
-#LogLevel debug
-# cgid.sock needs to be creatable, not in the store
-ScriptSock /var/run/cgid.sock
-#XBitHack needs to not be inside the VirtualHost block.
-XBitHack On
-# same as 'listen' above
-<VirtualHost *:" (number->string ucsc-genome-browser-port) ">
- DocumentRoot " ucsc-genome-browser "/html
- Alias /bin " ucsc-genome-browser "/bin
- #Alias /cgi-bin " ucsc-genome-browser "/cgi-bin # causes cgi scripts to fail to render
- Alias /favicon.ico " ucsc-genome-browser "/html/faviconRR.ico
- Alias /htdocs " ucsc-genome-browser "/htdocs
- #Alias /htdocs " ucsc-genome-browser "/html
- Alias /var/www/html/trash /var/cache/genome
- Alias /var/cache/genome /var/cache/genome
- <Directory " ucsc-genome-browser "/html>
- Options +Includes
- #Options +Includes +FollowSymLinks +Indexes
- AllowOverride None
- <IfModule mod_authz_host.c>
- Require all granted
- SSILegacyExprParser on
- </IfModule>
- </Directory>
-
- ScriptAlias /cgi-bin " ucsc-genome-browser "/cgi-bin
- <Directory " ucsc-genome-browser "/cgi-bin>
- AllowOverride None
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
- #Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch +Includes +FollowSymlinks
- Order allow,deny
- #SetHandler cgi-script
- Require all granted
- Allow from all
- </Directory>
-
- <Directory /var/cache/genome>
- Options MultiViews
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
- # Upstream default location, possibly expected by software
- <Directory /var/www/html/trash>
- Options MultiViews
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
-</VirtualHost>")))))))))
-
-;; guix system container -L /path/to/guix-past/modules/ -L /path/to/guix-bioinformatics/ /path/to/guix-bioinformatics/gn/services/genome-browser.scm --network --share=/export/efraimf/UCSC_Genome/gbdb=/gbdb --share=/export/efraimf/UCSC_Genome/var-lib-mysql=/var/lib/mysql --share=/export/efraimf/UCSC_Genome/var-cache-genome=/var/cache/genome --share=/export/efraimf/UCSC_Genome/var-cache-genome=/var/www/html/trash
-;; xdg-open http://localhost:4322
diff --git a/gn/services/gitea-README b/gn/services/gitea-README
deleted file mode 100644
index 51be573..0000000
--- a/gn/services/gitea-README
+++ /dev/null
@@ -1,17 +0,0 @@
-SETUP:
-
-The setup process works like this:
-Decide where you want the base directory for gitea
- for example: /srv/services/gitea
-# mkdir -p /srv/services
-Make the directory itself writable
-# chmod o+w /srv/services
-Decide the user/group you want to own the directory and service and change the container
-$ sed -i 's/1009/<insert-number>/g' gitea-container.scm
-
-for running the service:
-see included gitea.service
-
-for upgrades:
-# guix pull
-# systemctl restart gitea.service
diff --git a/gn/services/gitea-container.scm b/gn/services/gitea-container.scm
deleted file mode 100644
index 5e707ec..0000000
--- a/gn/services/gitea-container.scm
+++ /dev/null
@@ -1,94 +0,0 @@
-(define-module (gn services gitea-container))
-
-(use-modules (gnu)
- (gn packages gitea)
- (guix records)
- (ice-9 match))
-(use-service-modules base networking shepherd)
-
-(define %GITEA_WORK_DIR "/var/lib/git/gitea")
-(define-record-type* <gitea-configuration>
- gitea-configuration
- make-gitea-configuration
- gitea-configuration?
- (package gitea-configuration-package ; package
- (default gitea))
- (work-dir gitea-configuration-work-dir ; string
- (default %GITEA_WORK_DIR))
- (port gitea-configuration-port ; number
- (default 3300)))
-
-(define gitea-activation
- (match-lambda
- (($ <gitea-configuration> package work-dir port)
- #~(begin
- (use-modules (guix build utils))
- (let ((%user (getpwnam "gitea")))
- ;; Prepare the environment for gitea:
- ;; https://docs.gitea.io/en-us/install-from-binary/
- (unless (directory-exists? #$work-dir)
- (mkdir-p #$work-dir)
- ;; These two are supposed to be recursive.
- (chown #$work-dir (passwd:uid %user) (passwd:gid %user))
- (chmod #$work-dir #o750)))))))
-
-(define gitea-shepherd-service
- (match-lambda
- (($ <gitea-configuration> package work-dir port)
- (list (shepherd-service
- (documentation "Run the Gitea server.")
- (requirement '(networking))
- (provision '(gitea))
- (start #~(make-forkexec-constructor
- (list
- #$(file-append package "/bin/gitea")
- "--port" #$(number->string port))
- #:environment-variables
- (list (string-append "GITEA_WORK_DIR=" #$work-dir)
- (string-append "HOME=" #$work-dir))
- #:user "gitea"
- #:group "git"))
- (stop #~(make-kill-destructor)))))))
-
-(define gitea-service-type
- (service-type
- (name 'gitea)
- (extensions
- (list (service-extension shepherd-root-service-type
- gitea-shepherd-service)
- (service-extension activation-service-type
- gitea-activation)))
- (description
- "Run a Gitea server.")
- (default-value (gitea-configuration))))
-
-
-(operating-system
- (host-name "gitea")
- (timezone "Etc/UTC")
- (locale "en_US.utf8")
-
- (bootloader (bootloader-configuration
- (bootloader grub-bootloader)
- (targets '("does-not-matter"))))
- (file-systems %base-file-systems)
- ;; No firmware for VMs or containers.
- (firmware '())
-
- ;; The user and group names aren't important, but the user uid and group id
- ;; NEED to match the directory outside of the container.
- (users (cons (user-account
- (name "gitea")
- (group "gitea")
- ;(system? #t)
- (uid 1021))
- %base-user-accounts))
-
- (groups (cons (user-group
- (name "git")
- ;(system? #t)
- (id 998))
- %base-groups))
-
- (services (list (service dhcp-client-service-type)
- (service gitea-service-type))))
diff --git a/gn/services/gitea-dump.service b/gn/services/gitea-dump.service
deleted file mode 100644
index c177334..0000000
--- a/gn/services/gitea-dump.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Backup Gitea git server
-Wants=gitea.service
-
-[Service]
-Type=oneshot
-Environment="GITEA_COMMAND=/usr/local/guix-profiles/gitea/bin/gitea"
-ExecStart=/bin/su -l gitea -c 'GITEA_WORK_DIR=/var/lib/git/gitea HOME=/var/lib/git/gitea ${GITEA_COMMAND} dump'
-
-[Install]
-WantedBy=multi-user.target
diff --git a/gn/services/gitea-dump.timer b/gn/services/gitea-dump.timer
deleted file mode 100644
index 0fa0f29..0000000
--- a/gn/services/gitea-dump.timer
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Backup Gitea git server timer
-
-[Timer]
-OnBootSec=15m
-OnUnitInactiveSec=1day
-
-[Install]
-WantedBy=default.target
diff --git a/gn/services/gitea-nocontainer.service b/gn/services/gitea-nocontainer.service
deleted file mode 100644
index 6784e51..0000000
--- a/gn/services/gitea-nocontainer.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Gitea git server and web ui
-Wants=guix-daemon.service
-
-[Service]
-Environment="GITEA_COMMAND=/usr/local/guix-profiles/gitea/bin/gitea"
-ExecStart=/bin/su -l gitea -c 'GITEA_WORK_DIR=/var/lib/git/gitea HOME=/var/lib/git/gitea ${GITEA_COMMAND} --port 3300'
-
-[Install]
-WantedBy=multi-user.target
diff --git a/gn/services/gitea.service b/gn/services/gitea.service
deleted file mode 100644
index ee596dc..0000000
--- a/gn/services/gitea.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Gitea git server and web ui
-Wants=guix-daemon.service
-
-[Service]
-Environment="GITEA_COMMAND=$(/var/guix/profiles/per-user/efraimf/current-guix/bin/guix system container /home/efraimf/workspace/guix-bioinformatics/gn/services/gitea-container.scm --share=/var/lib/git=/var/lib/git --network)"
-ExecStart=/bin/bash -c '${GITEA_COMMAND}'
-
-[Install]
-WantedBy=multi-user.target
diff --git a/gn/services/gn1-httpd-config.scm b/gn/services/gn1-httpd-config.scm
deleted file mode 100644
index 6b2397d..0000000
--- a/gn/services/gn1-httpd-config.scm
+++ /dev/null
@@ -1,136 +0,0 @@
-(define-module (gn services gn1-httpd-config)
- #:export (%default-httpd22-modules
- GN1-httpd-config))
-
-(use-modules (gnu)
- (ice-9 match)
- (gn packages genenetwork)
- (past packages web))
-(use-service-modules web)
-
-(define %default-httpd22-modules
- (map (match-lambda
- ((name file)
- (httpd-module
- (name name)
- (file file))))
- '(("authn_file_module" "modules/mod_authn_file.so")
- ("authn_dbm_module" "modules/mod_authn_dbm.so")
- ("authn_anon_module" "modules/mod_authn_anon.so")
- ("authn_dbd_module" "modules/mod_authn_dbd.so")
- ("authn_default_module" "modules/mod_authn_default.so")
- ("authz_host_module" "modules/mod_authz_host.so")
- ("authz_groupfile_module" "modules/mod_authz_groupfile.so")
- ("authz_user_module" "modules/mod_authz_user.so")
- ("authz_dbm_module" "modules/mod_authz_dbm.so")
- ("authz_owner_module" "modules/mod_authz_owner.so")
- ("authz_default_module" "modules/mod_authz_default.so")
- ("auth_basic_module" "modules/mod_auth_basic.so")
- ("auth_digest_module" "modules/mod_auth_digest.so")
- ("dbd_module" "modules/mod_dbd.so")
- ("dumpio_module" "modules/mod_dumpio.so")
- ("reqtimeout_module" "modules/mod_reqtimeout.so")
- ("ext_filter_module" "modules/mod_ext_filter.so")
- ("include_module" "modules/mod_include.so")
- ("filter_module" "modules/mod_filter.so")
- ("substitute_module" "modules/mod_substitute.so")
- ("log_config_module" "modules/mod_log_config.so")
- ("logio_module" "modules/mod_logio.so")
- ("env_module" "modules/mod_env.so")
- ("mime_magic_module" "modules/mod_mime_magic.so")
- ("expires_module" "modules/mod_expires.so")
- ("headers_module" "modules/mod_headers.so")
- ("ident_module" "modules/mod_ident.so")
- ("setenvif_module" "modules/mod_setenvif.so")
- ("version_module" "modules/mod_version.so")
- ("ssl_module" "modules/mod_ssl.so")
- ("mime_module" "modules/mod_mime.so")
- ("dav_module" "modules/mod_dav.so")
- ("status_module" "modules/mod_status.so")
- ("autoindex_module" "modules/mod_autoindex.so")
- ("asis_module" "modules/mod_asis.so")
- ("info_module" "modules/mod_info.so")
- ("cgi_module" "modules/mod_cgi.so")
- ("dav_fs_module" "modules/mod_dav_fs.so")
- ("vhost_alias_module" "modules/mod_vhost_alias.so")
- ("negotiation_module" "modules/mod_negotiation.so")
- ("dir_module" "modules/mod_dir.so")
- ("imagemap_module" "modules/mod_imagemap.so")
- ("actions_module" "modules/mod_actions.so")
- ("speling_module" "modules/mod_speling.so")
- ("userdir_module" "modules/mod_userdir.so")
- ("alias_module" "modules/mod_alias.so")
- ("rewrite_module" "modules/mod_rewrite.so"))))
-
-; Alternative setup
-; (let* ((gn1-user "wrk")
-; (gn1-source "/home/wrk/gn1-pjotr/gnshare/gn")
-; (gn1-server "gn1-pjotr.genenetwork.org")
-; (gn1-port "8043"))
-
-
-(define GN1-httpd-config
- (let* ((gn1-user "gn1")
- (gn1-source (string-append "/home/" gn1-user "/production/gnshare/gn"))
- (gn1-server "gn1.genenetwork.org")
- (gn1-port "8042"))
- (httpd-config-file
- (server-name gn1-server)
- ;; Defaults to httpd, should be same as 'package' above to launch service.
- (server-root httpd22-with-mod-python)
- (user gn1-user)
- (group "users")
- (pid-file (string-append "/tmp/guix-gn1/httpd-gn1-source-" gn1-port ".pid"))
- (error-log (string-append "/tmp/guix-gn1/httpd-gn1-source-error-" gn1-port ".log"))
- (listen `(,gn1-port))
- (modules (cons*
- (httpd-module
- (name "python_module")
- (file "modules/mod_python.so"))
- %default-httpd22-modules))
- (extra-config (list "\
-TypesConfig " httpd22-with-mod-python "/etc/httpd/mime.types
-DefaultType application/octet-stream
-# DocumentRoot MUST NOT be in the PythonPath. Because gn1-source must be in PythonPath we leave the document-root keyword above unset.
-PythonPath \"sys.path+['/run/current-system/profile/lib/python2.4', '/run/current-system/profile/lib/python2.4/site-packages', '" gn1-source "/web/webqtl']\"
-# same as 'listen' above
-NameVirtualHost *:" gn1-port "
-<VirtualHost *:" gn1-port ">
- DocumentRoot "gn1-source "/web/
- Alias /images "gn1-source "/web/images/
- Alias /javascript "gn1-source "/web/javascript/
- Alias /css "gn1-source "/web/css/
- <Directory "gn1-source "/web/images>
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
- <Directory "gn1-source "/web/javascript>
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
- <Directory "gn1-source "/web/css>
- AllowOverride None
- Order allow,deny
- Allow from all
- </Directory>
-</VirtualHost>
-<Directory " gn1-source "/web/webqtl>
- #what is the difference between these two?
- AddHandler mod_python .py
- #SetHandler python-program
- #publisher has more debug information
- PythonHandler " gn1-source "/web/webqtl/main.py
- #PythonHandler mod_python.publisher
- #PythonHandler mod_python.cgihandler
- PythonOption mod_python.session.session_type FileSession
- # only while debugging:
- PythonDebug On
-</Directory>
-# only while debugging:
-# <Location /mpinfo>
-# SetHandler python-program
-# PythonHandler mod_python.testhandler
-# </Location>"
-)))))
diff --git a/gn/services/monitoring.scm b/gn/services/monitoring.scm
new file mode 100644
index 0000000..9475d31
--- /dev/null
+++ b/gn/services/monitoring.scm
@@ -0,0 +1,49 @@
+(define-module (gn services monitoring)
+ #:use-module (gnu)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu services databases)
+ #: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 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))))
diff --git a/gn/services/pluto.scm b/gn/services/pluto.scm
index 420e2cf..c6dc40f 100644
--- a/gn/services/pluto.scm
+++ b/gn/services/pluto.scm
@@ -4,7 +4,8 @@
(gn packages julia)
(guix modules)
(guix records)
- (ice-9 match))
+ (ice-9 match)
+ ((gnu packages nss) #:select (nss-certs)))
(use-service-modules shepherd)
(use-package-modules
admin
diff --git a/gn/services/rn6-assembly-container.scm b/gn/services/rn6-assembly-container.scm
deleted file mode 100644
index b0b5f1d..0000000
--- a/gn/services/rn6-assembly-container.scm
+++ /dev/null
@@ -1,24 +0,0 @@
-(define-module (gn services rn6-assembly-container))
-
-(use-modules (gnu)
- (gn packages bioinformatics)
- (gn services rshiny))
-
-(operating-system
- (host-name "rn6-assembly")
- (timezone "Etc/UTC")
- (locale "en_US.utf8")
-
- (bootloader (bootloader-configuration
- (bootloader grub-bootloader)
- (targets '("does-not-matter"))))
- (file-systems %base-file-systems)
- ;; No firmware for VMs.
- (firmware '())
- ;; We only need a few packages inside the container.
- (packages '())
-
- (services (list (service rshiny-service-type
- (rshiny-configuration
- (package rn6-assembly-error-app)
- (binary "rn6-assembly-error-app"))))))
diff --git a/gn/services/rshiny.scm b/gn/services/rshiny.scm
deleted file mode 100644
index 90e4728..0000000
--- a/gn/services/rshiny.scm
+++ /dev/null
@@ -1,86 +0,0 @@
-(define-module (gn services rshiny)
- #:export (<rshiny-configuration>
- rshiny-configuration
- rshiny-configuration?
- rshiny-configuration-package
- rshiny-configuration-binary
- rshiny-shepherd-service
- rshiny-service-type))
-
-(use-modules (gnu)
- (guix records)
- (ice-9 match))
-(use-service-modules shepherd)
-(use-package-modules cran)
-
-(define-record-type* <rshiny-configuration>
- rshiny-configuration
- make-rshiny-configuration
- rshiny-configuration?
- (package rshiny-configuration-package ; package
- (default r-shiny))
- (binary rshiny-configuration-binary ; string
- (default "rshiny")))
-
-(define rshiny-shepherd-service
- (match-lambda
- (($ <rshiny-configuration> package binary)
- (list
- (shepherd-service
- (documentation (string-append "R-Shiny service for " binary))
- (provision (list (symbol-append 'rshiny- (string->symbol
- (string-take binary 9)))))
- (requirement '(networking))
- (start
- #~(exec-command
- (list
- #$(string-append "/run/current-system/profile/bin/" binary))
- ;#:log-file #$(string-append "/var/log/" binary ".log") ; kills shepherd
- #:environment-variables
- (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
- ;; Now lets try it with fork+exec
- ;; Outcome: shepherd says failed, runs in the background.
- ;(start
- ; #~(fork+exec-command
- ; (list
- ; #$(string-append "/run/current-system/profile/bin/" binary))
- ; #:environment-variables
- ; (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
- ;; More fork+exec trials, this time with a log file:
- ;; Outcome: shepherd says failed, runs in the background, log populated.
- ;(start
- ; #~(fork+exec-command
- ; (list
- ; "/run/current-system/profile/bin/nohup"
- ; #$(string-append "/run/current-system/profile/bin/" binary) "&")
- ; #:log-file #$(string-append "/var/log/" binary ".log")
- ; #:environment-variables
- ; (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
- ;; Now lets try it with make-forkexec:
- ;; Outcome: Kills shepherd, does not run in the background.
- ;(start
- ; #~(make-forkexec-command
- ; (list
- ; "/run/current-system/profile/bin/nohup"
- ; #$(string-append "/run/current-system/profile/bin/" binary) "&")
- ; "/run/current-system/profile/bin/bash" "-c"
- ; #$(string-append "/run/current-system/profile/bin/" binary))
- ; #:environment-variables
- ; (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
- (stop #~(make-kill-destructor)))))))
-
-(define rshiny-service-type
- (service-type
- (name 'rshiny)
- (extensions
- (list
- (service-extension shepherd-root-service-type
- rshiny-shepherd-service)
- (service-extension profile-service-type
- ;; We want the package installed so that it
- ;; pulls in the propagated inputs as well.
- (lambda (config)
- (list
- (rshiny-configuration-package config))))))
- (description
- "Run an R-Shiny webapp as a Guix Service.")))
diff --git a/gn/services/science.scm b/gn/services/science.scm
deleted file mode 100644
index a28f7c5..0000000
--- a/gn/services/science.scm
+++ /dev/null
@@ -1,387 +0,0 @@
-(define-module (gn services science)
- #:export (munge-configuration
- munge-configuration?
- munge-service-type
-
- slurm-configuration
- slurm-configuration?
- slurm-service-type))
-
-(use-modules (gnu)
- (guix records)
- (ice-9 match))
-(use-service-modules shepherd)
-(use-package-modules admin parallel)
-
-;; TODO: Make id/uid configurable
-(define %munge-accounts
- (list (user-group
- (name "munge")
- (id 900)
- (system? #t))
- (user-account
- (name "munge")
- (group "munge")
- (uid 900)
- (system? #t)
- (comment "Munge User")
- (home-directory "/var/lib/munge")
- (shell (file-append shadow "/sbin/nologin")))))
-
-(define-record-type* <munge-configuration>
- munge-configuration
- make-munge-configuration
- munge-configuration?
- (package munge-configuration-package
- (default munge))
- (socket munge-configuration-socket
- (default "/var/run/munge/munge.socket.2"))
- (pid-file munge-configuration-pid-file
- (default "/var/run/munge/munged.pid"))
- (log-file munge-configuration-log-file
- (default "/var/log/munge/munged.log"))
- (key munge-configuration-key
- (default "/etc/munge/munge.key")))
-
-(define (munge-activation config)
- "Return the activation GEXP for CONFIG for the munge service."
- (with-imported-modules '((guix build utils))
- #~(begin
- (define %user (getpw "munge"))
- (let* ((homedir (passwd:dir %user))
- (key #$(munge-configuration-key config))
- (etc-dir (dirname key))
- (run-dir (dirname #$(munge-configuration-pid-file config)))
- (log-dir (dirname #$(munge-configuration-log-file config))))
- (for-each (lambda (dir)
- (unless (file-exists? dir)
- (mkdir-p dir))
- (chown dir (passwd:uid %user) (passwd:gid %user))
- (chmod dir #o700))
- (list homedir etc-dir log-dir))
- (unless (file-exists? key)
- (invoke #$(file-append (munge-configuration-package config)
- "/sbin/mungekey")
- "--create"
- (string-append "--bits=" (number->string (* 8 1024))) ; bits, not bytes
- (string-append "--keyfile=" key)))
- (chown key (passwd:uid %user) (passwd:gid %user))
- (chmod key #o400)
- (unless (file-exists? run-dir)
- (mkdir-p run-dir))
- (chown run-dir (passwd:uid %user) (passwd:gid %user))))))
-
-(define munge-shepherd-service
- (match-lambda
- (($ <munge-configuration> package socket pid-file log-file key)
- (list
- (shepherd-service
- (documentation "Munge server")
- (provision '(munge))
- (requirement '(loopback user-processes))
- (start #~(make-forkexec-constructor
- (list #$(file-append package "/sbin/munged")
- "--foreground" ; "--force"
- (string-append "--socket=" #$socket)
- (string-append "--key-file=" #$key)
- (string-append "--pid-file=" #$pid-file)
- (string-append "--log-file=" #$log-file))
- #:user "munge"
- #:group "munge"
- #:pid-file #$pid-file
- #:log-file #$log-file))
- (stop #~(lambda _
- (not (and
- (list #$(file-append package "/sbin/munged")
- (string-append "--socket=" #$socket)
- "--stop")
- ;; This seems to not be removed by default.
- (delete-file (string-append #$socket ".lock"))))))
- (auto-start? #t))))))
-
-(define munge-service-type
- (service-type
- (name 'munge)
- (extensions
- (list
- (service-extension shepherd-root-service-type
- munge-shepherd-service)
- (service-extension activation-service-type
- munge-activation)
- (service-extension account-service-type
- (const %munge-accounts))
- (service-extension profile-service-type
- (compose list munge-configuration-package))))
- (default-value (munge-configuration))
- (description
- "Run @url{https://dun.github.io/munge/,Munge}, an authentication service.")))
-
-;; Initial documentation for upstreaming:
-;@subsubheading Munge
-;
-;The following example describes a Munge service with the default configuration.
-;
-;@lisp
-;(service munge-service-type)
-;@end lisp
-;
-;@deftp {Data Type} munge-configuration
-;Data type representing the configuration for the @code{munge-service-type}.
-;
-;@table @asis
-;@item @code{package}
-;Munge package to use for the service.
-;
-;@item @code{socket} (default "/var/run/munge/munge.socket.2")
-;The socket Munge should use.
-;
-;@item @code{pid-file} (default "/var/run/munge/munged.pid")
-;The PID file which Munge should use.
-;
-;@item @code{log-file} (default "/var/log/munge/munged.log")
-;The location of the log file Munge should write to.
-;
-;@item @code{key} (default "/etc/munge/munge.key")
-;The location of the shared key Munge should use. Since this a shared secret key between the different nodes it should not be added to the store.
-;
-;@end table
-;@end deftp
-
-
-;; TODO: Make id/uid configurable
-(define %slurm-accounts
- (list (user-group
- (name "slurm")
- (id 901)
- (system? #t))
- (user-account
- (name "slurm")
- (group "slurm")
- (uid 901)
- (system? #t)
- (comment "Slurm User")
- (home-directory "/var/lib/slurm"))))
-
-(define-record-type* <slurm-configuration>
- slurm-configuration
- make-slurm-configuration
- slurm-configuration?
- ;; As I understand it, all the services depend on also running slurmd on
- ;; that machine. Therefore it makes sense to have one config section with
- ;; "common" and "extended" options. With all the possible options and
- ;; versions we only cover the ones which affect the services.
- ;; We keep the capitalization used in the config files to make discovery easier.
- (package slurm-configuration-package
- (default slurm))
- (slurm-conf-file slurm-configuration-slurm-conf-file
- (default "/etc/slurm/slurm.conf"))
- (SlurmdLogFile slurm-configuration-slurmd-log-file
- (default #f)) ; #f for syslog
- (SlurmdPidFile slurm-configuration-slurmd-pidfile
- (default "/var/run/slurmd.pid"))
-
- (SlurmdSpoolDir slurm-configuration-slurmd-spooldir
- (default "/var/spool/slurmd"))
-
- (run-slurmctld? slurm-configuration-run-slurmctld
- (default #f))
- (SlurmctldLogFile slurm-configuration-slurmctld-log-file
- (default #f)) ; #f for syslog
- (SlurmctldPidFile slurm-configuration-slurmctld-pidfile
- (default "/var/run/slurmctld.pid"))
-
- (run-slurmdbd? slurm-configuration-run-slurmdbd
- (default #f))
- (slurmdbd-conf-file slurm-configuration-slurmdbd-conf-file
- (default "/etc/slurm/slurmdbd.conf"))
- (slurmdbd-PidFile slurm-configuration-slurmdbd-pidfile
- (default "/var/run/slurmdbd.pid"))
-
- (ClusterName slurm-configuration-clustername
- (default #f)) ; string
- (SlurmUser slurm-configuration-slurmuser
- (default #f)) ; string
- (SlurmctldHost slurm-configuration-slurmctldhost
- (default #f)) ; list of strings
- (slurm-extra-content slurm-configuration-slurm-extra-content
- (default ""))
- (cgroup-extra-content slurm-configuration-cgroup-extra-content
- (default ""))
- (DbdHost slurm-configuration-dbdhost
- (default #f)) ; string
- (StorageType slurm-configuration-storagetype
- (default #f)) ; string
- (slurmdbd-extra-content slurm-configuration-slurmdbd-extra-content
- (default "")))
-
-
-(define (%slurm.conf config)
- "Return a slurm.conf configuration file corresponding to CONFIG."
- (computed-file
- "slurm_conf"
- #~(begin
- (use-modules (srfi srfi-26))
- (call-with-output-file #$output
- (lambda (port)
- (display "# Generated by 'slurm-service'.\n" port)
- (format port "ClusterName=~a\n"
- #$(slurm-configuration-clustername config))
- (for-each
- (cut format port "SlurmCtldHost=~a\n" <>)
- '#$(slurm-configuration-slurmctldhost config))
- (format port "SlurmdSpoolDir=~a\n"
- #$(slurm-configuration-slurmd-spooldir config))
- (format port "SlurmdPidFile=~a\n"
- #$(slurm-configuration-slurmd-pidfile config))
- (when #$(slurm-configuration-slurmd-log-file config)
- (format port "SlurmdLogFile=~a\n"
- #$(slurm-configuration-slurmd-log-file config)))
- (format port "SlurmctldPidFile=~a\n"
- #$(slurm-configuration-slurmctld-pidfile config))
- (when #$(slurm-configuration-slurmctld-log-file config)
- (format port "SlurmctldLogFile=~a\n"
- #$(slurm-configuration-slurmctld-log-file config)))
- (format port "SlurmUser=~a\n"
- #$(slurm-configuration-slurmuser config))
- (format port "\n# Extra content here:\n~a\n"
- #$(slurm-configuration-slurm-extra-content config))
- #t)))))
-
-(define (%cgroup.conf config)
- "Return a cgroup.conf configuration file corresponding to CONFIG."
- (computed-file
- "cgroup_conf"
- #~(begin
- (call-with-output-file #$output
- (lambda (port)
- (display "# Generated by 'slurm-service'.\n" port)
- (format port "~a\n"
- #$(slurm-configuration-cgroup-extra-content config)))))))
-
-(define (%slurmdbd.conf config)
- "Return a slurm.conf configuration file corresponding to CONFIG."
- (computed-file
- "slurmdbd_conf"
- #~(begin
- (call-with-output-file #$output
- (lambda (port)
- (display "# Generated by 'slurm-service'.\n" port)
- (format port "DbdHost=~a\n"
- #$(slurm-configuration-dbdhost config))
- (format port "StorageType=~a\n"
- #$(slurm-configuration-storagetype config))
- (format port "SlurmUser=~a\n"
- #$(slurm-configuration-slurmuser config))
- (format port "PidFile=~a\n"
- #$(slurm-configuration-slurmdbd-pidfile config))
- (format port "\n# Extra content here:\n~a\n"
- #$(slurm-configuration-slurmdbd-extra-content config))
- #t)))))
-
-(define (slurm-activation config)
- "Return the activation GEXP for CONFIG for the slurm service."
- (with-imported-modules '((guix build utils))
- #~(begin
- (use-modules (guix build utils))
- (let* ((%user (getpw "slurm"))
- (spooldir #$(slurm-configuration-slurmd-spooldir config))
- (logdir (dirname (or #$(slurm-configuration-slurmd-log-file config)
- #$(slurm-configuration-slurmctld-log-file config)
- "/var/log/slurmd.log")))
- (piddir (dirname #$(slurm-configuration-slurmd-pidfile config))))
- (unless (file-exists? spooldir)
- (mkdir-p spooldir))
- (chown spooldir (passwd:uid %user) (passwd:gid %user))
- (when logdir
- (unless (file-exists? logdir)
- (mkdir-p logdir))
- (when (> (string-length logdir) (string-length "/var/log"))
- (chown logdir (passwd:uid %user) (passwd:gid %user))))
- (unless (file-exists? piddir)
- (mkdir-p piddir)))
- ;; /etc/slurm/slurm.conf needs to exist.
- (file-exists? #$(slurm-configuration-slurm-conf-file config))
- ;; slurmdbd activation
- (when #$(slurm-configuration-run-slurmdbd config)
- (file-exists?
- #$(slurm-configuration-slurmdbd-conf-file config))))))
-
-(define slurmd-shepherd-service
- (match-lambda
- (($ <slurm-configuration> package slurm-conf-file _ slurmd-pidfile)
- (list
- (shepherd-service
- (documentation "Slurmd server")
- (provision '(slurmd))
- (requirement '(loopback munge))
- (start #~(make-forkexec-constructor
- (list #$(file-append package "/sbin/slurmd")
- "-f" #$slurm-conf-file)
- #:pid-file #$slurmd-pidfile))
- (stop #~(make-kill-destructor)))))))
-
-(define slurmctld-shepherd-service
- (match-lambda
- (($ <slurm-configuration> package slurm-conf-file _ _ _ run-slurmctld? _ slurmctld-pidfile)
- (list
- (shepherd-service
- (documentation "Slurmctld server")
- (provision '(slurmctld))
- (requirement '(loopback munge))
- (start #~(make-forkexec-constructor
- (list #$(file-append package "/sbin/slurmctld")
- "-f" #$slurm-conf-file)
- #:pid-file #$slurmctld-pidfile))
- (stop #~(make-kill-destructor))
- (auto-start? run-slurmctld?))))))
-
-(define slurmdbd-shepherd-service
- (match-lambda
- (($ <slurm-configuration> package _ _ _ _ _ _ _ run-slurmdbd? _ slurmdbd-pidfile)
- (list
- (shepherd-service
- (documentation "Slurmdbd server")
- (provision '(slurmdbd))
- (requirement '(loopback munge))
- (start #~(make-forkexec-constructor
- (list #$(file-append package "/sbin/slurmdbd"))
- #:pid-file #$slurmdbd-pidfile))
- (stop #~(make-kill-destructor))
- (auto-start? run-slurmdbd?))))))
-
-(define (slurm-services-to-run config)
- (append (slurmd-shepherd-service config)
- (if (slurm-configuration-run-slurmctld config)
- (slurmctld-shepherd-service config)
- '())
- (if (slurm-configuration-run-slurmdbd config)
- (slurmdbd-shepherd-service config)
- '())))
-
-(define (slurm-etc-service config)
- (append
- `(("slurm/slurm.conf" ,(%slurm.conf config))
- ("slurm/cgroup.conf" ,(%cgroup.conf config)))
- (if (slurm-configuration-run-slurmdbd config)
- `(("slurm/slurmdbd.conf" ,(%slurmdbd.conf config)))
- '())))
-
-(define slurm-service-type
- (service-type
- (name 'slurm)
- (extensions
- (list
- (service-extension shepherd-root-service-type
- slurm-services-to-run)
- (service-extension activation-service-type
- slurm-activation)
- (service-extension etc-service-type
- slurm-etc-service)
- (service-extension account-service-type
- (const %slurm-accounts))
- (service-extension profile-service-type
- (compose list slurm-configuration-package))))
- (default-value (slurm-configuration))
- (description
- "Run @url{https://slurm.schedmd.com/slurm.html,Slurm}, a workflow manager
-service. Optionally also run @code{slurmctld} and @code{slurmdbd}.")))
diff --git a/gn/services/singlecell-container.scm b/gn/services/singlecell-container.scm
deleted file mode 100644
index 8190926..0000000
--- a/gn/services/singlecell-container.scm
+++ /dev/null
@@ -1,27 +0,0 @@
-;; Not ready for deployment yet
-;; Warning: Error in <Anonymous>: error in evaluating the argument 'object' in selecting a method for function 'summary':
-
-(define-module (gn services singlecell-container))
-
-(use-modules (gnu)
- (gn packages bioinformatics)
- (gn services rshiny))
-
-(operating-system
- (host-name "singlecell")
- (timezone "Etc/UTC")
- (locale "en_US.utf8")
-
- (bootloader (bootloader-configuration
- (bootloader grub-bootloader)
- (targets '("does-not-matter"))))
- (file-systems %base-file-systems)
- ;; No firmware for VMs.
- (firmware '())
- ;; We only need a few packages inside the container.
- (packages '())
-
- (services (list (service rshiny-service-type
- (rshiny-configuration
- (package singlecellrshiny)
- (binary "singlecellrshiny"))))))