system: Add 'create-mount-point?' file system option.
* gnu/system/file-systems.scm (<file-system>)[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.
This commit is contained in:
parent
5ac12a4f77
commit
4e469051a7
@ -3054,6 +3054,9 @@ instance, for the root file system.
|
||||
This Boolean indicates whether the file system needs to be checked for
|
||||
errors before being mounted.
|
||||
|
||||
@item @code{create-mount-point?} (default: @code{#f})
|
||||
When true, the mount point is created if it does not exist yet.
|
||||
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
|
@ -96,11 +96,13 @@ This service must be the root of the service dependency graph so that its
|
||||
(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 @@ true, check the file system before mounting it."
|
||||
(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.
|
||||
|
@ -181,10 +181,11 @@ as 'needed-for-boot'."
|
||||
(sequence %store-monad
|
||||
(map (match-lambda
|
||||
(($ <file-system> device title target type flags opts
|
||||
#f check?)
|
||||
#f check? create?)
|
||||
(file-system-service device target type
|
||||
#:title title
|
||||
#:check? check?
|
||||
#:create-mount-point? create?
|
||||
#:options opts)))
|
||||
file-systems)))
|
||||
|
||||
|
@ -28,6 +28,8 @@
|
||||
file-system-needed-for-boot?
|
||||
file-system-flags
|
||||
file-system-options
|
||||
file-system-check?
|
||||
file-system-create-mount-point?
|
||||
|
||||
%fuse-control-file-system
|
||||
%binary-format-file-system
|
||||
@ -57,7 +59,9 @@
|
||||
(needed-for-boot? file-system-needed-for-boot? ; Boolean
|
||||
(default #f))
|
||||
(check? file-system-check? ; Boolean
|
||||
(default #t)))
|
||||
(default #t))
|
||||
(create-mount-point? file-system-create-mount-point? ; Boolean
|
||||
(default #f)))
|
||||
|
||||
(define %fuse-control-file-system
|
||||
;; Control file system for Linux' file systems in user-space (FUSE).
|
||||
|
Loading…
Reference in New Issue
Block a user