From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Craven Subject: [PATCH 5/5] services: Add spice vdagent service. Date: Tue, 2 Aug 2016 15:45:31 +0200 Message-ID: <20160802134531.19272-5-david@craven.ch> References: <20160802134531.19272-1-david@craven.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:56186) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bUa1Z-0004cX-FF for guix-devel@gnu.org; Tue, 02 Aug 2016 09:46:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bUa1U-0000Xy-4f for guix-devel@gnu.org; Tue, 02 Aug 2016 09:46:24 -0400 Received: from so254-10.mailgun.net ([198.61.254.10]:37120) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bUa1S-0000Xb-Sj for guix-devel@gnu.org; Tue, 02 Aug 2016 09:46:20 -0400 In-Reply-To: <20160802134531.19272-1-david@craven.ch> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org Cc: David Craven * gnu/services/spice.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * doc/guix.texi (Various Services): New node. --- doc/guix.texi | 12 ++++++++ gnu/local.mk | 1 + gnu/services/spice.scm | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 gnu/services/spice.scm diff --git a/doc/guix.texi b/doc/guix.texi index 1622d71..eb87dde 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -9921,6 +9921,18 @@ Finally, @var{extra-options} is a list of additional command-line options passed to @command{lircd}. @end deffn +@cindex spice +@node Spice Service +@subsubheading Spice Service + +The @code{(gnu services spice)} module provides the following service. + +@deffn {Scheme Procedure} spice-vdagent-service [#:spice-vdagent] +Returns a service that runs @url{http://www.spice-space.org,VDAGENT}, a daemon +that enables sharing the clipboard with a vm and setting the guest display +resolution when the graphical console window resizes. +@end deffn + @subsubsection Dictionary Services The @code{(gnu services dict)} module provides the following service: diff --git a/gnu/local.mk b/gnu/local.mk index f94b123..306cf72 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -385,6 +385,7 @@ GNU_SYSTEM_MODULES = \ %D%/services/networking.scm \ %D%/services/shepherd.scm \ %D%/services/herd.scm \ + %D%/services/spice.scm \ %D%/services/ssh.scm \ %D%/services/web.scm \ %D%/services/xorg.scm \ diff --git a/gnu/services/spice.scm b/gnu/services/spice.scm new file mode 100644 index 0000000..26f072e --- /dev/null +++ b/gnu/services/spice.scm @@ -0,0 +1,75 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 David Craven +;;; +;;; 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 . + +(define-module (gnu services spice) + #:use-module (gnu packages spice) + #:use-module (gnu services) + #:use-module (gnu services shepherd) + #:use-module (guix gexp) + #:use-module (guix records) + #:export (spice-vdagent-configuration + spice-vdagent-configuration? + spice-vdagent-service-type + spice-vdagent-service)) + +(define-record-type* + spice-vdagent-configuration make-spice-vdagent-configuration + spice-vdagent-configuration? + (spice-vdagent spice-vdagent-configuration-spice-vdagent + (default spice-vdagent))) + +(define (spice-vdagent-activation config) + "Return the activation gexp for CONFIG." + #~(mkdir-p "/var/run/spice-vdagentd")) + +(define (spice-vdagent-shepherd-service config) + "Return a for spice-vdagentd with CONFIG." + (define spice-vdagent (spice-vdagent-configuration-spice-vdagent config)) + + (define spice-vdagentd-command + (list + #~(string-append #$spice-vdagent "/sbin/spice-vdagentd") + "-x")) + + (list + (shepherd-service + (documentation "Spice vdagentd service") + (requirement '(udev)) + (provision '(spice-vdagentd)) + (start #~(make-forkexec-constructor #$@spice-vdagentd-command)) + (stop #~(make-kill-destructor))))) + +(define spice-vdagent-profile + (compose list spice-vdagent-configuration-spice-vdagent)) + +(define spice-vdagent-service-type + (service-type (name 'spice-vdagent) + (extensions + (list (service-extension shepherd-root-service-type + spice-vdagent-shepherd-service) + (service-extension activation-service-type + spice-vdagent-activation) + (service-extension profile-service-type + spice-vdagent-profile))))) + +(define* (spice-vdagent-service + #:optional (config (spice-vdagent-configuration))) + "Start the @command{vdagentd} and @command{vdagent} deamons +from @var{spice-vdagent} to enable guest window resizing and +clipboard sharing." + (service spice-vdagent-service-type config)) -- 2.9.0