* gnu/services/authentication.scm (fprintd-configuration) (nslcd-configuration): Substitute file-like objects for package ones. * gnu/services/cgit.scm (cgit-configuration, opaque-cgit-configuration): Likewise. * gnu/services/cups.scm (package-list?, cups-configuration): Likewise. * gnu/services/dns.scm (verify-knot-configuration) (ddclient-configuration): Likewise. * gnu/services/docker.scm (docker-configuration): Likewise. * gnu/services/file-sharing.scm (transmission-daemon-configuration): Likewise. * gnu/services/getmail.scm (getmail-configuration): Likewise. * gnu/services/mail.scm (dovecot-configuration) (opaque-dovecot-configuration): Likewise. * gnu/services/messaging.scm (prosody-configuration) (opaque-prosody-configuration): Likewise. * gnu/services/monitoring.scm (zabbix-server-configuration) (zabbix-agent-configuration): Likewise. * gnu/services/networking.scm (opendht-configuration): Likewise. * gnu/services/pm.scm (tlp-configuration): Likewise. * gnu/services/telephony.scm (jami-configuration): Likewise. * gnu/services/virtualization.scm (libvirt-configuration) (qemu-guest-agent-configuration): Likewise. * gnu/services/vpn.scm (openvpn-client-configuration): Likewise.
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
| ;;; GNU Guix --- Functional package management for GNU
 | |
| ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 | |
| ;;;
 | |
| ;;; This file is part of GNU Guix.
 | |
| ;;;
 | |
| ;;; GNU Guix 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.
 | |
| ;;;
 | |
| ;;; GNU Guix 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| (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    ; file-like
 | |
|                     (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.")))
 |