From 5081f8853d456943db9a976aef8cb3d3979e1c38 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Tue, 30 Nov 2021 17:06:31 +0530 Subject: gnu: services: Add virtuoso service. * gn/services/databases.scm: New file. --- gn/services/databases.scm | 76 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 gn/services/databases.scm diff --git a/gn/services/databases.scm b/gn/services/databases.scm new file mode 100644 index 0000000..64d2fe4 --- /dev/null +++ b/gn/services/databases.scm @@ -0,0 +1,76 @@ +(define-module (gn services databases) + #:use-module (gnu) + #:use-module (gnu packages admin) + #:use-module (gnu packages databases) + #:use-module (gnu services configuration) + #:use-module (gnu services shepherd) + #:use-module (guix packages) + #:export (virtuoso-configuration + virtuoso-configuration-package + virtuoso-configuration-http-server-port)) + +;;; +;;; Virtuoso +;;; + +(define-maybe non-negative-integer) + +(define (non-negative-integer? val) + (and (integer? val) + (not (negative? val)))) + +(define-configuration virtuoso-configuration + (package + (package virtuoso-ose) + "The virtuoso package.") + (http-server-port + (maybe-non-negative-integer 'disabled) + "The port on which to listen for HTTP connections.")) + +(define %virtuoso-accounts + (list (user-group (name "virtuoso") + (system? #t)) + (user-account + (name "virtuoso") + (group "virtuoso") + (system? #t) + (comment "Virtuoso user") + (home-directory "/var/lib/virtuoso") + (shell (file-append shadow "/sbin/nologin"))))) + +(define (virtuoso-shepherd-service config) + (shepherd-service + (documentation "Run Virtuoso.") + (provision '(virtuoso)) + (requirement '(networking)) + (start #~(make-forkexec-constructor + (list #$(file-append (virtuoso-configuration-package config) + "/bin/virtuoso-t") + "+foreground" + "+configfile" + #$(computed-file + "virtuoso.ini" + #~(call-with-output-file #$output + (lambda (port) + (when (not (eq? #$(virtuoso-configuration-http-server-port config) + 'disabled)) + (format port "[HTTPServer]~%") + (format port "ServerPort = ~a~%" + #$(virtuoso-configuration-http-server-port config))))))) + #:directory "/var/lib/virtuoso" + #:user "virtuoso" + #:group "virtuoso")) + (stop #~(make-kill-destructor)))) + +(define virtuoso-service-type + (service-type + (name 'virtuoso) + (description "Run Virtuoso.") + (extensions + (list (service-extension account-service-type + (const %virtuoso-accounts)) + (service-extension shepherd-root-service-type + (compose list virtuoso-shepherd-service)))) + (default-value (virtuoso-configuration)))) + + -- cgit v1.2.3