88 lines
1.9 KiB
Nix
88 lines
1.9 KiB
Nix
# {{{autogen}}}
|
|
{ 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
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|