This update is the fourth in a series of regular updates on the state of the project.

Only changes that have been accepted and merged in Mobile NixOS are chronicled here. There’s always more work currently in-progress.

Notable changes

3 PRs were merged during the month. This is not cheating, the last merged PR was merged late on the 29th.

This is not development slowing down. Far from it. Four new projects were added to the Mobile NixOS GitHub organization related to this month’s work. Keep on reading.

Graphical boot selection

Hot on the heels of the re-written init, and as teased, a working graphical boot selection is now available for Mobile NixOS platforms.

There is more than meets the eye in pull request #80.

To make this possible, a GUI toolkit of relatively small weight has to be found. After some research, it was found in the LittlevGL library. While it is geared more towards actual embedded development, it does have a Linux framebuffer backend, support for evdev input. This is all standard stuff that is well supported on all targets. What is really nice with that library is it also supports a “simulator” target, which is basically an SDL window.

With that said, I personally don’t want to write C, especially in complex use cases. I already worked on mruby integration for the Mobile NixOS stage-1. It was only natural to write mruby bindings for LittleVGL.

With all the exposition done. What does this look like? The header image of this news post is composed of four devices running the GUI. An actual screenshot of the GUI follows, for better clarity.

Screenshot of generation selection

This is not a feature complete generic replacement for a bootloader. Though, it can become one when kexec support is added in the future.

Additionally, as touched upon in the pull request, these bindings will allow us to improve the graphical boot process. In a future improvement we’ll be able to add information about the current running step, and better failure state reporting.


No new port were made in February. There is still a total of 10 devices you can build for.