diff options
-rw-r--r-- | doc/guix.texi | 8 | ||||
-rw-r--r-- | gnu/system.scm | 14 | ||||
-rw-r--r-- | gnu/system/file-systems.scm | 6 |
3 files changed, 23 insertions, 5 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 2f8c52c8b6..0d24b12f8c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5027,6 +5027,14 @@ 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. +@item @code{dependencies} (default: @code{'()}) +This is a list of @code{<file-system>} objects representing file systems +that must be mounted before (and unmounted after) this one. + +As an example, consider a hierarchy of mounts: @file{/sys/fs/cgroup} is +a dependency of @file{/sys/fs/cgroup/cpu} and +@file{/sys/fs/cgroup/memory}. + @end table @end deftp diff --git a/gnu/system.scm b/gnu/system.scm index ed37c320f7..cf9ee123c7 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -228,10 +228,16 @@ as 'needed-for-boot'." (operating-system-mapped-devices os))) (define (requirements fs) - (map (lambda (md) - (symbol-append 'device-mapping- - (string->symbol (mapped-device-target md)))) - (device-mappings fs))) + ;; XXX: Fiddling with dmd service names is not nice. + (append (map (lambda (fs) + (symbol-append 'file-system- + (string->symbol + (file-system-mount-point fs)))) + (file-system-dependencies fs)) + (map (lambda (md) + (symbol-append 'device-mapping- + (string->symbol (mapped-device-target md)))) + (device-mappings fs)))) (sequence %store-monad (map (lambda (fs) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 0f3e6fbcaa..a3230dce48 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -37,6 +37,7 @@ file-system-options file-system-check? file-system-create-mount-point? + file-system-dependencies file-system->spec string->uuid @@ -97,7 +98,10 @@ (check? file-system-check? ; Boolean (default #t)) (create-mount-point? file-system-create-mount-point? ; Boolean - (default #f))) + (default #f)) + (dependencies file-system-dependencies ; list of strings (mount + ; points depended on) + (default '()))) (define-inlinable (file-system-needed-for-boot? fs) "Return true if FS has the 'needed-for-boot?' flag set, or if it's the root |