Files
dotfiles/home/stuff/programs/emacs.nix
natto1784 ddd2ae4efc emacs update
moved emacs from home-manager packages to system packages
updated config to use tree-sitter and lsp-mode
2021-09-13 06:55:25 +05:30

65 lines
2.2 KiB
Nix

{ pkgs, config, ... }:
{
programs.emacs = {
enable = false;
extraPackages = epkgs: with epkgs; [
elcord
gruvbox-theme
ivy
rainbow-delimiters
evil
evil-colemak-basics
treemacs
treemacs-evil
lsp-mode
lsp-treemacs
lsp-ui
tree-sitter
tree-sitter-langs
tsc
];
overrides = self: super : {
tsc = super.tsc.overrideAttrs(oa:
let
tsc-dyn = version: pkgs.fetchurl {
url = "https://github.com/emacs-tree-sitter/elisp-tree-sitter/releases/download/${version}/tsc-dyn.so";
sha256 = "sha256-oOq/TAooHRUo7JypCblrB/ztABowAHv2LRhFL/ZmVrg=";
};
in { postInstall = oa.postInstall or "" + "cp ${tsc-dyn "0.15.2"} $out/share/emacs/site-lisp/elpa/tsc-${super.tsc.version}/tsc-dyn.so" ;});
tree-sitter-langs = pkgs.symlinkJoin rec {
name = "tree-sitter-langs";
paths =
let
tree-sitter-grammars = pkgs.stdenv.mkDerivation rec {
name = "tree-sitter-grammars";
version = "0.10.4";
src = pkgs.fetchzip {
url = "https://github.com/emacs-tree-sitter/tree-sitter-langs/releases/download/${version}/tree-sitter-grammars-linux-${version}.tar.gz";
sha256 = "sha256-Z+JtuGLTCVhCJBR60cbcDgWtdKcoYGWoeI5u9GcfvUQ=";
stripRoot = false;
};
installPhase = ''
install -d $out/langs/bin
install -m444 * $out/langs/bin
echo -n $version > $out/langs/bin/BUNDLE-VERSION
'';
};
in
[
(super.tree-sitter-langs.overrideAttrs (oldAttrs: {
postPatch = oldAttrs.postPatch or "" + ''
substituteInPlace ./tree-sitter-langs-build.el \
--replace "tree-sitter-langs-grammar-dir tree-sitter-langs--dir" "tree-sitter-langs-grammar-dir \"${tree-sitter-grammars}/langs\""
'';
}))
tree-sitter-grammars
];
};
};
};
home.file.emacs = {
source = ../../config/emacs/init.el;
target = "${config.home.homeDirectory}/.emacs.d/init.el";
};
}