{ lib, pkgs, flakeRoot, home-manager, config, ... }: let username = config.defaultUser or "henrov"; emacsPkg = pkgs.emacs-pgtk.override { withTreeSitter = true; }; 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 ]; # Emacs config files earlyInitFile = "${flakeRoot}/assets/traveldroid/conf/emacs/early-init.el"; initFile = "${flakeRoot}/assets/traveldroid/conf/emacs/init.el"; in { _module.args.hmUsers = { ${username} = { home.packages = [ emacsPkg ]; home.sessionVariables = { EDITOR = "emacs"; XDG_SCREENSHOTS_DIR = "~/screenshots"; }; programs.emacs = { enable = true; package = emacsPkg; extraPackages = emacsExtraPackages; }; home.file = { ".emacs.d/early-init.el" = { source = earlyInitFile; }; ".emacs.d/init.el" = { source = initFile; }; }; }; }; }