dotfiles/home-manager/emacs.nix

115 lines
2.6 KiB
Nix

{ lib, config, options, pkgs, ... }: let
epkgs = pkgs.emacsPackagesFor pkgs.emacsPgtkNativeComp;
engpkgs = pkgs.emacsPackagesNgFor pkgs.emacsPgtkNativeComp;
in {
programs.emacs = {
enable = true;
package = pkgs.emacsPgtkNativeComp;
extraConfig = ''
(setq copilot-node-executable "${pkgs.nodejs-slim-16_x}/bin/node")
'';
overrides = final: prev: {
copilot = final.melpaBuild rec {
pname = "copilot";
version = "20220916.1";
commit = "f316299bab75a380ee04e7ca49c79baf0fb296d6";
src = pkgs.fetchFromGitHub {
owner = "zerolfx";
repo = "copilot.el";
rev = commit;
sha256 = "sha256-n4bXnlNfCC00jVeODUlqZNThf7i8rj69zzMMfXBy8tk=";
};
packageRequires = with final; [ dash editorconfig s ];
recipe = pkgs.writeText "recipe" ''
(copilot
:repo "zerolfx/copilot.el"
:fetcher github
:files ("dist" "*.el"))
'';
meta.description = "Emacs plugin for GitHub Copilot";
};
};
extraPackages = p:
(with p; [
all-the-icons
avy
company
counsel
counsel-projectile
copilot
diminish
direnv
dune
tuareg
elixir-mode
evil
evil-leader
# evil-magit
evil-surround
flycheck
flycheck-inline
forge
ggtags
git-gutter-fringe
haskell-mode
htmlize
ivy
ivy-hydra
lua-mode
linum-relative
lsp-haskell
lsp-ivy
lsp-mode
lsp-ui
lsp-treemacs
magit
markdown-mode
neotree
nix-buffer
nix-mode
org-bullets
org-ref
pandoc-mode
projectile
reason-mode
request
s
solarized-theme
swiper
terraform-mode
treemacs
use-package
vue-mode
weechat
which-key
]) ++ (with engpkgs; [
crdt
doom-modeline
evil-goggles
evil-mc
notmuch
org-cliplink
ox-mediawiki
rust-mode
undo-tree
]);
};
fonts.fontconfig.enable = true;
home.packages = [
pkgs.rnix-lsp
(pkgs.runCommand "all-the-icons-fonts" {} ''
mkdir -p $out/share/fonts/truetype
cp ${epkgs.melpaPackages.all-the-icons.src}/fonts/*.ttf $_
'')
];
# todo: precompile?
home.file.".emacs.d/init.el".source = ../emacs/init.el;
home.file.".emacs.d/early-init.el".source = ../emacs/early-init.el;
}