1{ 2 pkgs, 3 lib, 4 config, 5 ... 6}@inputs: 7 8let 9 cfg = config.custom.emacs; 10 emacs = (pkgs.emacsPackagesFor pkgs.emacs29-pgtk).emacsWithPackages ( 11 epkgs: with epkgs; [ 12 treesit-grammars.with-all-grammars 13 vterm 14 mu4e 15 ] 16 ); 17in 18{ 19 options.custom.emacs.enable = lib.mkEnableOption "emacs"; 20 21 config = lib.mkIf cfg.enable { 22 nixpkgs.overlays = [ 23 inputs.emacs-overlay.overlays.default 24 ]; 25 26 home.packages = with pkgs; [ 27 binutils 28 emacs 29 gnutls 30 imagemagick 31 pinentry-emacs 32 # for undo-fu-session/undo-tree compression 33 zstd 34 ]; 35 36 programs.zsh.initExtra = lib.mkAfter '' 37 PATH="''${XDG_CONFIG_HOME:-$HOME/.config}/emacs/bin":$PATH 38 ''; 39 40 home.file = { 41 ".mail.cap".text = '' 42 application/pdf; xdg-open %s 43 ''; 44 }; 45 46 services.emacs = { 47 enable = true; 48 package = emacs; 49 socketActivation.enable = true; 50 # defaultEditor = true; 51 }; 52 }; 53}