about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tools/emacs/default.nix12
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/emacs/default.nix b/tools/emacs/default.nix
index 5ab790c2aea3..54bd0d80eafe 100644
--- a/tools/emacs/default.nix
+++ b/tools/emacs/default.nix
@@ -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