/myelpa-gen

Example usage of elpa-mirror

Primary LanguageEmacs Lisp

This repo is an experiment in maintaining emacs package installation as a separate repo, to some extent.

The main idea is to use packages elpa-mirror in particular, and quelpa secondarily.

The home-generate directory is used to generate myelpa, a .gitignore'd directory which is currently a symlink to a repo to provide packages for my init.

The home-test directory can be used to check that myelpa is functioning for consumption.

My use of the home-* prefix is an allusion to approximately using HOME=. emacs in each.

In home-generate, currently using familiar archives, gnu, nongnu and melpa-stable, to install packages. In particular, melpa-stable is used to install quelpa, which can be used to install quite general packages, especially elpa-mirror itself, as well as evil-org, which currently has an untagged bug fix, and terminal-here which is not on any archives.

I did explore package-vc originally, to serve the same function as quelpa, but it works by adding symlinks to elpa/, which currently elpa-mirror seems to skip. Currently package-vc is available on the emacs-29 branch.

Finally, home-test simply sets the following to install the now completely local archive:

(setq package-archives
      `(("myelpa" . ,(expand-file-name "../myelpa"))))

Still quelpa is available here, and might be useful when wanting to quickly test an arbitrary package on your main emacs. You might also just add archives to package-archives temporarily. Either way, you can decide to update myelpa if you decide the package is something you want to keep.

I've found using elpa-mirror an interesting exercise. I didn't use a separate emacs for generating myelpa at first, but quickly got the sense I should. And now I think I may consider this approach on into the future. In the past, I've experimented with git subtrees, straight.el, and a brief half-hearted attempt at borg.el. Starting straight.el up after a git clean -dffx is not really encouraging to debugging an init, as it can take a while to prepare everything from scratch. And git subtrees can make a mess of the git history for my init file. But introducing a notion that packages are maintained locally in a separate repo, may help to more easily consider these alternatives, and encourage a cleaner init, that is easier and faster to troubleshoot.