A terminal UI for managing Nix flake inputs. View, update, and lock your flake inputs interactively.
- View flake inputs - See all inputs with name, type, revision, and last modified time
- Check for updates - Background checks show how many commits each input is behind
- Update inputs - Update selected inputs or all at once
- View changelog - Browse commit history for any git input
- Lock to commit - Select a specific commit to lock an input to
- Multi-forge support - GitHub, GitLab, SourceHut, Codeberg, and generic git
nix run github:anomalyco/melt-rsOr add to your flake inputs:
{
inputs.melt.url = "github:anomalyco/melt-rs";
}git clone https://github.com/anomalyco/melt-rs
cd melt-rs
nix develop
cargo build --release# Run in current directory
melt
# Run in specific flake directory
melt /path/to/flake| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
Space |
Toggle selection |
u |
Update selected inputs |
U |
Update all inputs |
c |
View changelog for current input |
r |
Refresh flake metadata |
q / Esc |
Quit |
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
Space |
Select commit for locking |
y |
Confirm lock to selected commit |
n |
Cancel lock |
q / Esc |
Back to list |
The STATUS column shows update status for git inputs:
(empty) - Not yet checked...- Currently checkingok- Up to date+N- N commits behind (e.g.,+5means 5 commits behind)
src/
├── main.rs # CLI entry point
├── app.rs # Application state machine
├── tui.rs # Terminal setup/teardown
├── event.rs # Input handling
├── error.rs # Error types
├── model/ # Data structures
│ ├── flake.rs # FlakeData, FlakeInput, ForgeType
│ ├── commit.rs # Commit, ChangelogData
│ └── status.rs # UpdateStatus
├── service/ # Business logic
│ ├── nix.rs # Nix flake commands
│ └── git.rs # Git operations (via git2)
├── ui/ # Rendering
│ └── theme.rs # Catppuccin Mocha colors
└── util/
└── time.rs # Relative time formatting
# Enter dev shell
nix develop
# Run
cargo run -- /path/to/flake
# Test
cargo test
# Build release
cargo build --release| Variable | Description |
|---|---|
GITHUB_TOKEN |
GitHub personal access token for API authentication |
GH_TOKEN |
Alternative to GITHUB_TOKEN (used by gh CLI) |
Setting a GitHub token increases the API rate limit from 60 to 5000 requests/hour.
- Nix with flakes enabled
- Git (for changelog features, via libgit2)
- SSH agent (for private repos)
MIT