pkgs: let
plugins = epkgs: with epkgs; [
avy
evil
evil-surround
org
undo-fu-session
treesit-grammars.with-all-grammars
nix-ts-mode
(trivialBuild {
pname = "elisp-ts-mode";
version = "0.0";
src = pkgs.fetchFromGitHub {
owner = "nverno";
repo = "emacs-lisp-ts-mode";
rev = "7d661005a7c4ac8b45d1584c9fdbbd9b1e49eb39";
hash = "sha256-r2/PVwsPlZ6iPd6vBB7i4AYK0ofwUgRX8I+2FGwjFKI=";
};
})
(trivialBuild {
pname = "nushell-ts-mode";
version = "0.0";
src = pkgs.fetchFromGitHub {
owner = "herbertjones";
repo = "nushell-ts-mode";
rev = "e07ecc59762fab8d5fa35bc6d3f522f74e580a2f";
hash = "sha256-C4RRph7zaO4PQkZcUSsFg2jWuLcZGtRjaPcNICj3JG0=";
};
})
(trivialBuild {
pname = "zig-ts-mode";
version = "0.0";
src = pkgs.fetchFromGitHub {
owner = "emacsmirror";
repo = "zig-ts-mode";
rev = "bb1e8287800868ee338e986bda5b5a1f5abf7445";
hash = "sha256-vstl13IWwAxaQTsy/bn/uCet4Oxm2edKjmwREfhNAk8=";
};
})
];
in {
programs.emacs = {
enable = true;
package = pkgs.emacs-nox.pkgs.withPackages (epkgs: plugins epkgs ++ [
(epkgs.trivialBuild {
pname = "myconf";
version = "0.0";
src = ./lisp;
})
(epkgs.trivialBuild {
pname = "myplugins";
version = "0.0";
src = ./plugins;
buildInputs = plugins epkgs;
# to prevent "Creating directory" "Permission denied" "/homeless-shelter" error
preBuild = "export HOME=$(pwd)";
})
]);
extraConfig = builtins.readFile ./init.el;
};
services.emacs = {
enable = true;
client.enable = true;
};
}