227 lines
5.8 KiB
Nix
227 lines
5.8 KiB
Nix
pkgs: epkgs:
|
|
let
|
|
inherit (epkgs) melpaPackages nongnuPackages elpaPackages;
|
|
|
|
buildEmacsPackage =
|
|
args:
|
|
epkgs.trivialBuild {
|
|
pname = args.name;
|
|
inherit (args) src;
|
|
version = args.src.rev;
|
|
propagatedUserEnvPkgs = args.deps;
|
|
buildInputs = args.deps;
|
|
postInstall = args.postInstall or "";
|
|
};
|
|
|
|
# *Attrset* containig extra emacs packages
|
|
extraPackages = {
|
|
combobulate = buildEmacsPackage {
|
|
name = "combobulate";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "mickeynp";
|
|
repo = "combobulate";
|
|
rev = "e9c5be84062e8183f556d7133d5a477a57e37e51";
|
|
hash = "sha256-r6jObsYx7RRTJUmrCN5h3+0WcHqJA67emhr4/W3rBrM=";
|
|
};
|
|
deps = [ ];
|
|
};
|
|
gptscript = buildEmacsPackage {
|
|
name = "gptscript";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "emacs-openai";
|
|
repo = "gptscript-mode";
|
|
rev = "d9c6272de1288d3f42a1cbac136e5fac57e185e2";
|
|
hash = "sha256-RM0dptx8qm2b4fvW6oQ0Lq5kshRKcapeIW2piUMAZmw=";
|
|
};
|
|
deps = [ ];
|
|
};
|
|
p-search = buildEmacsPackage {
|
|
name = "p-search";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "zkry";
|
|
repo = "p-search";
|
|
rev = "3fcf06f862976433642d07d06ec911efc43d0189";
|
|
hash = "sha256-j4JEV+uHXK5Uf6/7D2AaSMKxBr3t59U+WNZzVsJ+gkc=";
|
|
};
|
|
deps = [ elpaPackages.heap ];
|
|
};
|
|
copilot = buildEmacsPackage {
|
|
name = "copilot";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "copilot-emacs";
|
|
repo = "copilot.el";
|
|
rev = "b7bff7b934837744688fd74191ecffb83b3bcc05";
|
|
hash = "sha256-MEsjXQIeiTI6NXN5rTW7HfFPC18IZnhAssma2BZa0ks=";
|
|
};
|
|
deps = with epkgs; [
|
|
s
|
|
dash
|
|
editorconfig
|
|
jsonrpc
|
|
f
|
|
];
|
|
};
|
|
lean4-mode = buildEmacsPackage {
|
|
name = "lean4-mode";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "leanprover-community";
|
|
repo = "lean4-mode";
|
|
rev = "76895d8939111654a472cfc617cfd43fbf5f1eb6";
|
|
hash = "sha256-DLgdxd0m3SmJ9heJ/pe5k8bZCfvWdaKAF0BDYEkwlMQ=";
|
|
};
|
|
deps = [
|
|
epkgs.dash
|
|
melpaPackages.magit
|
|
melpaPackages.lsp-mode
|
|
];
|
|
postInstall = ''
|
|
cp -r $src/data $LISPDIR
|
|
'';
|
|
};
|
|
kdl-ts-mode = buildEmacsPackage {
|
|
name = "kdl-ts-mode";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "dataphract";
|
|
repo = "kdl-ts-mode";
|
|
rev = "3dbf116cd19261d8d70f456ae3385e1d20208452";
|
|
hash = "sha256-4bfKUzzLhBFg4TeGQD0dClumcO4caIBU8/uRncFVVFQ=";
|
|
};
|
|
deps = [ ];
|
|
};
|
|
ultra-scroll = buildEmacsPackage {
|
|
name = "ultra-scroll";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "jdtsmith";
|
|
repo = "ultra-scroll";
|
|
rev = "78ab497c6568e4a99f34a84b4c9bfe87d1a71d8c";
|
|
hash = "sha256-q/LGP69GRtEEbSpXi9JUoZjr/UV1QMVjQw96M6qxsZU=";
|
|
};
|
|
deps = [ ];
|
|
};
|
|
eglot-booster = buildEmacsPackage {
|
|
name = "eglot-booster";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "jdtsmith";
|
|
repo = "eglot-booster";
|
|
rev = "e6daa6bcaf4aceee29c8a5a949b43eb1b89900ed";
|
|
hash = "sha256-PLfaXELkdX5NZcSmR1s/kgmU16ODF8bn56nfTh9g6bs=";
|
|
};
|
|
deps = [ ];
|
|
};
|
|
};
|
|
|
|
# *List* containing emacs packages from (M)ELPA
|
|
mainPackages =
|
|
builtins.filter
|
|
# if an extra package has the same name then give precedence to it
|
|
(package: !builtins.elem package.pname (builtins.attrNames extraPackages))
|
|
(
|
|
with melpaPackages;
|
|
[
|
|
meow
|
|
meow-tree-sitter
|
|
dracula-theme
|
|
nord-theme
|
|
catppuccin-theme
|
|
modus-themes
|
|
# solaire-mode
|
|
nerd-icons
|
|
nerd-icons-completion
|
|
nerd-icons-ibuffer
|
|
nerd-icons-dired
|
|
ligature
|
|
treemacs-nerd-icons
|
|
eshell-syntax-highlighting
|
|
fish-completion # fish completion for eshell
|
|
eshell-prompt-extras
|
|
eshell-atuin
|
|
eshell-command-not-found
|
|
clipetty
|
|
sideline
|
|
consult-eglot
|
|
# sideline-flymake
|
|
rainbow-delimiters
|
|
vertico
|
|
marginalia
|
|
consult
|
|
orderless
|
|
embark
|
|
embark-consult
|
|
magit
|
|
(magit-delta.override (old: {
|
|
# FIXME why is this needed?
|
|
melpaBuild =
|
|
args:
|
|
old.melpaBuild (
|
|
args
|
|
// {
|
|
packageRequires = (args.packageRequires or [ ]) ++ [ dash ];
|
|
}
|
|
);
|
|
}))
|
|
magit-todos
|
|
difftastic
|
|
with-editor
|
|
diff-hl
|
|
corfu
|
|
cape
|
|
which-key
|
|
nix-mode
|
|
nix-ts-mode
|
|
agenix
|
|
zig-mode
|
|
unisonlang-mode
|
|
purescript-mode
|
|
dhall-mode
|
|
envrc
|
|
inheritenv
|
|
popper
|
|
paredit
|
|
yaml-mode
|
|
hl-todo
|
|
markdown-mode
|
|
haskell-mode
|
|
terraform-mode
|
|
diredfl
|
|
org-modern
|
|
math-preview
|
|
org-roam
|
|
org-roam-ql
|
|
org-roam-ui
|
|
visual-fill-column
|
|
consult-org-roam
|
|
pass
|
|
password-store-otp
|
|
eldoc-box
|
|
go-translate
|
|
notmuch
|
|
consult-notmuch
|
|
poly-org
|
|
casual
|
|
gptel
|
|
agenix
|
|
solidity-mode
|
|
telega
|
|
aggressive-indent
|
|
mixed-pitch
|
|
visual-replace
|
|
org-super-agenda
|
|
# org-re-reveal # FIXME very not nice hash mismatch when building
|
|
]
|
|
)
|
|
++ (with elpaPackages; [
|
|
delight
|
|
kind-icon
|
|
ef-themes
|
|
indent-bars
|
|
ement
|
|
vundo
|
|
pulsar
|
|
])
|
|
++ (with nongnuPackages; [
|
|
eat
|
|
corfu-terminal
|
|
haskell-ts-mode
|
|
]);
|
|
in
|
|
mainPackages ++ (builtins.attrValues extraPackages)
|