{ pkgs, ... }: let emacsclient-wrapper = pkgs.writeShellScriptBin "e" '' exec ${pkgs.emacs}/bin/emacsclient --reuse-frame --no-wait "$@" ''; in { home = { sessionPath = [ "$HOME/.emacs.d/bin" ]; packages = [ emacsclient-wrapper ]; }; programs.emacs = { enable = true; extraPackages = epkgs: with epkgs; [ vterm mu4e ]; }; services.emacs = { enable = true; defaultEditor = true; startWithUserSession = true; }; }