This update is the fifth 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

17 PRs were merged during the month. (The link says 18, but one of them was, to me, late in February, read the previous news item).

Let’s look at some of these.

Pine64 Pinephone “Braveheart”

This was teased about on the author’s twitter account. The inexpensive Pinephone is the latest new device added to Mobile NixOS.

This brings a bit more than only a new device. This is the fourth system type added to Mobile NixOS. The added system type (U-Boot) in theory will give us the ability to support any U-Boot-based system in a common way. In practice the still unmerged and WIP #94 shows how this is true by using U-Boot with another Pine64 device, the Pinebook Pro.

A nice thing that was verified again with this new device port is that the stage-2 image (the rootfs, the system.img) is indeed universal. It is using the same AArch64 build of the system image as Android-based devices, and Depthcharge-based devices.

Our build for the Pinephone relies on the downstream kernel from the Pine64 community, with only one added patch. The same is done for the U-Boot build.

The added patches are user-experience-focused patches that are using the RGB LED of the phone to show the boot status.

Other than that, the hardware support is not complete, but it is supported at the same level as other devices, plus Wi-Fi working.

See PR #96 for all the details.

Hydra builds

This is not entirely an in-repository change. There’s #97 and #133 that are relevant to this. The mobile-nixos:unstable jobset on Hydra is the other part of the puzzle.

What this gives us is automatic continuous builds of Mobile NixOS against the nixos-unstable NixOS channel. From this, we can track changes that break the Mobile NixOS builds, and track internal breakage to some parts of Mobile NixOS.

This is not even the best part. As can be seen in #133, we are now delivering up-to-date stage-2 rootfs, which allows end-users without the required hardware to bootstrap themselves using a pre-built image. The requirement to have a native AArch64 machine to build the system image is no more. While not ideal, users could make use of their phone to build a customized image, or simply, do a nixos-rebuild on it.

It already paid its worth in gold, as by the time this was developed, two regressions were spotted and quickly fixed. And furthermore, I hope that the exercising of the cross-compilation framework will help the NixOS developers working on making cross-compilation better in NixOS.

Other mentions

  • Using GitHub Actions, #112 checks new PRs for some simple breakage.

  • Developers can now use nconfig to configure their kernel using the “porcelain” bin/menuconfig, as added in #109.

Ports

One new device has been merged during March.

  • Pine64 Pinephone “Braveheart” (pine64-pinephone-braveheart) [@samueldr] (#96)

Bringing the total of devices to 11.