Two-pane status dashboard for flakes under ~/src: which locks are behind,
which exact version pins have a newer release, and whether unpublished work
lines up with main / origin.
Working personal tool — steal ideas freely. MIT licensed.
Read-only: the TUI surfaces potential problems; it does not update locks or
activate systems. GitHub Dependabot opens a weekly grouped flake.lock PR.
Use nix flake update locally when you want a bump outside that schedule.
flake-status- Discovers every
~/src/*withflake.nix+flake.lock - Opens the UI immediately; VCS and inputs stream in separately (footer
checking n/N) - Left: flake list — mark is the worst finding on the right (red > amber > green)
- Right: focused flake as the border title; path, VCS strip, every root input
Shared flake refs (e.g. five copies of nixpkgs) share one nix flake metadata call — that is singleflight: the first caller starts the fetch, everyone else waits for that result. Each metadata / remote-fetch has a timeout so a stall cannot leave the UI on spinners.
| Key | Action |
|---|---|
j / k or arrows |
Move in list |
/ |
Filter list |
pgup / pgdn |
Scroll detail pane |
q / ctrl+c |
Quit |
| Glyph | Color | Meaning |
|---|---|---|
✓ |
green | Ok |
! |
amber | VCS drift |
✗ |
red | Floating input behind tip or error |
… |
muted | Still checking |
Left-list rollup: any red finding on the right → red; else any amber → amber; else green.
A root input whose flake ref is frozen (git SHA in rev/ref/?rev=, or an exact = version) stays green and shows pin f13ff45a (2026-08-07) so a held-back nixpkgs is visible. The lock is not compared to a rewritten floating tip.
Behind-tip rows look like f13ff45a (2026-08-07) -> ec2d622d (2026-08-17): the mark, rev, and arrow use the row accent; dates from lastModified are white.
VCS compares named topic bookmarks and the working copy (@) against main and main@origin when using Jujutsu; git repos show main vs origin/main. An empty parked topic bookmark (or empty @) on main counts as aligned. Remotes are fetched with limited concurrency.
nix flake update --flake ~/src/myflake
nix flake update --flake ~/src/myflake nixpkgs home-managerHow you bump a frozen rev (and when to unpin) stays outside this tool.
cd ~/src/flake-status
nix develop
go run .nix build / nix run.
| Path | Role |
|---|---|
main.go |
Entry, help |
ui.go |
Two-pane Bubble Tea UI |
survey.go |
Discovery, lock vs tip, singleflight metadata cache |
vcs.go |
jj/git fetch + bookmark alignment |
Prefer the same out-of-band update:
nix flake update --flake ~/src/example