Looking good! I just tried to install Emacs to a dummy profile with your patch. Here is the result (with ":" replaced by line breaks): --8<---------------cut here---------------start------------->8--- ... export EMACSLOADPATH=\ "${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/site-lisp/ ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp/ ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//calc ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//calendar ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet/ede ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet/semantic ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet/semantic/analyze ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet/semantic/bovine ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet/semantic/decorate ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet/semantic/symref ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet/semantic/wisent ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//cedet/srecode ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//emacs-lisp ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//emulation ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//erc ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//eshell ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//gnus ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//image ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//international ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//language ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//leim ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//leim/ja-dic ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//leim/quail ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//mail ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//mh-e ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//net ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//nxml ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//obsolete ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//org ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//play ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//progmodes ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//term ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//textmodes ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//url ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/26.3/lisp//vc ${GUIX_PROFILE:-/gnu/store/g5371rkr7k5j6n5gmg0a8bhspsdfnjvy-profile}/share/emacs/site-lisp/${EMACSLOADPATH:+:}$EMACSLOADPATH" export ... --8<---------------cut here---------------end--------------->8--- Then I did --8<---------------cut here---------------start------------->8--- /home/ambrevar/projects/guix/pre-inst-env guix environment --ad-hoc emacs emacs-expand-region -- emacs -q --8<---------------cut here---------------end--------------->8--- And I get Emacs with expand region functions, but since GUIX_ENVIRONMENT is still effective, it's unclear what loads it. So it seems to be the right approach, let's keep testing! With regard to the "cleanups" you mentioned: > Various cleanups could be undertaken in both Guix (no longer need the > set-emacsloadpath phase in the emacs-build-system) and Emacs-Guix (no > need for custom logic looking into ~/.guix-profile) and perhaps other > places should this get merged. Shall we keep guix-emacs.el (and site-start.el) at all? What guix-emacs.el does if I'm not mistaken: - Find autoloads: Would we still need this then? I'm not sure. If not, then it would be great to remove this because finding-autoload linearly increases Emacs loading time. - Find packages in GUIX_ENVIRONMENT: I suppose we don't need this since EMACSLOADPATH should be in the `guix environment' as well. - Find packages in "/run/current-system/profile": The approach used by other programs at the moment is to do this in /etc/profile, e.g. --8<---------------cut here---------------start------------->8--- export MANPATH=\ $HOME/.guix-profile/share/man\ :/run/current-system/profile/share/man --8<---------------cut here---------------end--------------->8--- Seems to me that we can remove guix-emacs.el and site-start.el. Cheers! -- Pierre Neidhardt https://ambrevar.xyz/