basementhud/pipeline/head This commit looks goodDetails
This dumb module includes a ton of useless drivers. There doesn't seem
to be a way to avoid including it, because it is expressed as a
dependency of the *network* module, and even explicitly omitting the
modules it would include seems to have no effect.
Machine-specific data, such as SSH keys, should not be included in the
immutable root filesystem image, as this would prevent multiple machines
running from the same image. These few files can be stored locally, on
the SD card on eMMC flash.
The first time a machine boots up using this image, its local storage is
initialized. This involves creating a new filesystem on the block
device and generating SSH host keys. Once the storage is initialized,
it is remounted read-only. All subsequent mounts are read-only as well.
[Playwright] is a cross-browser automation framework, intended for
automating browser-based GUI application tests. It also works as a
general remote-control tool for automating basically anything having to
do with a browser.
Playwright requires a special Firefox binary that it manages itself. To
avoid downloading and installing Playwright and Firefox, and thus
storing them in memory, we need them to be already available in the
rootfs image. Since I want the control software to be updated easily,
without rebooting the machine, I decided to separate it into its own
project, [Voonex]. A short shell script to install/update and run it is
launched by the systemd user instance.
[Playwright]: https://playwright.dev/
[Voonex]: https://git.pyrocufflink.blue/dustin/voonex