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

As with the last update, a big part of the 10 pull requests merged were bug fixes or minor changes.

Here’s a quick look at some of the nicer things achieved.

Forced kernel configuration normalization

The kernel-builder infrastructure now forces the configuration file used in its build to be normalized.

What is normalization? Simply put, it’s about updating the kernel configuration file so all of the options represent the values set in the current kernel build.

This is a somewhat breaking change, as it forces kernel configurations to be kept up to date even if no changes were made by the maintainer. Though this makes the final build somewhat more declarative, as options removed and new options will be reflected in the kernel configuration in the repository.


The new Mobile NixOS Autoporter project is an experimental tooling intended to expedite the first step in porting to a new device.

In a few words, it finds as many facts about a given device as it can. The current implementation uses pre-expanded factory images from OEM, but plans are in the work to work from files the user provide instead or in addition of.

This enables the porter-developer to start from known true values for the device, rather than needing them to find out those values. The more valuable ones are the subtle ones, like the USB gadget modes, or system as root.

It does not provide a complete skeleton yet. Mainly for now it’s missing the kernel derivation. Though we might be able to provide likely source locations depending on some factors.

All of this is not theoretical. We already have one port done through following this process! Look at the pull request #205 where the commits also tries to show the work that was needed to go from the skeleton files to a working port.

Note that this port was made easier by the presence of another Snapdragon 660 port existing. Many quirks end up working similarly between devices on the same base platform.

Hopefully this will help some of you take the plunge into trying to make a new port! Though note that this does not replace the still non-existent documentation about porting guidelines. It might still not be trivial.

New ports

One new device was merged this time.

Bringing the total of devices to 14.

Closing words

The last month’s update was skipped due to the lower amount of work being complete, the main contributor (me, samueldr) was tied-up working on implementing the redesign. Fear not, it’s not lack of motivation, but temporary engagements that slowed things down. For the time being this project is still my main focus, and I hope it can stay for longer.