aboutsummaryrefslogblamecommitdiff
path: root/home/programs/emacs/default.nix
blob: 99dc6081e3fa9a93d9a50d7520a20f1afdef2f16 (plain) (tree)
1
2
3
4
5
6
7
8
9
 
       



       
   

                        
                                                      
          
           
             
                    
           



                     
                     
                 
              



                         
                          
                     
              





                   
                 
           
                
                   
              
               
                   
        
               




                                        
             
               


                    




                                  
                              
                                   
                            



                               
                                                     

      

  
                                                       


                    
                             
                                                           
                                                                     









                              
                                                 
                                                               

    
{
  self,
  pkgs,
  lib,
  ...
}:
let
  packages =
    epkgs: with epkgs; [
      aidermacs # pair programming in Emacs with Aider
      cape
      cargo
      consult
      consult-denote
      corfu
      denote
      denote-journal
      denote-markdown
      denote-org
      denote-sequence
      denote-silo
      diminish
      direnv
      docker
      docker-compose-mode
      dockerfile-mode
      exec-path-from-shell
      flymake-hledger
      git-link
      go-mode
      gotest
      hcl-mode
      jq-mode
      json-mode
      json-reformat
      ledger-mode
      magit
      marginalia
      markdown-mode
      nix-mode
      orderless
      protobuf-mode
      rg
      rust-mode
      terraform-mode
      toml-mode
      tree-sitter
      tree-sitter-langs
      treesit-grammars.with-all-grammars
      vertico
      yaml-mode
      yasnippet
      yasnippet-capf
    ];
  emacsFiles = [
    "early-init.el"
    "init.el"
    "site-lisp/init-base.el"
    "site-lisp/init-completion.el"
    "site-lisp/init-eshell.el"
    "site-lisp/init-programming.el"
    "site-lisp/init-text.el"
    "site-lisp/init-ui.el"
  ];
  mkEmacsFile = file: {
    ".config/emacs/${file}" = {
      source = "${self}/home/programs/emacs/${file}";
    };
  };
in
{
  home.file = lib.mkMerge (map mkEmacsFile emacsFiles);

  programs.emacs = {
    enable = true;
    extraPackages = packages;
    # FIXME: https://github.com/NixOS/nixpkgs/issues/395169
    package = pkgs.emacs.override { withNativeCompilation = false; };
  };

  home.packages = with pkgs; [
    aspell
    aspellDicts.en
    aspellDicts.en-science
    aspellDicts.en-computers
  ];

  home.sessionVariables = {
    EDITOR = "${pkgs.emacs}/bin/emacsclient -a=";
    ASPELL_CONF = "dict-dir ${pkgs.aspellDicts.en}/lib/aspell";
  };
}