2) For cluster installations with remote file systems perhaps
there’s
something else we can do to record gcroots. We now have this
excursion into unreadable space because we use a symlink, but
the
start ($localstatedir/gcroots/auto) and endpoints
(/gnu/store/…) are
both accessible by the daemon. Since these intermediate
locations are
tied to user accounts, could we not store them in a per-user
directory?
This problem does not exist for user profiles, because the link
in
unreadable home directories is not all that important; it
merely
points to $localstatedir, which is always readable by the
daemon. Perhaps we could do the same for temporary roots and
let
*users* decide when to let go of them by giving them a command
to
erase the important links in $localstatedir.
So instead of having a link from
/gnu/var/guix/gcroots/auto/8ypp8dmwnydgbsgjcms2wyb32mng0wri to
/home/me/projects/mrg1_chipseq/.guix-profile-1-link pointing to
/gnu/store/ap0vrfxjdj57iqdapg8q83l4f7aylqzm-profile, we would
record
/var/guix/profiles/per-user/me/auto/8ypp8dmwnydgbsgjcms2wyb32mng0wri
pointing to
/gnu/store/ap0vrfxjdj57iqdapg8q83l4f7aylqzm-profile, and
then point /home/me/projects/mrg1_chipseq/.guix-profile-1-link
at
that. Yes, removing
/home/me/projects/mrg1_chipseq/.guix-profile-1-link would no
longer free up the profile for garbage collection, but removing
$(readlink /home/me/projects/mrg1_chipseq/.guix-profile-1-link)
would.