Skip to content

Instantly share code, notes, and snippets.

@andyjeffries
Last active August 17, 2025 17:00
Show Gist options
  • Save andyjeffries/87c5963093c28116defe0f6cd76716c9 to your computer and use it in GitHub Desktop.
Save andyjeffries/87c5963093c28116defe0f6cd76716c9 to your computer and use it in GitHub Desktop.
Omarchy plugin concept

Omarchy plugin concept

My thinking is that there are multiple plugins, so that they can be used by companies AND third parties to (for example) support installation of development environments for particular languages, etc.

During installation

During installation you could define a list of plugins. Each plugin can either be a script URL or a GitHub repo. For example:

export OMARCHY_PLUGINS=andyjeffries/omarchy,basecamp/internal,https://omarchy.example.com/install
wget -qO- https://omarchy.org/install | bash

The Omarchy install will, after installing itself normally, loop through each plugin effectively doing the following:

  1. If it's a URL then download and execute it
  2. If it's a public GitHub repo then clone it locally to a known plugin folder
  3. If it's a private GitHub repo (i.e. failed to clone it as public), ask for the username/password or SSH private key location (which can be copied to ~/.ssh/ and then clone it locally to a known plugin folder

Plugin execution

I believe Omarchy installs to ~/.local/share/omarchy/, so as that's already a Git repo, rather than potentially have uncommitted changes or subrepository voodoo, maybe plugins are installed to ~/.local/share/omarchy-plugins/ in the format ~/.local/share/omarchy/PROVIDER/REPO.

Upon initial install it should simply follow the mechanism of looping through each PROVIDER/REPO, within it finding all migration/*.sh file, executing them and updating some config file to say the last version executed for each plugin.

Then also upon doing an Omarchy update, it can do the same thing it does for Omarchy - run back through each PROVIDER/REPO, pull changes and run any not-yet-run migrations.

That feels fairly consistent with the way Omarchy runs (I believe, but correct me if I'm wrong), allows for independent developers to hook in to install company-specific stuff or multiple layers on top.

It explicitly doesn't cover dependencies between plugins, for future consideration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment