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; }; # *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 = [ ]; }; }; # *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 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 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 # org-re-reveal # FIXME very not nice hash mismatch when building # gptel # TODO uncomment when there will be a new release including GPT-4o ]) ++ (with elpaPackages; [ delight kind-icon ef-themes indent-bars ement ]) ++ (with nongnuPackages; [ eat corfu-terminal haskell-ts-mode ]); in mainPackages ++ (builtins.attrValues extraPackages)