btw i use nix
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}