blob: 67851d81b04b6cb362c82428f471458859bf3d52 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
{ depot, pkgs, ... }:
let
inherit (pkgs.emacsNativeComp.pkgs) withPackages;
emacs = withPackages (epkgs: [
epkgs.bqn-mode
epkgs.elpaPackages.ada-mode
epkgs.elpaPackages.rainbow-mode
epkgs.elpaPackages.undo-tree
epkgs.melpaPackages.adoc-mode
epkgs.melpaPackages.cmake-mode
epkgs.melpaPackages.direnv
epkgs.melpaPackages.dockerfile-mode
epkgs.melpaPackages.elfeed
epkgs.melpaPackages.evil
epkgs.melpaPackages.evil-collection
epkgs.melpaPackages.haskell-mode
epkgs.melpaPackages.hl-todo
epkgs.melpaPackages.jq-mode
epkgs.melpaPackages.languagetool
epkgs.melpaPackages.lsp-haskell
epkgs.melpaPackages.lsp-mode
epkgs.melpaPackages.magit
epkgs.melpaPackages.markdown-mode
epkgs.melpaPackages.meson-mode
epkgs.melpaPackages.nix-mode
epkgs.melpaPackages.paredit
epkgs.melpaPackages.rainbow-delimiters
epkgs.melpaPackages.sly
epkgs.melpaPackages.use-package
epkgs.melpaPackages.yaml-mode
epkgs.rust-mode
epkgs.tvlPackages.tvl
epkgs.urweb-mode
]);
configDirectory = pkgs.symlinkJoin {
name = "emacs.d";
paths = [
./.
(pkgs.writeTextFile {
name = "injected-emacs.d";
destination = "/nix-inject.el";
text = ''
;; bqn-mode
(setq bqn-interpreter-path "${pkgs.cbqn}/bin/BQN")
;; languagetool
(setq languagetool-java-bin "${pkgs.jre}/bin/java"
languagetool-console-command "${pkgs.languagetool}/share/languagetool-commandline.jar"
languagetool-server-command "${pkgs.languagetool}/share/languagetool-server.jar"
languagetool-java-arguments '("-Dfile.encoding=UTF-8"))
(provide 'nix-inject)
'';
})
];
postBuild = ''
rm "$out/default.nix"
'';
};
in
# sadly we can't give an init-file via the command line
(pkgs.writeShellScriptBin "emacs" ''
exec ${emacs}/bin/emacs \
--no-init-file \
--directory ${configDirectory} \
--eval "(require 'init)" \
"$@"
'').overrideAttrs (super: {
buildCommand = ''
${super.buildCommand}
ln -s "${emacs}/bin/emacsclient" "$out/bin/emacsclient"
'';
})
|