We have an issue currently where there is a discrepancy between dependencies installed by the Umbrel OS image builder and dependencies installed on Umbrel OS via OTA updates.
For example if we move the TTY QR script into getumbrel/umbrel we could easily forget that that OTA update also needs to install the python3-qrcode dependency via apt, otherwise all the OTA updated Umbrels will fail to boot after update.
Likewise if we add a new feature directly in getumbrel/umbrel via OTA that needs a dependency but forget to add it to getumbrel/umbrel-os then existing users will be able to update via OTA and boot fine but the Umbrel OS images will be unbootable.
This worries me a bit as it seems like it would be very easy to miss this stuff without automated E2E testing.
Ideally we'd setup E2E testing but a quick solution now to remove the duplication would be to have a script like ./scripts/umbrel-os/install-dependencies
inside getumbrel/umbrel that lists all apt packages, pip3 stuff, or whatever other dependencies we need on Umbrel OS.
Any time we need a new Umbrel OS dependency we add it to that script.
Each OTA update should execute that script.
And also the Umbrel OS image builder should execute that same script.
That gives us one central place to keep track of all dependencies for Umbrel OS.