summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2024-04-08 00:13:25 +0200
committerLudovic Courtès <ludo@gnu.org>2024-04-08 00:13:25 +0200
commit6062339156ecc42cac59af0d34e22fcc7da3aa4a (patch)
treea1642b7b52995e184ca30ef0cf7aa0b852a79b7e /gnu
parentb30b838d5055e36be19d030db28838fec4474d98 (diff)
downloadguix-6062339156ecc42cac59af0d34e22fcc7da3aa4a.tar.gz
mapped-devices: <mapped-device-type> can specify modules to import.
* gnu/system/mapped-devices.scm (<mapped-device-type>)[modules]: New
field.
(device-mapping-service-type): Honor it.
* gnu/system/linux-initrd.scm (raw-initrd): Likewise.

Change-Id: Icc702cb6f281741975e33203f87fbc1ffa9856da
Diffstat (limited to 'gnu')
-rw-r--r--gnu/system/linux-initrd.scm7
-rw-r--r--gnu/system/mapped-devices.scm8
2 files changed, 12 insertions, 3 deletions
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index f5d86219a8..7868ff5723 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2020, 2024 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -259,6 +259,11 @@ upon error."
                        #:select (find-partition-by-luks-uuid))
                       (rnrs bytevectors))
 
+                      ;; Load extra modules needed by the mapped device code.
+                      #$@(append-map (compose mapped-device-kind-modules
+                                              mapped-device-type)
+                                     mapped-devices))
+
          (with-output-to-port (%make-void-port "w")
            (lambda ()
              (set-path-environment-variable "PATH" '("bin" "sbin")
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index c19a818453..4e135772a9 100644
--- a/gnu/system/mapped-devices.scm
+++ b/gnu/system/mapped-devices.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2022, 2024 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
@@ -57,6 +57,7 @@
             mapped-device-kind?
             mapped-device-kind-open
             mapped-device-kind-close
+            mapped-device-kind-modules
             mapped-device-kind-check
 
             device-mapping-service-type
@@ -112,6 +113,8 @@ specifications to 'targets'."
   (open      mapped-device-kind-open)             ;source target -> gexp
   (close     mapped-device-kind-close             ;source target -> gexp
              (default (const #~(const #f))))
+  (modules   mapped-device-kind-modules           ;list of module names
+             (default '()))
   (check     mapped-device-kind-check             ;source -> Boolean
              (default (const #t))))
 
@@ -125,13 +128,14 @@ specifications to 'targets'."
    'device-mapping
    (match-lambda
      (($ <mapped-device> source targets
-                         ($ <mapped-device-type> open close))
+                         ($ <mapped-device-type> open close modules))
       (shepherd-service
        (provision (list (symbol-append 'device-mapping- (string->symbol (string-join targets "-")))))
        (requirement '(udev))
        (documentation "Map a device node using Linux's device mapper.")
        (start #~(lambda () #$(open source targets)))
        (stop #~(lambda _ (not #$(close source targets))))
+       (modules (append %default-modules modules))
        (respawn? #f))))
    (description "Map a device node using Linux's device mapper.")))