~ruther/guix-local

4da8c19e8337cbb908d5e77cd912791846070fb7 — Ludovic Courtès 10 years ago 1ea507b
mapped-devices: 'mapped-device-service' takes a <mapped-device>.

* gnu/system/mapped-devices.scm (device-mapping-service): Take a
<mapped-device> instead of 3 parameters.
(device-mapping-service-type): Adjust accordingly.
* gnu/system.scm (device-mapping-services): Adjust accordingly.
2 files changed, 8 insertions(+), 18 deletions(-)

M gnu/system.scm
M gnu/system/mapped-devices.scm
M gnu/system.scm => gnu/system.scm +1 -9
@@ 233,15 233,7 @@ from the initrd."

(define (device-mapping-services os)
  "Return the list of device-mapping services for OS as a list."
  (map (lambda (md)
         (let* ((source (mapped-device-source md))
                (target (mapped-device-target md))
                (type   (mapped-device-type md))
                (open   (mapped-device-kind-open type))
                (close  (mapped-device-kind-close type)))
           (device-mapping-service target
                                   (open source target)
                                   (close source target))))
  (map device-mapping-service
       (operating-system-user-mapped-devices os)))

(define (swap-services os)

M gnu/system/mapped-devices.scm => gnu/system/mapped-devices.scm +7 -9
@@ 69,21 69,19 @@
  (shepherd-service-type
   'device-mapping
   (match-lambda
     ((target open close)
     (($ <mapped-device> source target
                         ($ <mapped-device-type> 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)))
       (start #~(lambda () #$(open source target)))
       (stop #~(lambda _ (not #$(close source target))))
       (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 (device-mapping-service mapped-device)
  "Return a service that sets up @var{mapped-device}."
  (service device-mapping-service-type mapped-device))


;;;