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

11 PRs were merged during the month. Not an exciting month with fun and visible progress, but let’s point out interesting changes

Device specific website pages

The Devices List section is now formatted as a table, and links to one page per device.

This page can contain device-specific notes, and generally contains generic instructions depending on the device type. The side-bar uses generated content, but the page will use the README.adoc file when found in the device directory.

All of this is part of PR #120.

Supported way to include from system configuration

In PR #123 a supported way to include a device configuration to the system configuration was added. The Getting Started page explains the details.

This is useful when combined with the next higlighted changes. The device specific configuration doesn’t have to be handled by the end-user, the Mobile NixOS configuration handles it.


PR #126 adds support for WCNSS WLAN in Mobile NixOS, while enabling it for the only device that supports it.

This is the simplest Wi-Fi setup for Qualcomm-based hardware. Sadly, for other devices it’s much more involved.

Though, this does mean that we now have Wi-Fi support for one more device!

Bonus change: Buried in that same PR, we now use boot.initrd.enable = false rather than using isContainer. This fixes a couple of weird and annoying issues with the running system.

Device-specific polishing

These start implementing some polishing, in what I hope becomes the gold standard for device ports.

First, we configure the LEDs so the Linux kernel controls it during boot (z00t, oneplus3). This provides a tangible proof to the end-user that the kernel is currently in control and running.

Then, for asus-z00t, some kernel cleanup patches have been added. The first kind of change is to remove idiotic behaviour from the OEM kernel, like trampling over the kernel module load path. The second is more subtle, but welcomed when reading dmesg: reduce the useless logging present in some modules. The amount of logging is useless.

Finally, for oneplus-oneplus3, there’s a quirk to fix USB OTG support during boot. I don’t think any other device will need it, from a quick glance, but it’s still a good example of how to implement a quirk.


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