about summary refs log tree commit diff
path: root/tools/emacs
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@google.com>2019-12-17T00·00+0000
committerGitHub <noreply@github.com>2019-12-17T00·00+0000
commit7e0d4d097b1ecf6d506d1397abf21a9a2ddfe9c8 (patch)
treeedaed0faf1d87240d94228c17acab84804021efd /tools/emacs
parent13030cc158698763d68449f6f41305f4d238cf2c (diff)
parent05168b9a3c8209d900df632e9fc57f7e744e07a4 (diff)
merge(PR#16): Add override function to run Nix-built Emacs configuration with external Emacs r/169
Say you're on a non-NixOS system and need to run this Emacs configuration, but without using an Emacs from Nix, building ...

```nix
tools.emacs.withLocalEmacs "/usr/bin/emacs"
```

... will create a derivation that does exactly that.
Diffstat (limited to 'tools/emacs')
-rw-r--r--tools/emacs/default.nix13
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/emacs/default.nix b/tools/emacs/default.nix
index 8f036208e902..54bd0d80eafe 100644
--- a/tools/emacs/default.nix
+++ b/tools/emacs/default.nix
@@ -64,6 +64,7 @@ let
     rainbow-delimiters
     refine
     restclient
+    request
     sly
     string-edit
     swiper
@@ -100,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