Hardware Configuration
All configuration files for reference target devices are in modules/reference/hardware, and the machine table that turns them into build targets is targets/laptop/machines.nix.
x86_64 Platforms
Section titled “x86_64 Platforms”Intel laptops — the generic image
Section titled “Intel laptops — the generic image”Intel laptops share one image. It passes display, network and audio through by PCI class rather than per-device ID, matches input devices by udev property, and carries per-board quirks (IOMMU ACS ids, suspend mode, webcam and fingerprint VID:PIDs) in union lists that one image applies to the whole fleet. There is no per-model target, and a new Intel laptop does not need one.
- Targets:
intel-laptop-debug/intel-laptop-release - Installers:
intel-laptop-debug-installer/intel-laptop-debug-netboot-installer - A/B update image:
intel-laptop-debug-sysupdate/intel-laptop-release-sysupdate - Verified on: Lenovo ThinkPad X1 Carbon, Dell Latitude 7330 Rugged, System76 Darter Pro
- Architecture: x86_64
Two feature axes vary the image; a target name gains one suffix per selected axis. The memory axes are mutually exclusive.
| Axis | Suffix | Effect |
|---|---|---|
low-mem |
-low-mem |
For machines with 16 GB or less: shrinks the flatpak app VM |
minimal-mem |
-minimal-mem |
Tablet-class units: shrinks the GUI VM to just under 2 GB |
storeDisk |
-storeDisk |
Puts the VM Nix store on disk instead of in memory |
So intel-laptop-low-mem-debug is the Dell Latitude 7330 build, and
intel-laptop-low-mem-storeDisk-release combines both.
Intel laptop, extended application set
Section titled “Intel laptop, extended application set”- Targets:
intel-laptop-extras-debug/intel-laptop-extras-release - Description: The same image with the
mvp-user-trial-extrasproduct profile - Architecture: x86_64
Boards the generic image cannot describe
Section titled “Boards the generic image cannot describe”These keep their own target because they are not Intel laptops: AMD IOMMU, desktop chassis, or a discrete GPU whose audio function must be paired with the display device by hand rather than swept up by PCI class matching.
Alienware m18 R2
Section titled “Alienware m18 R2”- Targets:
alienware-m18-R2-debug/alienware-m18-R2-release - Why separate: NVIDIA dGPU passed as a static multi-function pair, out-of-tree NIC driver in net-vm, host-owned panel backlight, and suspend disabled because the board does not resume
- Architecture: x86_64
Lenovo ThinkPad T14 AMD Gen 5
Section titled “Lenovo ThinkPad T14 AMD Gen 5”- Targets:
lenovo-t14-amd-gen5-debug/lenovo-t14-amd-gen5-release - Why separate:
amd_iommu,amdgpu, AMD ACP audio, and asimpledrmrenderer because iGPU passthrough does not work on this board - Architecture: x86_64
Demo Tower MK1
Section titled “Demo Tower MK1”- Targets:
demo-tower-mk1-debug/demo-tower-mk1-release - Why separate: AMD desktop; discrete Quadro passed through as a four-function group that includes its own xHCI controller
- Architecture: x86_64
Tower 5080
Section titled “Tower 5080”- Targets:
tower-5080-debug/tower-5080-release - Why separate: Intel desktop; discrete RTX 5080 needing the open NVIDIA drivers and NVIDIA modules in the guest initrd
- Architecture: x86_64
Virtualization Platforms
Section titled “Virtualization Platforms”VM Debug
Section titled “VM Debug”- Targets:
vm-debug/vm-debug-nogui/vm-release - Description: Virtual machine configurations for testing and development
- Architecture: x86_64
VMware
Section titled “VMware”- Target:
vmware-debug - Description: VMware-optimized configuration
- Architecture: x86_64
AArch64 (ARM64) Platforms
Section titled “AArch64 (ARM64) Platforms”NVIDIA Jetson Platform (Primary AArch64)
Section titled “NVIDIA Jetson Platform (Primary AArch64)”NVIDIA Jetson AGX Orin (32GB)
Section titled “NVIDIA Jetson AGX Orin (32GB)”- Native Targets:
nvidia-jetson-orin-agx-debug/nvidia-jetson-orin-agx-release - Cross-compiled:
nvidia-jetson-orin-agx-debug-from-x86_64/nvidia-jetson-orin-agx-release-from-x86_64 - No Demo Apps:
nvidia-jetson-orin-agx-debug-nodemoapps/nvidia-jetson-orin-agx-release-nodemoapps - Cross + No Demo:
nvidia-jetson-orin-agx-debug-nodemoapps-from-x86_64/nvidia-jetson-orin-agx-release-nodemoapps-from-x86_64 - Architecture: AArch64
- Status: Primary AArch64 reference platform
NVIDIA Jetson AGX Orin (64GB)
Section titled “NVIDIA Jetson AGX Orin (64GB)”- Native Targets:
nvidia-jetson-orin-agx64-debug/nvidia-jetson-orin-agx64-release - Cross-compiled:
nvidia-jetson-orin-agx64-debug-from-x86_64/nvidia-jetson-orin-agx64-release-from-x86_64 - No Demo Apps:
nvidia-jetson-orin-agx64-debug-nodemoapps/nvidia-jetson-orin-agx64-release-nodemoapps - Cross + No Demo:
nvidia-jetson-orin-agx64-debug-nodemoapps-from-x86_64/nvidia-jetson-orin-agx64-release-nodemoapps-from-x86_64 - Architecture: AArch64
NVIDIA Jetson Orin NX
Section titled “NVIDIA Jetson Orin NX”- Native Targets:
nvidia-jetson-orin-nx-debug/nvidia-jetson-orin-nx-release - Cross-compiled:
nvidia-jetson-orin-nx-debug-from-x86_64/nvidia-jetson-orin-nx-release-from-x86_64 - No Demo Apps:
nvidia-jetson-orin-nx-debug-nodemoapps/nvidia-jetson-orin-nx-release-nodemoapps - Cross + No Demo:
nvidia-jetson-orin-nx-debug-nodemoapps-from-x86_64/nvidia-jetson-orin-nx-release-nodemoapps-from-x86_64 - Architecture: AArch64
NXP Platform
Section titled “NXP Platform”NXP i.MX 8M Plus EVK
Section titled “NXP i.MX 8M Plus EVK”- Native Targets:
nxp-imx8mp-evk-debug/nxp-imx8mp-evk-release - Cross-compiled:
nxp-imx8mp-evk-debug-from-x86_64/nxp-imx8mp-evk-release-from-x86_64 - Architecture: AArch64
- Use Case: Industrial and embedded applications
Utility Configurations
Section titled “Utility Configurations”Hardware Scanning
Section titled “Hardware Scanning”- Target:
laptop-hw-scan - Description: Hardware compatibility scanning utility
- Architecture: x86_64
Build Recommendations
Section titled “Build Recommendations”Primary Targets for Development
Section titled “Primary Targets for Development”- x86_64:
intel-laptop-debug(the generic laptop image, and the one the hardware rigs run) - AArch64:
nvidia-jetson-orin-agx-debug-from-x86_64(primary ARM64 platform)
Cross-Compilation
Section titled “Cross-Compilation”All AArch64 targets have corresponding -from-x86_64 variants for cross-compilation from x86_64 development machines.
Installer Images
Section titled “Installer Images”Every laptop target has an -installer variant (a bootable ISO carrying the image) and a -netboot-installer variant (PXE, fetching the image at install time).
Adding New Hardware
Section titled “Adding New Hardware”An Intel laptop
Section titled “An Intel laptop”Usually nothing to add — build intel-laptop-debug and flash it. If something on the
board does not come up, add the one quirk it needs to the list that already covers it,
rather than creating a target:
| Symptom | Where the quirk goes |
|---|---|
| A device shares an IOMMU group with another and cannot be split | ghaf.hardware.passthrough.pciAcsOverride.ids in modules/reference/hardware/flake-module.nix |
Suspend does not resume, but s2idle works |
ghaf.services.power-manager.suspend.s2idleModels in modules/reference/hardware/intel-laptop/extra-config-host.nix — a DMI "<board_vendor> <board_name>" string |
| The internal webcam or fingerprint reader is not passed through | modules/reference/passthrough/known-devices.nix — a VID:PID entry |
| A vendor hotkey block does not reach the GUI VM | modules/hardware/passthrough/evdev-rules.nix — a platform pathTag |
| A host driver claims a device before vfio-pci | the host module_blacklist in modules/reference/hardware/intel-laptop/intel-laptop.nix |
The unit needs less memory than the fleet default? Use an existing axis
(low-mem, minimal-mem) rather than a new target.
A board the generic image cannot describe
Section titled “A board the generic image cannot describe”AMD hosts, desktops, and discrete GPUs still need their own module — the generic image is Intel-only, and PCI class matching cannot pair a dGPU with its audio function.
- Run
laptop-hw-scanon the machine to dump its PCI, USB and DMI data. - Add a module directory under
modules/reference/hardware
and register it as
hardware-<name>in that directory’sflake-module.nix. Use tower-5080 as the reference for a discrete-GPU board. - Add one stanza to
targets/laptop/machines.nix.
That file is data only — no
ghaf.*, nolibcalls, no conditionals; everything else belongs in the module. This is enforced bychecks.laptop-table-is-data.