Skip to content

Repository files navigation

flake-status

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.

Usage

flake-status
  1. Discovers every ~/src/* with flake.nix + flake.lock
  2. Opens the UI immediately; VCS and inputs stream in separately (footer checking n/N)
  3. Left: flake list — mark is the worst finding on the right (red > amber > green)
  4. 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.

Keys

Key Action
j / k or arrows Move in list
/ Filter list
pgup / pgdn Scroll detail pane
q / ctrl+c Quit

Marks

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.

Updating locks (outside this tool)

nix flake update --flake ~/src/myflake
nix flake update --flake ~/src/myflake nixpkgs home-manager

How you bump a frozen rev (and when to unpin) stays outside this tool.

Develop

cd ~/src/flake-status
nix develop
go run .

nix build / nix run.

Layout

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

Agents

Prefer the same out-of-band update:

nix flake update --flake ~/src/example

About

Read-only TUI status dashboard for Nix flakes under ~/src

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages