Hello, While investigating https://issues.guix.gnu.org/64836, I discovered that the cache of 'guix shell' doesn't take into account grafts for subsequent invocations.
Consider, using Guix at commit 21b718f4d6c3ded8ef50d12f6e9ae6474f74620f: --8<---------------cut here---------------start------------->8--- $ guix build gtk+ /gnu/store/6vqx7nip7r95h2nhvhb9vxzjpri581b9-gtk+-3.24.37 $ guix build --no-grafts gtk+ /gnu/store/2n2kprz35a19ibs5kbjsb3k4cdl69q2w-gtk+-3.24.37 $ guix shell gtk+ -- sh -c 'realpath $GUIX_ENVIRONMENT/lib/libgtk-3.so' /gnu/store/6vqx7nip7r95h2nhvhb9vxzjpri581b9-gtk+-3.24.37/lib/libgtk-3.so.0.2405.32 $ guix shell --no-grafts gtk+ -- sh -c 'realpath $GUIX_ENVIRONMENT/lib/libgtk-3.so' /gnu/store/6vqx7nip7r95h2nhvhb9vxzjpri581b9-gtk+-3.24.37/lib/libgtk-3.so.0.2405.32 --8<---------------cut here---------------end--------------->8--- The 'guix shell --no-grafts' invocation simply reused the same cache as the previous command, so grafts are in use, which is non-intuitive. The reverse would be true as well: --8<---------------cut here---------------start------------->8--- $ guix shell --rebuild-cache --no-grafts gtk+ -- sh -c 'realpath $GUIX_ENVIRONMENT/lib/libgtk-3.so' /gnu/store/2n2kprz35a19ibs5kbjsb3k4cdl69q2w-gtk+-3.24.37/lib/libgtk-3.so.0.2405.32 $ guix shell gtk+ -- sh -c 'realpath $GUIX_ENVIRONMENT/lib/libgtk-3.so' /gnu/store/2n2kprz35a19ibs5kbjsb3k4cdl69q2w-gtk+-3.24.37/lib/libgtk-3.so.0.2405.32 --8<---------------cut here---------------end--------------->8--- The ungrafted cache got reused by the invocation that should have used grafted inputs. -- Thanks, Maxim