diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2020-06-21 16:20:16 +0300 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2020-06-28 14:03:03 +0300 |
commit | 8f19e63f760fe02f9969225da2f3f3c36801218f (patch) | |
tree | 78f934f83d0af23c072ce2da2d17f2c02f9a4d84 /gnu/services | |
parent | 0dfc4612724f26c67ca0796b3e9ae5a4fca1c2a1 (diff) | |
download | guix-8f19e63f760fe02f9969225da2f3f3c36801218f.tar.gz guix-8f19e63f760fe02f9969225da2f3f3c36801218f.zip |
services: Add rshiny service.
* gnu/services/science.scm: New file.
(<rshiny-configuration>): New record.
(rshiny-shepherd-service-type): New variable.
* doc/guix.texi (Miscellaneous Services): Document it.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
Diffstat (limited to 'gnu/services')
-rw-r--r-- | gnu/services/science.scm | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/gnu/services/science.scm b/gnu/services/science.scm new file mode 100644 index 0000000000..94ff0f36f2 --- /dev/null +++ b/gnu/services/science.scm @@ -0,0 +1,57 @@ +(define-module (gnu services science) + #: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/"))) + (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."))) |