~ruther/guix-local

1ea507bce294d12223c35c3f8c2ae3e54a4127fd — Ludovic Courtès 10 years ago 374f14c
services: Move 'device-mapping-service' to (gnu system mapped-devices).

* gnu/services/base.scm (device-mapping-service-type)
(device-mapping-service): Move to...
* gnu/system/mapped-devices.scm (device-mapping-service-type):
(device-mapping-service): ... here.  New variables.
2 files changed, 31 insertions(+), 21 deletions(-)

M gnu/services/base.scm
M gnu/system/mapped-devices.scm
M gnu/services/base.scm => gnu/services/base.scm +0 -21
@@ 48,7 48,6 @@
            root-file-system-service
            file-system-service
            user-unmount-service
            device-mapping-service
            swap-service
            user-processes-service
            session-environment-service


@@ 1175,26 1174,6 @@ extra rules from the packages listed in @var{rules}."
  (service udev-service-type
           (udev-configuration (udev udev) (rules rules))))

(define device-mapping-service-type
  (shepherd-service-type
   'device-mapping
   (match-lambda
     ((target open close)
      (shepherd-service
       (provision (list (symbol-append 'device-mapping- (string->symbol target))))
       (requirement '(udev))
       (documentation "Map a device node using Linux's device mapper.")
       (start #~(lambda () #$open))
       (stop #~(lambda _ (not #$close)))
       (respawn? #f))))))

(define (device-mapping-service target open close)
  "Return a service that maps device @var{target}, a string such as
@code{\"home\"} (meaning @code{/dev/mapper/home}).  Evaluate @var{open}, a
gexp, to open it, and evaluate @var{close} to close it."
  (service device-mapping-service-type
           (list target open close)))

(define swap-service-type
  (shepherd-service-type
   'swap

M gnu/system/mapped-devices.scm => gnu/system/mapped-devices.scm +31 -0
@@ 19,7 19,10 @@
(define-module (gnu system mapped-devices)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:use-module (gnu services)
  #:use-module (gnu services shepherd)
  #:autoload   (gnu packages cryptsetup) (cryptsetup)
  #:use-module (ice-9 match)
  #:export (mapped-device
            mapped-device?
            mapped-device-source


@@ 31,6 34,9 @@
            mapped-device-kind-open
            mapped-device-kind-close

            device-mapping-service-type
            device-mapping-service

            luks-device-mapping))

;;; Commentary:


@@ 56,6 62,31 @@


;;;
;;; Device mapping as a Shepherd service.
;;;

(define device-mapping-service-type
  (shepherd-service-type
   'device-mapping
   (match-lambda
     ((target open close)
      (shepherd-service
       (provision (list (symbol-append 'device-mapping- (string->symbol target))))
       (requirement '(udev))
       (documentation "Map a device node using Linux's device mapper.")
       (start #~(lambda () #$open))
       (stop #~(lambda _ (not #$close)))
       (respawn? #f))))))

(define (device-mapping-service target open close)
  "Return a service that maps device @var{target}, a string such as
@code{\"home\"} (meaning @code{/dev/mapper/home}).  Evaluate @var{open}, a
gexp, to open it, and evaluate @var{close} to close it."
  (service device-mapping-service-type
           (list target open close)))


;;;
;;; Common device mappings.
;;;