0220fb319a
For this we create a directory containing a nix-inject.el file using writeTextFile where we can string interpolate as much as we please and merge that into a single emacs.d directory with the config *.el files tracked in the normal tree using symlinkJoin. Change-Id: I0e39591587a54527214783d4380456d2763da091 Reviewed-on: https://cl.tvl.fyi/c/depot/+/4324 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Autosubmit: sterni <sternenseemann@systemli.org>
62 lines
1.5 KiB
Nix
62 lines
1.5 KiB
Nix
{ depot, pkgs, ... }:
|
|
|
|
let
|
|
inherit (pkgs.emacsGcc.pkgs) withPackages;
|
|
|
|
emacs = withPackages (epkgs: [
|
|
# basic setup
|
|
epkgs.elpaPackages.undo-tree
|
|
epkgs.melpaPackages.evil
|
|
epkgs.melpaPackages.evil-collection
|
|
epkgs.melpaPackages.use-package
|
|
# languages
|
|
epkgs.bqn-mode
|
|
epkgs.elpaPackages.ada-mode
|
|
epkgs.melpaPackages.adoc-mode
|
|
epkgs.melpaPackages.dockerfile-mode
|
|
epkgs.melpaPackages.haskell-mode
|
|
epkgs.melpaPackages.jq-mode
|
|
epkgs.melpaPackages.markdown-mode
|
|
epkgs.melpaPackages.nix-mode
|
|
epkgs.melpaPackages.sly
|
|
epkgs.melpaPackages.yaml-mode
|
|
epkgs.rust-mode
|
|
epkgs.urweb-mode
|
|
# misc
|
|
epkgs.melpaPackages.hl-todo
|
|
epkgs.elpaPackages.rainbow-mode
|
|
epkgs.melpaPackages.rainbow-delimiters
|
|
# beyond text editing
|
|
epkgs.melpaPackages.elfeed
|
|
epkgs.melpaPackages.magit
|
|
epkgs.tvlPackages.tvl
|
|
]);
|
|
|
|
configDirectory = pkgs.symlinkJoin {
|
|
name = "emacs.d";
|
|
paths = [
|
|
./.
|
|
(pkgs.writeTextFile {
|
|
name = "injected-emacs.d";
|
|
destination = "/nix-inject.el";
|
|
text = ''
|
|
(setq bqn-interpreter-path "${pkgs.cbqn}/bin/BQN")
|
|
|
|
(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)" \
|
|
"$@"
|
|
''
|