A Python clone of nix-output-monitor that provides live, informative terminal output for Nix builds and related commands.
- Live status box for subcommands like
build,profile,home, andos - Persistent scrollback logs for build output and recent activity
- Progress tracking for builds, downloads, and uploads
- Time estimates based on historical build data
- JSON log support for modern
nix buildcommands - Drop-in replacement for
nix build,nix profile,home-manager, andnixos-rebuild
pip install pynom
# or with nix:
nix profile install .# Instead of: nix build .#something
pynom build .#something
# Instead of: nix profile upgrade
pynom profile upgrade hello
# Instead of: home-manager switch
pynom home switch
# Instead of: nixos-rebuild switch
pynom os switch
# Instead of: nix shell
pynom shell nixpkgs#hello
# Instead of: nix develop
pynom develop# Old-style nix-build
nix-build 2>&1 | pynom
# New-style with JSON logs (recommended)
nix build .#something --log-format internal-json -v 2>&1 | pynom --json
# Works with nixos-rebuild, home-manager, etc.
nixos-rebuild switch 2>&1 | pynom- Subcommands use the live TUI by default.
- In live TUI mode, the box shows current status and progress.
- Build logs and recent activity are printed once into scrollback instead of being redrawn inside the box.
- Pipe mode stays stream-oriented by default; use
pynom --tuiif you want the live box there too.
- Parses Nix build output (human-readable or JSON format)
- Tracks build dependencies and their status
- Displays a live status box and keeps logs in normal terminal scrollback
- Stores build times for future predictions
This is a Python reimplementation inspired by the Haskell nix-output-monitor. It aims for feature parity with a simpler codebase.