aboutsummaryrefslogtreecommitdiff
path: root/shepherd/init.scm
diff options
context:
space:
mode:
authorEfraim Flashner2020-03-02 08:01:35 +0000
committerShepherd2020-03-02 08:01:35 +0000
commit8b001c765e158fa2d0d71eede1fdc749d965e39b (patch)
tree3c5be196946fe094c8106ca8ae040b0e8c0a9e75 /shepherd/init.scm
parent1ce2c18ef1bc739c64b16e44a0cd2c404eade42e (diff)
downloadgn-shepherd-services-8b001c765e158fa2d0d71eede1fdc749d965e39b.tar.gz
shepherd: modularize the services
Diffstat (limited to 'shepherd/init.scm')
-rw-r--r--shepherd/init.scm107
1 files changed, 9 insertions, 98 deletions
diff --git a/shepherd/init.scm b/shepherd/init.scm
index 232af4a..b458e59 100644
--- a/shepherd/init.scm
+++ b/shepherd/init.scm
@@ -1,102 +1,13 @@
-(use-modules (shepherd service))
+(use-modules (shepherd service)
+ ((ice-9 ftw) #:select (scandir)))
-(define date+%s
- (strftime "%s" (gmtime (current-time))))
-
-(define bnw
- (make <service>
- #:provides '(bnw)
- #:docstring "Run the Beyesian Network Webserver"
- #:start (make-forkexec-constructor
- '("/usr/bin/sudo" "/home/shepherd/run_bnw.sh")
- #:log-file (string-append "/home/shepherd/logs/bnw-"
- date+%s ".log"))
- #:stop (make-kill-destructor)
- #:respawn? #t))
-(register-services bnw)
-
-(define gitea
- (make <service>
- #:provides '(gitea)
- #:docstring "Run a Gitea instance"
- #:start (make-forkexec-constructor
- '("/usr/bin/sudo" "/home/shepherd/run_gitea.sh")
- #:log-file (string-append "/home/shepherd/logs/gitea-"
- date+%s ".log"))
- #:stop (make-kill-destructor)
- #:respawn? #t))
-(register-services gitea)
-
-(define ipfs
- (make <service>
- #:provides '(ipfs)
- #:docstring "Run the IPFS daemon"
- #:start (make-forkexec-constructor
- '("/usr/bin/sudo" "/home/shepherd/run_ipfs.sh")
- #:log-file (string-append "/home/shepherd/logs/ipfs-"
- date+%s ".log"))
- #:stop (make-kill-destructor)
- #:respawn? #t))
-(register-services ipfs)
-
-(define mcron
- (make <service>
- #:provides '(mcron)
- #:docstring "Run the mcron daemon"
- #:start (make-forkexec-constructor
- '("/var/guix/profiles/per-user/shepherd/guix-profile/bin/mcron")
- #:log-file (string-append "/home/shepherd/logs/mcron-"
- date+%s ".log"))
- #:stop (make-kill-destructor)
- #:respawn? #t))
-(register-services mcron)
-
-(define power
- (make <service>
- #:provides '(power)
- #:docstring "Run the BXD Power Calculator app"
- #:start (make-forkexec-constructor
- ;'(system* "/var/guix/profiles/per-user/shepherd/current-guix/bin/guix" "environment" "--ad-hoc" "rn6-assembly-error-app" "--" "/bin/sh -c 'R_LIBS_USER=$GUIX_ENVIRONMENT/site-library/ rn6-assembly-error-app'")
- '("/home/shepherd/run_power.sh")
- #:log-file (string-append "/home/shepherd/logs/power-"
- date+%s ".log"))
- #:stop (make-kill-destructor)
- #:respawn? #t))
-(register-services power)
-
-(define rn6app
- (make <service>
- #:provides '(rn6app)
- #:docstring "Run RN6 Assembly Error app"
- #:start (make-forkexec-constructor
- ;'(system* "/var/guix/profiles/per-user/shepherd/current-guix/bin/guix" "environment" "--ad-hoc" "rn6-assembly-error-app" "--" "/bin/sh -c 'R_LIBS_USER=$GUIX_ENVIRONMENT/site-library/ rn6-assembly-error-app'")
- '("/home/shepherd/run_rn6app.sh")
- #:log-file (string-append "/home/shepherd/logs/rn6app-"
- date+%s ".log"))
- #:stop (make-kill-destructor)
- #:respawn? #t))
-(register-services rn6app)
-
-(define test-upgrade
- (make <service>
- #:provides '(test-upgrade)
- #:docstring "Build all the services to make sure they work on an upgrade"
- #:start (make-forkexec-constructor
- (when (zero? (system* "guix" "build" "-L" "/home/shepherd/guix-bioinformatics"
- "--no-grafts" "bnw" "gitea" "go-ipfs" "edirect-gn"
- "bxd-power-calculator-app" "rn6-assembly-error-app"))
- (zero? (system* "guix" "system" "-L" "/home/shepherd/guix-bioinformatics"
- "container" "/home/shepherd/guix-bioinformatics/gn/services/bnw-container.scm"
- "--share=/home/shepherd/logs/bnw-server=/var/log" "--network")))
- #:log-file (string-append "/home/shepherd/logs/test-upgrade-"
- date+%s ".log"))
- #:one-shot? #t))
-(register-services test-upgrade)
+;; Load all the files in the directory 'init.d' with a suffix '.scm'.
+(for-each
+ (lambda (file)
+ (load (string-append "init.d/" file)))
+ (scandir (string-append (dirname (current-filename)) "/init.d")
+ (lambda (file)
+ (string-suffix? ".scm" file))))
;; Send shepherd into the background
(action 'shepherd 'daemonize)
-
-;; Services to start when shepherd starts:
-;; Add the name of each service that should be started to the list
-;; below passed to 'for-each'.
-(for-each start '(bnw gitea ipfs mcron power rn6app))