(use-modules (shepherd service)) (define date+%s (strftime "%s" (gmtime (current-time)))) (define bnw (make #: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 #: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 #: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 #: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 #: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 #: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 #: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) ;; 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))