Restore my Omarchy: from bare metal to my computer #7534
gouveags
started this conversation in
Suggestions
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hey everyone.
I have been quietly following this journey since Omakub. I installed it on day two, over an existing Ubuntu setup, against the documentation advice, and quickly learned why that warning existed 😂
I later installed it properly on my laptop and spent a lot of time making it mine. When Omarchy arrived, I was just as excited, but much busier. I still wanted a personal computer. I simply had less time to rebuild one.
Fifty seconds to Omarchy
DHH recently celebrated an Omarchy Quattro installation world record of 50 seconds.
That made me wonder whether the stopwatch stops one step too early.
Fifty seconds gets me to Omarchy.
How long until it gets me back to my Omarchy?
Much of this is already being solved
Dots remembers portable configuration. Backup protects and restores
$HOME. The current ISO rebuilds the operating system.Discussion #5588 and PR #6965 also explore packages, themes, webapps, and selective restoration. I do not want to propose another backup system or compete with that work.
I think these pieces could meet in one simple experience, split into two moments.
1. Back up this Omarchy
On the computer I am using today, Omarchy offers Back up this Omarchy.
The first time, it asks me to connect GitHub through
gh. Omarchy creates a private repository with a conventional name, perhapsomarchy-state, then publishes two small things there:That receipt remembers which applications, webapps, themes, and plugins I installed, which defaults I removed, and which supported services I enabled.
Personal files do not belong in Git. The same setup connects the encrypted restic destination from the Backup plan and runs the first backup of
$HOME.To the user, this is one setup and one status. Underneath, GitHub holds the small, inspectable description of the computer, while restic holds the encrypted personal data.
After that first setup, Omarchy keeps both current. There is no script I must remember to run shortly before the disk dies.
2. Restore my Omarchy
On a fresh installation, Omarchy offers Restore my Omarchy. The same action could remain available later from the Omarchy menu.
I authenticate with GitHub. Omarchy finds the private
omarchy-staterepository. I connect the existing encrypted backup destination, choose my previous machine and snapshot, then confirm.Omarchy restores
$HOME, applies portable Dots, and replays the environment receipt through the current Omarchy installers.At the end, it tells me what returned, what was skipped, what is no longer available, and which applications need me to sign in again.
That is the whole product:
Start with the smallest useful version
The eventual experience could have a beautiful Quattro interface and appear directly after a fresh installation.
The first contribution can be much smaller. Connect GitHub, create the private repository, record installation and removal actions managed by Omarchy, then prove they can be replayed safely on a clean machine. Dots and Backup already provide the foundations around it.
No old kernel, drivers, machine identifiers, session tokens, exact historical package versions, new package manager, or Omarchy cloud.
This keeps the disposable computer model intact. The new machine receives the current Omarchy, not an image of the old one.
The operating system stays disposable. The time spent making it yours becomes disposable too.
The question
@dhh @ryanrhughes, does this two moment model fit the direction of the Dots and Backup plans?
More specifically, would a first pull request that creates the private GitHub state repository and records and replays Omarchy managed installation actions be useful? If so, I would be happy to prototype it and test the complete clean machine round trip.
@andresreibel, your discussion and pull request already solve meaningful parts of this problem. This proposal is intended to build on that work, not around it.
All reactions