@@ 26,7 26,8 @@
user-info?
(user user-info-user)
(group user-info-group (default "users"))
- (home user-info-home))
+ (home user-info-home)
+ (files user-info-files (default '("authentication" "checkouts" "http" "inferiors" "locate" "profiles" "substitute"))))
(define (list-of-user-info? lst)
(every user-info? lst))
@@ 55,19 56,24 @@
(user-name (user-info-user user))
(user-home (user-info-home user))
(user-group (user-info-group user))
+ (user-files (user-info-files user))
(main-group (guix-shared-cache-main-group config))
(main-user (guix-shared-cache-main-user config))
- (shared-dir (guix-shared-cache-shared-directory config))
- (mount-dir (string-append user-home "/.cache/guix")))
+ (shared-dir-base (guix-shared-cache-shared-directory config))
+ (mount-dir-base (string-append user-home "/.cache/guix")))
(shepherd-service
(provision (list (symbol-append 'shared-guix-cache-
(string->symbol user-name))))
(requirement '(file-systems user-homes))
(stop #~(lambda args
- (invoke
- #$(file-append fuse "/bin/fusermount")
- "-u"
- #$mount-dir)
+ (for-each
+ (lambda (dir)
+ (let ((mount-dir (string-append #$mount-dir-base "/" dir) ))
+ (invoke
+ #$(file-append fuse "/bin/fusermount")
+ "-u"
+ mount-dir)))
+ '#$user-files)
#f))
(start #~(lambda args
(define (mkdir-recursively dir user group)
@@ 81,16 87,21 @@
(gid (passwd:gid pw)))
(chown dir uid gid)))))
- (mkdir-recursively #$shared-dir #$main-user #$main-group)
- (mkdir-recursively #$mount-dir #$user-name #$user-group)
- (invoke
- #$(file-append bindfs "/bin/bindfs")
- (string-append "--create-for-group=" #$main-group)
- (string-append "--create-for-user=" #$main-user)
- (string-append "--force-user=" #$user-name)
- (string-append "--force-group=" #$user-group)
- #$shared-dir #$mount-dir)
+ (for-each
+ (lambda (dir)
+ (let ((mount-dir (string-append #$mount-dir-base "/" dir))
+ (shared-dir (string-append #$shared-dir-base "/" dir)))
+ (mkdir-recursively shared-dir #$main-user #$main-group)
+ (mkdir-recursively mount-dir #$user-name #$user-group)
+ (invoke
+ #$(file-append bindfs "/bin/bindfs")
+ (string-append "--create-for-group=" #$main-group)
+ (string-append "--create-for-user=" #$main-user)
+ (string-append "--force-user=" #$user-name)
+ (string-append "--force-group=" #$user-group)
+ shared-dir mount-dir)))
+ '#$user-files)
#t)))))
(guix-shared-cache-users config)))