summaryrefslogtreecommitdiff
path: root/gnu/system/file-systems.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-02-03 00:20:40 +0100
committerLudovic Courtès <ludo@gnu.org>2017-02-03 00:23:28 +0100
commitd2a5e6982ddcbe1e5479bda62a72b3a94570855a (patch)
treeafc74823fd2f8b40570593e61d05196ef2df8063 /gnu/system/file-systems.scm
parent0f31d4f07f8203305c486da76cdeee57ae8a4efc (diff)
downloadguix-patches-d2a5e6982ddcbe1e5479bda62a72b3a94570855a.tar
guix-patches-d2a5e6982ddcbe1e5479bda62a72b3a94570855a.tar.gz
file-systems: Add 'file-system-mapping->bind-mount'.
* gnu/system/file-systems.scm (file-system-mapping->bind-mount): New procedure. * gnu/system/linux-container.scm (mapping->file-system): Remove. (containerized-operating-system)[mapping->fs]: Use 'file-system-mapping->bind-mount' instead of 'mapping->file-system'. * guix/scripts/environment.scm (launch-environment/container): Likewise.
Diffstat (limited to 'gnu/system/file-systems.scm')
-rw-r--r--gnu/system/file-systems.scm17
1 files changed, 17 insertions, 0 deletions
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index fa56853fd1..b2721f2389 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -63,6 +63,8 @@
file-system-mapping-target
file-system-mapping-writable?
+ file-system-mapping->bind-mount
+
%store-mapping))
;;; Commentary:
@@ -352,6 +354,21 @@ TARGET in the other system."
(writable? file-system-mapping-writable? ;Boolean
(default #f)))
+(define (file-system-mapping->bind-mount mapping)
+ "Return a file system that realizes MAPPING, a <file-system-mapping>, using
+a bind mount."
+ (match mapping
+ (($ <file-system-mapping> source target writable?)
+ (file-system
+ (mount-point target)
+ (device source)
+ (type "none")
+ (flags (if writable?
+ '(bind-mount)
+ '(bind-mount read-only)))
+ (check? #f)
+ (create-mount-point? #t)))))
+
(define %store-mapping
;; Mapping of the host's store into the guest.
(file-system-mapping