The following list only includes the options defined by Mobile NixOS.

Refer to the NixOS options listing for more options.

Options list

mobile.adbd.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables adbd on the device.

mobile.beautification.silentBoot
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

When enabled, fbcon consoles are disabled.

mobile.beautification.splash
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

When enabled, plymouth is configured with nice defaults.

Note that this requires an update to the kernel command-line parameters, thus the boot image may need to be reflashed.

mobile.beautification.useKernelLogo
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"\"config.mobile.enable\""}
Description:

Whether silentBoot assumes the kernel logo is used as early splash, or leaves the fbcon unmapped such that (possibly) the vendor splash is kept on the display until the stage-1 boot interface starts.

By default, when using mobile.enable = true, this will assume the kernel is patched to provide the fbcon logo ASAP.

When mobile.enable is false, for example when using the Mobile NixOS stage-1 in a "normal" NixOS configuration, fbcon will not be enabled on VT1. What this means exactly will depend on the platform in use.

mobile.boot.additionalConsoles
Type:
list of string
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

List of additional console names to be prepended in the list of consoles in the kernel cmdline.

These will have a lower priority than the console listed in defaultConsole, and assumedly other kernel cmdline parameters added by the user.

This option is useful to add additional consoles like the serial console to the list so that console multiplexing during boot can print messages to it too.

The kernel’s own messages will not be printed on those consoles.

mobile.boot.boot-control.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables usage of boot-control to mark A/B boot as successful.

mobile.boot.defaultConsole
Type:
null or string
Description:

When not null, sets a console= parameter early in the kernel cmdline.

This option is useful to control the default console that will be used by the produced system, since otherwise it is impossible to remove an added console= parameter from the cmdline.

When using beautification options with the kernel logo, the console will be set to tty2, "losing" messages to the second VT. Without beautification, this will be set to tty1.

You can also add additional console params to the kernel cmdline, the last valid one in the list will be used for kernel messages by default during boot.

mobile.boot.enableDefaultSerial
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Whether or not to enable the serial console as an additional console.

mobile.boot.enableSerial
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

Whether or not to enable the serial console as an additional console.

mobile.boot.serialConsole
Type:
null or string
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

The console name for the serial console. Additional parameters allowed.

It will be used as an additional console by default. It can also be set as the default console with mobile.boot.enableDefaultSerial.

mobile.boot.stage-1.bootlog.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

Enables bootlogd logging multiplexer.

mobile.boot.stage-1.bootlog.kmsg
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables logging to /dev/kmsg.

Note that this may render switching to stage-2 inoperable.

mobile.boot.stage-1.compression
Type:
one of "gzip", "xz"
Default:
{"_type"=>"literalExpression", "text"=>"\"gzip\""}
Description:

The compression method for the stage-1 (initrd).

This may be set as a default by some devices requiring specific compression methods. Most likely to work around size limitations.

mobile.boot.stage-1.contents
Type:
list of (attribute set)
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

Additional files for the initrd.

See makeInitrd for use of contents.

mobile.boot.stage-1.crashToBootloader
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

When the stage-1 bootloader crashes, prefer rebooting directly to bootloader rather than panic by killing init.

This may be preferrable for devices with direct serial access.

Note that console ramoops requires the kernel to panic, this should be set to false if you rely on console ramoops to debug issues.

mobile.boot.stage-1.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

Whether to use the Mobile NixOS stage-1 implementation or not.

This will forcible override the NixOS stage-1 when enabled.

mobile.boot.stage-1.extraUtils
Type:
list of ((attribute set) or package)
Description:

Additional packages to be included inside stage-1.

Do note that special manipulation happens and may not be compatible with everything.

The format for extra commands is: { package = package; extraCommand = extraCommand }

Where extraCommand is executed at build time, generally to fix the package for stage-1 use.

mobile.boot.stage-1.fail.delay
Type:
signed integer
Default:
{"_type"=>"literalExpression", "text"=>"10"}
Description:

Duration (in seconds) before a reboot on failure.

mobile.boot.stage-1.fail.reboot
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

Reboots the device after a delay on failure.

mobile.boot.stage-1.fbterm.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables fbterm.

mobile.boot.stage-1.fbterm.fb
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"/dev/fb1\""}
Description:

framebuffer to run fbterm on.

mobile.boot.stage-1.firmware
Type:
list of package
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

List of packages containing firmware files to be included in the stage-1 for the device.

mobile.boot.stage-1.gui.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

enable splash and boot selection GUI

mobile.boot.stage-1.gui.waitForDevices.delay
Type:
signed integer
Default:
{"_type"=>"literalExpression", "text"=>"0"}
Description:

Minimum delay spent waiting for input devices to settle.

The boot GUI will wait until this many seconds elapsed without changes before starting.

mobile.boot.stage-1.gui.waitForDevices.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Whether to wait a bit for input devices before starting the user interface.

This is only necessary on "slow" busses where devices may arrive a tad later than expected.

Generally, only enable when a device needed to input the passphrase is connected via USB.

mobile.boot.stage-1.kernel.additionalModules
Type:
list of string
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

Module names to add to the closure. They will not be modprobed.

mobile.boot.stage-1.kernel.allowMissingModules
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

Chooses whether the modules closure build fails if a module is missing.

mobile.boot.stage-1.kernel.modular
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Whether the kernel is built with modules or not. This will enable modules closure generation and listing modules to bundle and load.

mobile.boot.stage-1.kernel.modules
Type:
list of string
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

Module names to add to the closure. They will be modprobed.

mobile.boot.stage-1.kernel.package
Type:
null or package
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Kernel to be used by the system-type to boot into the Mobile NixOS stage-1.

This is not using a kernelPackages attrset, but a kernel derivation directly.

mobile.boot.stage-1.kernel.useNixOSKernel
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"!config.mobile.enable"}
Description:

Whether Mobile NixOS relies on upstream NixOS settings for kernel config.

Enable this when using the NixOS machinery for kernels.

mobile.boot.stage-1.kernel.useStrictKernelConfig
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Whether or not to fail when the config file differs when built.

When building a personal configuration, this should be disabled (false) for convenience, as it allows implicitly tracking revision updates.

When in testing scenarios (e.g. building an example system) this should be enabled (true), as it ensures all required configuration is set as expected.

mobile.boot.stage-1.networking.IP
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"172.16.42.1\""}
Description:

IP address for the USB networking gadget.

mobile.boot.stage-1.networking.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables networking.

mobile.boot.stage-1.networking.hostIP
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"172.16.42.2\""}
Description:

IP address for the USB networking gadget.

mobile.boot.stage-1.shell.console
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"console\""}
Description:

Selects the /dev/_ device to use.

Use ttyS0 for serial, tty1 for first VT or keep the default to console for the last defined console= kernel parameter.

mobile.boot.stage-1.shell.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables a shell before switching root.

This shell (as currently configured) will not allow switching root.

mobile.boot.stage-1.shell.shellOnFail
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables a shell on failures.

mobile.boot.stage-1.ssh.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables ssh during stage-1.

CURRENT CONFIGURATION ALSO OPENS ACCESS TO ALL WITHOUT A PASSWORD NOR SSH KEY.

mobile.boot.stage-1.usb.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

Enables USB features. For now, only Android-based devices are supported.

mobile.boot.stage-1.usb.features
Type:
list of string
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

android_usb features to enable.

mobile.bootloader.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

Whether the bootloader configuration for Mobile NixOS is enabled.

Installation and management of the Mobile NixOS bootloading components is not implemented at this point in time. (e.g. flashing boot.img on android, boot partition on other systems.)

mobile.device.firmware
Type:
null or package
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Informal option that the end-user can use to get their device’s firmware package.

The firmware will be added to hardware.firmware automatically for most devices.

This is not added automatically to the system firmwares for some devices as some bundles will be unredistributable.

mobile.device.identity.manufacturer
Type:
string
Description:

The device’s manufacturer name.

mobile.device.identity.name
Type:
string
Description:

The device’s name as advertised by the manufacturer.

mobile.device.name
Type:
string
Description:

The device’s codename. Must match the device folder.

mobile.device.supportLevel
Type:
one of "supported", "best-effort", "broken", "vendor", "unsupported", "abandoned"
Default:
{"_type"=>"literalExpression", "text"=>"\"unsupported\""}
Description:

Support level for the device.

mobile.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

When this setting is set to false, including Mobile NixOS in your NixOS configuration should be a no-op.

mobile.generatedDiskImages
Type:
attribute set of (submodule)
Description:

Disk image definitions that will be created at build.

mobile.generatedDiskImages..additionalCommands
Type:
strings concatenated with "\n"
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Additional commands to run during the disk image build.

mobile.generatedDiskImages..alignment
Type:
signed integer
Default:
{"_type"=>"literalExpression", "text"=>"1048576"}
Description:

Partitions alignment.

Automatically computed partition start position will be aligned to multiples of this value.

The default value is most likely appropriate.

mobile.generatedDiskImages..gpt.diskID
Type:
null or string matching the pattern [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Identifier for the disk.

mobile.generatedDiskImages..gpt.hybridMBR
Type:
list of string
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

Creates an hybrid MBR with the given (string) partition numbers.

Up to three partitions can be present in the hybrid MBR, an additional special partition can be placed last, named EE. When EE is present last the protective partition for the GPT will be placed last.

See man sgdisk

mobile.generatedDiskImages..gpt.partitionEntriesCount
Type:
signed integer
Default:
{"_type"=>"literalExpression", "text"=>"128"}
Description:

Number of partitions in the partition table.

The default value is likely appropriate.

mobile.generatedDiskImages..imagePath
Type:
path
Default:
{"_type"=>"literalExpression", "text"=>"\"${config.output}${config.location}\""}
Description:

Output path for the image file.

mobile.generatedDiskImages..location
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Location of the image in the $out path.

The default value means that $img == $out, which means that the image is bare at the out path.

Other values should start with the directory separator (/), and refer to the desired name.

The $img variable in the build script refers to $out$location.

mobile.generatedDiskImages..mbr.diskID
Type:
string matching the pattern [0-9a-fA-F]{8}
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Identifier for the disk.

mobile.generatedDiskImages..name
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"disk-image\""}
Description:

Base name of the output

mobile.generatedDiskImages..partitioningScheme
Type:
one of "mbr", "gpt"
Description:

Partitioning scheme for the disk image output.

mobile.generatedDiskImages..partitions
Type:
list of (submodule)
Description:

List of partitions to include in the disk image.

mobile.generatedDiskImages..partitions.*.bootable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Sets the "legacy bios bootable flag" on the partition.

mobile.generatedDiskImages..partitions.*.filesystem
Type:
null or (submodule)
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

A filesystem image configuration.

The filesystem image produced by this configuration is the default value for the raw submodule option, unless overriden.

mobile.generatedDiskImages..partitions.*.filesystem.additionalCommands
Type:
strings concatenated with "\n"
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Additional commands to run during the filesystem image build.

mobile.generatedDiskImages..partitions.*.filesystem.btrfs.partitionID
Type:
null or string matching the pattern [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Volume ID of the filesystem.

mobile.generatedDiskImages..partitions.*.filesystem.ext4.partitionID
Type:
null or string matching the pattern [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Volume ID of the filesystem.

mobile.generatedDiskImages..partitions.*.filesystem.extraPadding
Type:
signed integer
Default:
{"_type"=>"literalExpression", "text"=>"0"}
Description:

When size is computed automatically, how many bytes to add to the filesystem total size.

mobile.generatedDiskImages..partitions.*.filesystem.fat32.partitionID
Type:
null or string matching the pattern [0-9a-fA-F]{1,8}
Default:
{"_type"=>"literalExpression", "text"=>"\"[Depends on the file system creation time]\""}
Description:

Volume ID of the filesystem.

The default is a number which depends on the file system creation time.

mobile.generatedDiskImages..partitions.*.filesystem.filesystem
Type:
one of "squashfs", "fat32", "ext4", "btrfs"
Description:

Filesystem used in this filesystem image.

mobile.generatedDiskImages..partitions.*.filesystem.imagePath
Type:
path
Default:
{"_type"=>"literalExpression", "text"=>"\"${config.output}${config.location}\""}
Description:

Output path for the image file.

mobile.generatedDiskImages..partitions.*.filesystem.label
Type:
null or string
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Filesystem label

Not to be confused with either the output name, or the partition label.

mobile.generatedDiskImages..partitions.*.filesystem.location
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Location of the image in the $out path.

The default value means that $img == $out, which means that the image is bare at the out path.

Other values should start with the directory separator (/), and refer to the desired name.

The $img variable in the build script refers to $out$location.

mobile.generatedDiskImages..partitions.*.filesystem.name
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"filesystem-image\""}
Description:

Base name of the output

mobile.generatedDiskImages..partitions.*.filesystem.populateCommands
Type:
strings concatenated with "\n"
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Commands used to fill the filesystem.

$PWD is the root of the filesystem.

mobile.generatedDiskImages..partitions.*.filesystem.size
Type:
null or signed integer
Default:
{"_type"=>"literalExpression", "text"=>"\"[automatically computed]\""}
Description:

When null, size is computed automatically.

Otherwise sets the size of the filesystem image.

Note that the usable space in the disk image will most likely be smaller than the size given here!

mobile.generatedDiskImages..partitions.*.filesystem.squashfs.compression
Type:
one of "gzip", "xz", "zstd"
Default:
{"_type"=>"literalExpression", "text"=>"\"xz\""}
Description:

Volume ID of the filesystem.

mobile.generatedDiskImages..partitions.*.isGap
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

When set to true, only the length attribute is used, and describes an unpartitioned span in the disk image.

mobile.generatedDiskImages..partitions.*.length
Type:
null or signed integer
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Size in bytes for the partition.

Defaults to the filesystem image length (computed at runtime).

mobile.generatedDiskImages..partitions.*.name
Type:
string
Description:

Identifier for the partition.

mobile.generatedDiskImages..partitions.*.offset
Type:
null or signed integer
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Offset (in bytes) the partition starts at.

Defaults to the next aligned location on disk.

mobile.generatedDiskImages..partitions.*.partitionLabel
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"config.name"}
Description:

Partition label on supported partition schemes. Defaults to ${name}.

Not to be confused with filesystem label.

mobile.generatedDiskImages..partitions.*.partitionType
Type:
string matching the pattern [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12} or string matching the pattern [0-9a-fA-F]{2}
Default:
{"_type"=>"literalExpression", "text"=>"\"Linux filesystem data (0FC63DAF-8483-4772-8E79-3D69D8477DE4)\""}
Description:

Partition type UUID.

Not to be confused with partitionUUID.

mobile.generatedDiskImages..partitions.*.partitionUUID
Type:
null or string matching the pattern [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Partition UUID, for supported partition schemes.

Not to be confused with filesystem UUID.

Not to be confused with partitionType.

mobile.generatedDiskImages..partitions.*.raw
Type:
null or package or path
Default:
{"_type"=>"literalExpression", "text"=>"\"[contents of the filesystem attribute]\""}
Description:

Raw image to be used as the partition content.

By default uses the output of the filesystem submodule.

mobile.generatedDiskImages..partitions.*.requiredPartition
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

For GPT, sets the Required Partition attribute on the partition.

mobile.generatedFilesystems
Type:
attribute set of (submodule)
Description:

Filesystem definitions that will be created at build.

mobile.generatedFilesystems..additionalCommands
Type:
strings concatenated with "\n"
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Additional commands to run during the filesystem image build.

mobile.generatedFilesystems..btrfs.partitionID
Type:
null or string matching the pattern [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Volume ID of the filesystem.

mobile.generatedFilesystems..ext4.partitionID
Type:
null or string matching the pattern [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Volume ID of the filesystem.

mobile.generatedFilesystems..extraPadding
Type:
signed integer
Default:
{"_type"=>"literalExpression", "text"=>"0"}
Description:

When size is computed automatically, how many bytes to add to the filesystem total size.

mobile.generatedFilesystems..fat32.partitionID
Type:
null or string matching the pattern [0-9a-fA-F]{1,8}
Default:
{"_type"=>"literalExpression", "text"=>"\"[Depends on the file system creation time]\""}
Description:

Volume ID of the filesystem.

The default is a number which depends on the file system creation time.

mobile.generatedFilesystems..filesystem
Type:
one of "squashfs", "fat32", "ext4", "btrfs"
Description:

Filesystem used in this filesystem image.

mobile.generatedFilesystems..imagePath
Type:
path
Default:
{"_type"=>"literalExpression", "text"=>"\"${config.output}${config.location}\""}
Description:

Output path for the image file.

mobile.generatedFilesystems..label
Type:
null or string
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

Filesystem label

Not to be confused with either the output name, or the partition label.

mobile.generatedFilesystems..location
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Location of the image in the $out path.

The default value means that $img == $out, which means that the image is bare at the out path.

Other values should start with the directory separator (/), and refer to the desired name.

The $img variable in the build script refers to $out$location.

mobile.generatedFilesystems..name
Type:
string
Default:
{"_type"=>"literalExpression", "text"=>"\"filesystem-image\""}
Description:

Base name of the output

mobile.generatedFilesystems..populateCommands
Type:
strings concatenated with "\n"
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Commands used to fill the filesystem.

$PWD is the root of the filesystem.

mobile.generatedFilesystems..size
Type:
null or signed integer
Default:
{"_type"=>"literalExpression", "text"=>"\"[automatically computed]\""}
Description:

When null, size is computed automatically.

Otherwise sets the size of the filesystem image.

Note that the usable space in the disk image will most likely be smaller than the size given here!

mobile.generatedFilesystems..squashfs.compression
Type:
one of "gzip", "xz", "zstd"
Default:
{"_type"=>"literalExpression", "text"=>"\"xz\""}
Description:

Volume ID of the filesystem.

mobile.hardware.eink.enable
Type:
unspecified value
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enable to change some defaults so they work better on an eink display.

mobile.hardware.eink.enableEinkTheme
Type:
unspecified value
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enable only the eink changes affecting the theme.

mobile.hardware.ram
Type:
signed integer
Description:

Total RAM available (in MB, 1GB = 1024MB).

This may be used to turn on or off features depending on the device’s capabilities.

mobile.hardware.screen.height
Type:
signed integer
Description:

Height of the device’s display.

mobile.hardware.screen.width
Type:
signed integer
Description:

Width of the device’s display.

mobile.hardware.soc
Type:
string
Description:

Give the SOC name for the device.

mobile.hardware.socs.allwinner-a64.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is Allwinner A64

mobile.hardware.socs.allwinner-r18.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is Allwinner-R18

mobile.hardware.socs.exynos-7880.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is Exynos 7880

mobile.hardware.socs.mediatek-mt6755.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is Mediatek MT6755 (Helio P10)

mobile.hardware.socs.mediatek-mt6785.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is Mediatek MT6785 (Helio G90)

mobile.hardware.socs.mediatek-mt8127.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is Mediatek MT8127

mobile.hardware.socs.mediatek-mt8183.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is Mediatek MT8183

mobile.hardware.socs.qualcomm-apq8064-1aa.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is APQ8064–1AA

mobile.hardware.socs.qualcomm-msm8939.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is msm8939

mobile.hardware.socs.qualcomm-msm8940.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is msm8940

mobile.hardware.socs.qualcomm-msm8953.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is msm8953

mobile.hardware.socs.qualcomm-msm8996.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is msm8996

mobile.hardware.socs.qualcomm-msm8998.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is msm8998

mobile.hardware.socs.qualcomm-sc7180.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is 7c (SC7180)

mobile.hardware.socs.qualcomm-sdm660.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is SDM660

mobile.hardware.socs.qualcomm-sdm845.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is SDM845

mobile.hardware.socs.qualcomm-sm6125.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is SM6125

mobile.hardware.socs.rockchip-op1.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is RK3399-OP1

mobile.hardware.socs.rockchip-rk3399s.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

enable when SOC is RK3399S

mobile.kernel.structuredConfig
Type:
list of function that evaluates to a(n) (attribute set)
Description:

Functions returning kernel structured config.

The functions take one argument, an attrset of helpers. These helpers are expected to be used with with, they provide the yes, no, whenOlder and similar helpers from lib.kernel.

The whenHelpers are configured with the appropriate version already.

mobile.quirks.audio.alsa-ucm-meld
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Combines the derivation output path share/alsa/ucm2/ with pkgs.alsa-ucm-conf and points ALSA to the result.

mobile.quirks.exynos.fb-notify.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enable this on a device which requires the framebuffer to be notified for some components to work right.

With some Samsung phones it is required or else the display will not be updating.

Prefer patching the kernel to enable the framebuffer when the driver inits instead of fixing it in userspace.

mobile.quirks.fb-refresher.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enables use of msm-fb-refresher. Use sparingly, it is better to patch software to flip buffers instead.

Note that while it was written for Qualcomm devices, this workaround may be useful for other vendors too.

mobile.quirks.fb-refresher.stage-1.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Add msm-fb-refresher to stage-1.

It should not be needed for the usual assortment of Mobile NixOS tools. They already handle flipping the framebuffer as needed.

mobile.quirks.fdt-forward.nodes
Type:
list of string
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

FDT nodes to forward to the kexec’d system.

mobile.quirks.fdt-forward.props
Type:
list of list of string
Default:
{"_type"=>"literalExpression", "text"=>"[ ]"}
Description:

Pair of [node prop] to forward to the kexec’d system.

Only the prop described on the exact node will be forwarded.

mobile.quirks.qualcomm.dwc3-otg_switch.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enable this on a device which requires otg_switch to be configured for OTG to work.

mobile.quirks.qualcomm.fb-notify.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enable this on a device which requires the framebuffer to be notified for some components to work right.

The most likely thing this fixes is touch input.

mobile.quirks.qualcomm.sc7180-modem.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enable this on a mainline-based SC7180 device for modem/Wi-Fi support

mobile.quirks.qualcomm.sdm845-modem.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enable this on a mainline-based SDM845 device for modem support

mobile.quirks.qualcomm.wcnss-wlan.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Enable this on a device which uses wcnss wlan.

mobile.quirks.supportsStage-0
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Set to true when a device, and its kernel, can use kexec.

This will enable booting into the generation’s kernel.

mobile.quirks.u-boot.additionalCommands
Type:
strings concatenated with "\n"
Default:
{"_type"=>"literalExpression", "text"=>"\"\""}
Description:

Additional U-Boot commands to run.

mobile.quirks.wifi.disableMacAddressRandomization
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Disables MAC address randomization.

This may be required by some hardware or drivers, or combination. When the feature is enabled (quirk disabled) it may cause the wifi interface to disappear when enabled, as long as Network Manager is active.

mobile.rootfs.enableDefaultConfiguration
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"true"}
Description:

Whether some of the rootfs configuration is managed by Mobile NixOS or not.

mobile.rootfs.rehydrateStore
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"config.nix.enable"}
Description:

Whether to rehydrate the store at first boot or not.

The only reason you would disable this is to build a target system that has no Nix binaries.

mobile.system.android.appendDTB
Type:
null or (list of (path or string))
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

List of dtb files to append to the kernel, when device uses appended DTB.

mobile.system.system
Type:
one of "aarch64-linux", "armv7l-linux", "x86_64-linux"
Description:

Defines the kind of target architecture system the device is.

This will automagically setup cross-compilation where possible.

mobile.system.type
Type:
one of "uefi", "u-boot", "android", "depthcharge", "none"
Description:

Defines the kind of system the device is.

The different kind of system types will define the outputs produced for the system.

mobile.usb.gadgetfs.functions
Type:
attribute set
Description:

Mapping of logical gadgetfs functions to their implementation names.

mobile.usb.idProduct
Type:
string
Description:

USB product ID for the USB gadget.

mobile.usb.idVendor
Type:
string
Description:

USB vendor ID for the USB gadget.

mobile.usb.mode
Type:
null or one of "android_usb", "gadgetfs"
Default:
{"_type"=>"literalExpression", "text"=>"null"}
Description:

The USB gadget implementation the device uses.

services.eg25-manager.enable
Type:
boolean
Default:
{"_type"=>"literalExpression", "text"=>"false"}
Description:

Whether to enable Quectel EG25 modem manager service.

services.eg25-manager.package
Type:
package
Default:
{"_type"=>"literalExpression", "text"=>"pkgs.eg25-manager"}
Description:

The eg25-manager derivation to use.