feat(emacs): Add 'withLocalEmacs' override function
This function makes it possible to build an Emacs instance that, instead of launching an Emacs built by Nix, configures an Emacs already present on the system to use the packages built by Nix. This **requires** that the versions of the two Emacsen (i.e. the one used by Nix to build and the one used to run the packages) are kept in sync, otherwise byte-code incompatibilities may lead to undefined behaviour.
This commit is contained in:
parent
43f07099a7
commit
05168b9a3c
1 changed files with 12 additions and 0 deletions
|
@ -101,4 +101,16 @@ in lib.fix(self: l: f: third_party.writeShellScriptBin "tazjins-emacs" ''
|
|||
# Call withLocalConfig with the path to a *folder* containing a
|
||||
# `local.el` which provides local system configuration.
|
||||
withLocalConfig = confDir: self confDir f;
|
||||
|
||||
# Build a derivation that uses the specified local Emacs (i.e.
|
||||
# built outside of Nix) instead
|
||||
withLocalEmacs = emacsBin: third_party.writeShellScriptBin "tazjins-emacs" ''
|
||||
exec ${emacsBin} \
|
||||
--debug-init \
|
||||
--no-site-file \
|
||||
--no-init-file \
|
||||
--directory ${(tazjinsEmacs f).deps}/share/emacs/site-lisp \
|
||||
--directory ${./config} ${if l != null then "--directory ${l}" else ""} \
|
||||
--eval "(require 'init)" $@
|
||||
'';
|
||||
}) null identity
|
||||
|
|
Loading…
Reference in a new issue