aboutsummaryrefslogtreecommitdiff
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
parentb30b838d5055e36be19d030db28838fec4474d98 (diff)
downloadguix-6062339156ecc42cac59af0d34e22fcc7da3aa4a.tar
guix-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
-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.")))