gitwtfhub

wtf is nix-android?

devindudeman/nix-android — explained in plain English

Analysis updated 2026-05-18

21ShellAudience · developerComplexity · 4/5LicenseSetup · hard

TL;DR

A tool that lets you declare which apps and settings should be on an Android phone in a Nix config file, then applies that plan over adb without needing root.

Mindmap

mindmap
  root((nix-android))
    What it does
      Declares apps in Nix
      Plans changes first
      Applies over adb
    Tech stack
      Nix
      adb
      GrapheneOS target
    Use cases
      Reproducible phone setup
      Settings drift checks
      Wiped device bootstrap
    Status
      Alpha stage
      Tested on emulator
      Tested on GrapheneOS

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Declare a list of apps and Android settings in a config file and apply them to a phone over adb.

REASON 2

Preview a read-only plan of exactly what will change before touching a real device.

REASON 3

Reproducibly set up a wiped or factory-reset GrapheneOS phone from a saved configuration.

REASON 4

Check drift between a phone's current state and what was declared since the last apply.

What's in the stack?

NixShelladbGrapheneOSAOSP

How it stacks up

devindudeman/nix-androidanndreloopez012/campuslands-dev-sqljustingrammens/osn-2026
Stars212121
LanguageShellShellShell
Setup difficultyhardeasyeasy
Complexity4/51/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · hard Time to first run · 1h+

Requires the Nix package manager installed and a device or emulator reachable over adb, project is still alpha stage.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

Wtf does this do

nix-android brings the idea behind nix-darwin, a tool that manages a Mac's settings from a single configuration file, to an Android phone instead. You write down which apps you want installed and which settings you want turned on in a configuration file, the tool shows you a plan of exactly what it intends to change, and then it makes those changes on the phone by talking to it over adb, the standard Android debugging connection, without needing root access or replacing the phone's operating system. The project can install apps from F-Droid, from GitHub or Gitea release pages, from direct download links, or from local APK files, and it can also record that a Google Play app or another app the user installed by hand should simply be present, even if the tool cannot install it directly. Beyond apps, it can manage things like dark mode, private DNS, which app is the default browser or messaging app, permission grants, per-app language settings, and battery optimization exemptions. By default it only adds things you declare and leaves everything else on the phone alone, and the planning step never actually writes anything to the device, it only figures out what it would do. The README is upfront that the project is at an early, alpha stage. The core loop of installing apps and changing settings has been tested end to end on an Android emulator and has completed a real install plus a reversible settings change on a locked GrapheneOS phone, which the README calls the first fully supported target, alongside the emulator used for testing changes safely. The author explicitly warns not to point the tool's more powerful commands at a phone you use every day without first reviewing what they will do. Setting it up requires the Nix package manager, since the whole configuration is written as a Nix file, along with a connected Android device or emulator reachable over adb. The project includes detailed documentation covering the full list of options, the exact boundary of what it can and cannot manage on a phone, and a development workflow for testing changes on an emulator. It is released under the MIT license.

Yoink these prompts

Prompt 1
Explain how nix-android applies a declared configuration to a phone without needing root access.
Prompt 2
Help me write a nix-android config that installs F-Droid apps and sets dark mode and private DNS.
Prompt 3
Walk me through the difference between the plan, switch, and status commands in this tool.
Prompt 4
Show me what nix-android can and cannot manage on a locked-bootloader Android device.

Frequently asked questions

wtf is nix-android?

A tool that lets you declare which apps and settings should be on an Android phone in a Nix config file, then applies that plan over adb without needing root.

What language is nix-android written in?

Mainly Shell. The stack also includes Nix, Shell, adb.

What license does nix-android use?

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

How hard is nix-android to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is nix-android for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.