# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- { config, pkgs, lib, flakeRoot, ... }: let username = config.defaultUser or "henrov"; assetPath = "${flakeRoot}/generated/.config/emacs"; # Emacs package with Tree-sitter support emacsPkg = pkgs.emacs-pgtk.override { withTreeSitter = true; }; # Extra packages for Emacs via Home Manager emacsExtraPackages = epkgs: [ epkgs.manualPackages.treesit-grammars.with-all-grammars epkgs.nerd-icons epkgs.doom-modeline epkgs.diminish epkgs.eldoc epkgs.pulsar epkgs.which-key epkgs.expreg epkgs.vundo epkgs.puni epkgs.avy epkgs.consult epkgs.vertico epkgs.marginalia epkgs.crux epkgs.magit epkgs.nerd-icons-corfu epkgs.corfu epkgs.cape epkgs.orderless epkgs.yasnippet epkgs.yasnippet-snippets epkgs.rg epkgs.exec-path-from-shell epkgs.eat epkgs.rust-mode epkgs.rustic epkgs.nix-mode epkgs.hcl-mode epkgs.shell-pop epkgs.envrc epkgs.nixpkgs-fmt epkgs.f epkgs.gptel epkgs.catppuccin-theme epkgs.eldoc-box epkgs.sideline epkgs.sideline-flymake epkgs.sideline-eglot ]; in { # System-wide installation environment.systemPackages = [ emacsPkg ]; # Home Manager user-specific configuration for your default user home-manager.users = { ${username} = { home.sessionVariables = { EDITOR = "emacs"; XDG_SCREENSHOTS_DIR = "~/screenshots"; }; programs.emacs = { enable = true; package = emacsPkg; extraPackages = emacsExtraPackages; }; home.file = { ".emacs.d/early-init.el" = { source = "${assetPath}/early-init.el"; force = true; # <-- allow overwrite }; ".emacs.d/init.el" = { source = "${assetPath}/init.el"; force = true; # <-- allow overwrite }; }; }; }; }