diff --git a/env.scm b/env.scm index 3b002b7..e9bc003 100644 --- a/env.scm +++ b/env.scm @@ -1,6 +1,7 @@ (define-module (env) #:use-module (gcrypt hash) #:use-module (guix base32) + #:use-module (guix build syscalls) #:use-module (guix build utils) #:use-module (guix hash) #:use-module (ice-9 ftw) @@ -38,7 +39,8 @@ remove-env-no-checks! roll-back! environment->overlay-mount-maybe - unmount-environment)) + unmount-environment + environment-mounted?)) (define directory-files (@@ (ice-9 ftw) directory-files)) @@ -439,6 +441,21 @@ by other environments made." (when (file-exists? tmpdirln) (delete-file tmpdirln)))) +(define (fuse-overlayfs-mounts) + (filter (λ (m) (equal? "fuse.fuse-overlayfs" + (mount-type m) )) + (mounts))) + +(define (fuse-overlayfs-mount-points) + (map mount-point (fuse-overlayfs-mounts))) + +(define (environment-mounted? env) + (if (member (string-append %env-directory + "/" (symbol->string (environment-name env))) + (fuse-overlayfs-mount-points)) + #t + #f)) + (define (environment->overlay-mount-maybe env) (let* ((name (symbol->string (environment-name env))) (dir (readlink (string-append "/tmp/genv/" name))))