Emacs can interpret/load at least four kinds of source files.
Listed with increasing performance:
- Emacs-Lisp source code: *.el
- Byte-compiled Emacs-Lisp: *.elc
- Native-compiled Emacs-Lisp: *.eln
- Shared-object files: *.so
Guix installs el- and elc-files into ~/.guix-profile/share/emacs/site-lisp which is added to the
environment-variable EMACSLOADPATH. eln-files are installed into
~/.guix-profile/lib/emacs/native-site-lisp which is added to
EMACSNATIVELOADPATH. For Emacs-related so-files, Guix currently
does not have any convention; see
If I understand correctly, it is only the following Emacs-packages that ship with eln-files when installed with Guix, because they specify `#:emacs ,emacs` in the package declaration, so that native-compilation is available during build-time which is used if it's available: https://git.savannah.gnu.org/cgit/guix.git/tree/guix/build/emacs-utils.scm?h=6d0b3684628fe24555055d4a97d703a1b0b59660#n144
So, if my understanding is correct, and assuming that we want to ship eln-files, Emacs-packages should all be built with a package of Emacs that supports native-compilation.