Skip to content

Nix development environments on Android ​

A custom terminal can own a Nix session without depending on the Termux application or Android Terminal. The difficult boundary is the execution backend: Android app permissions, Linux namespaces, the hypervisor and guest ABI determine which environment that terminal can actually launch.

This survey answers six questions:

  1. What separates a terminal, a distro and a VM owner?
  2. How much of nix-on-droid's PRoot backend can the existing app reuse?
  3. Can an app independently launch NixOS through AVF, including on MediaTek?
  4. What changes for Qualcomm Gunyah, pvmfw and Microdroid?
  5. When can a native canonical Nix store replace PRoot?
  6. Which option fits Sparkles today, and what should be implemented next?

Last reviewed: September 30, 2026.

IMPORTANT

This is an evidence catalog, not a claim that every listed backend runs on every named SoC. Device validation distinguishes locally observed behavior, upstream demonstrations, source inspection and proposed experiments. The application keeps its existing no-DEX constraint; calling installed framework classes through JNI remains in scope.

The latest Pixel 7 Pro contributor report adds a live NNS canonical-store session under the terminal app UID and AVF declarations for both protected/non-protected VMs. The report uses a provisioned kernel/policy stack and root ADB; custom guest boot, Nix workloads and Sparkles ownership remain untested. The locally connected Pad/phone results and contributor observations are labeled separately.

Master catalog ​

SubjectCategoryEnvironmentDeployment requirementLink
nix-on-droidShared Android kernel; translated syscallsLinux Nix packages, module systemOrdinary sideloaded app; executable-files policy must permit bootstrapDeep dive
AVF on Pixel / MediaTekHardware VM managed by AndroidFull NixOS guestCompatible framework/backend plus management and custom-guest permissionsDeep dive
Gunyah on QualcommVendor hypervisor / privileged VM launcherFull Linux guest; NixOS adaptation neededDocumented routes need root; firmware, driver and VMM compatibilityDeep dive
NNS and native storesShared Android kernel; real namespacesCanonical Linux store, portable servicesRoot provisioning; NNS app route needs kernel and SELinux integrationDeep dive
Other execution routesEmulated VM / remote host / Bionic portVariesDifferent portability, latency and packaging compromisesAlternatives

Taxonomy ​

By execution boundary ​

BoundarySubjectsConsequence
Syscall translationPRootApp UID and Android kernel remain authoritative
Independent guest kernelAVF, GunyahNixOS can own systemd, namespaces and guest filesystems
Kernel namespace isolationNNSFast Linux execution; Android kernel features still constrain packages
CPU emulation or remote machineAlternativesAvoids local EL2 requirements at a resource or connectivity cost

By deployment privilege ​

TierPlausible pathsGate
Stock sideload onlyPRootApp executable-files restrictions and bootstrap compatibility
ADB / Shizuku setupAVF where permission grants and APIs existShell authority cannot manufacture a missing hypervisor or override all SELinux rules
Rooted deviceGunyah, root-managed native store, AVF experimentsActual driver, firmware and policy support
Custom kernel / ROMNNS app namespaces, platform AVF ownerDeliberate kernel and policy maintenance

Milestones ​

Date / releaseCapabilityEvidence and limitation
Android 10 (2019)Apps targeting API 29 cannot execute files in writable app homeAndroid execution policy; crucial for downloaded Linux packages
Android 14 / API 34 (2023)AVF framework Java APIs introducedFramework README; system APIs, not a public SDK promise
Android 15 (2024)Management permission available to preinstalled apps; development ADB grant retainedFramework README; custom-image permission is an additional gate
Android 16 source release (2025)Custom Linux image machinery used by Android TerminalReleased source; API availability must be checked per firmware
June 2025 demonstration; repository reviewed September 2026Snapdragon 8 Elite Gunyah Linux bootVendor-device guide; one rooted Lenovo configuration
September 2026 source snapshotsCustom Sparkles app and NNS namespace integrationBaseline, source ledger; source evidence is separate from hardware validation
September 30, 2026 contributor reportPixel 7 Pro live NNS session and both AVF guest-mode declarationsPhysical-device report; provisioned stack, no guest or workload launched by collector

Suggested reading paths ​

Sources ​