diff options
Diffstat (limited to 'gnu/system')
-rw-r--r-- | gnu/system/mapped-devices.scm | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index 81afb91f86..dd8e432688 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm @@ -17,7 +17,9 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu system mapped-devices) + #:use-module (guix gexp) #:use-module (guix records) + #:autoload (gnu packages cryptsetup) (cryptsetup) #:export (mapped-device mapped-device? mapped-device-source @@ -27,7 +29,9 @@ mapped-device-kind mapped-device-kind? mapped-device-kind-open - mapped-device-kind-close)) + mapped-device-kind-close + + luks-device-mapping)) ;;; Commentary: ;;; @@ -50,4 +54,27 @@ (close mapped-device-kind-close ;source target -> gexp (default (const #~(const #f))))) + +;;; +;;; Common device mappings. +;;; + +(define (open-luks-device source target) + "Return a gexp that maps SOURCE to TARGET as a LUKS device, using +'cryptsetup'." + #~(zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup") + "open" "--type" "luks" + #$source #$target))) + +(define (close-luks-device source target) + "Return a gexp that closes TARGET, a LUKS device." + #~(zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup") + "close" #$target))) + +(define luks-device-mapping + ;; The type of LUKS mapped devices. + (mapped-device-kind + (open open-luks-device) + (close close-luks-device))) + ;;; mapped-devices.scm ends here |