From 4e469051a77d02435eafb1df93224a2ce1bb3146 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 22 Jul 2014 22:53:36 +0200 Subject: system: Add 'create-mount-point?' file system option. * gnu/system/file-systems.scm ()[create-mount-point?]: New field. * gnu/services/base.scm (file-system-service): Add #:create-mount-point? parameter and honor it. * gnu/system.scm (other-file-system-services): Update 'file-system-service' call accordingly. * doc/guix.texi (File Systems): Document it. --- gnu/services/base.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'gnu/services') diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 42e232c9ac..9a67109db0 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -96,11 +96,13 @@ (define (root-file-system-service) (respawn? #f))))) (define* (file-system-service device target type - #:key (check? #t) options (title 'any)) + #:key (check? #t) create-mount-point? + options (title 'any)) "Return a service that mounts DEVICE on TARGET as a file system TYPE with OPTIONS. TITLE is a symbol specifying what kind of name DEVICE is: 'label for a partition label, 'device for a device file name, or 'any. When CHECK? is -true, check the file system before mounting it." +true, check the file system before mounting it. When CREATE-MOUNT-POINT? is +true, create TARGET if it does not exist yet." (with-monad %store-monad (return (service @@ -109,6 +111,9 @@ (define* (file-system-service device target type (documentation "Check, mount, and unmount the given file system.") (start #~(lambda args (let ((device (canonicalize-device-spec #$device '#$title))) + #$(if create-mount-point? + #~(mkdir-p #$target) + #~#t) #$(if check? #~(begin ;; Make sure fsck.ext2 & co. can be found. -- cgit v1.2.3