e4d87b1fd2
Packaging this seemed a little tricky due to some quirks of the code, but it's best to solve that whenever it's actually in depot. For now I break it often enough that it's useful to be able to edit its source quickly. Still missing some necessary configuration which I'll probably steal from grfn next week or so. Change-Id: I1300807f7b1bc39ddb9f792c2ee500f4dd72d002 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5676 Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
93 lines
2.7 KiB
Nix
93 lines
2.7 KiB
Nix
{ 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.elpaPackages.which-key
|
|
epkgs.melpaPackages.adoc-mode
|
|
epkgs.melpaPackages.cmake-mode
|
|
epkgs.melpaPackages.direnv
|
|
epkgs.melpaPackages.dockerfile-mode
|
|
epkgs.melpaPackages.editorconfig
|
|
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.org-clock-csv
|
|
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
|
|
|
|
# TODO(sterni): until org-tracker is part of depot
|
|
epkgs.ivy
|
|
epkgs.dash
|
|
epkgs.s
|
|
epkgs.jiralib2
|
|
]);
|
|
|
|
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")
|
|
|
|
;; use bash instead of fish from SHELL for some things, as it plays
|
|
;; nicer with TERM=dumb, as I don't need/want vterm anyways.
|
|
;; We want it to source /etc/profile for some extra setup that
|
|
;; kicks in if TERM=dumb, meaning we can't use dash/sh mode.
|
|
(setq shell-file-name "${pkgs.bash}/bin/bash"
|
|
explicit-bash-args '("-l"))
|
|
|
|
(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"
|
|
'';
|
|
})
|