IMO, the real headache is installing the supporting binaries ripgrep, fzf, lsp, tree-sitter, native-compilation, etc. I agree that emacs config should hew as close as possible to the defaults, and my init.el is pretty small. For the binaries, I build a docker container and run emacs in it. https://hub.docker.com/r/wwarner/emacs-gopy
I love the Docker option. Some alternatives worth mentioning:
- `use-package-ensure-system-package` can be used to autoinstall such binaries via the relevant `use-package` block.
- If you use a literate config, you can have executable shell blocks to install dependencies.
- If you use a package manager like Nix or HomeBrew (Brewfile), you can sync the package list. Bonus points for tangling those lists from a literate config.
- Some of those dependencies, including Emacs itself, are also available in `conda-forge`, and Conda is often available on servers. So you can also setup a Conda `environment.yml` to take care of your Emacs installation.