{ lib, inputs, config, pkgs, ... }: with lib; with lib.custom; let cfg = config.apps.tools.emacs; emacs = with pkgs; (emacsPackagesFor emacs30-pgtk) .emacsWithPackages (epkgs: with epkgs; [ treesit-grammars.with-all-grammars vterm mu4e ]); in { options.apps.tools.emacs = { enable = mkBoolOpt false "Enable Emacs"; # doom = rec { # enable = mkBoolOpt false; # forgeUrl = mkOpt types.str "https://github.com"; # repoUrl = mkOpt types.str "${forgeUrl}/doomemacs/doomemacs"; # configRepoUrl = mkOpt types.str "${forgeUrl}/hlissner/.doom.d"; # }; }; config = mkIf cfg.enable { nixpkgs.overlays = [ inputs.emacs-overlay.overlays.default ]; home.packages = with pkgs; [ ## Emacs itself binutils # native-comp needs 'as', provided by this emacs # HEAD + native-comp ## Doom dependencies git ripgrep gnutls # for TLS connectivity ## Optional dependencies fd # faster projectile indexing imagemagick # for image-dired pinentry-emacs zstd # for undo-fu-session/undo-tree compression ## Module dependencies # :email mu4e mu isync # :checkers spell (aspellWithDicts (ds: with ds; [en en-computers en-science])) # :tools editorconfig editorconfig-core-c # per-project style config # :tools lookup & :lang org +roam sqlite # :lang latex & :lang org (latex previews) texlive.combined.scheme-medium # :lang beancount beancount fava # :lang nix age ]; }; }