Boot GUI: only show relevant reboot options #228
This adds a "HAL" options layer where we can describe some hardware-specific abstractions.
The only one implemented for now is the reboot modes list.
This list is interpreted by the boot GUI in an implementation-defined way. All of the implementation details are internal and could change at any time for now.
The goal is to make sure that, e.g. on the Pinephone, the reboot options that don't apply are not present.
We'll think it over for how we want to handle custom reboot commands, but some platforms (e.g. u-boot, depthcharge, qemu) don't and can't use them. A goal is to keep stage-2 as generic as possible, so building into it some knowledge of this is harder. At any rate, the user can still reboot, and hold the key combo as needed!
Implementation detail note:
The goal here is that in Nix, only generic labels are used to represent options that the HAL knows how to handle. So the current implementation is an implementation detail, and could change in the future, while leaving the interface (those labels) as they are.