nxv

Find any version of any Nix package. Instantly.

Search nearly a decade of nixpkgs history, find the exact package version and commit, then use it from the CLI, browser, API, or NixOS module.

Language
Rust
License
MIT
Stars
134
Forks
1

What it fixes

Sometimes production needs Python 2.7, Ruby 2.6, or another fossil nobody is proud of. nxv finds the nixpkgs commit where that exact fossil still existed.

nxv turns historical nixpkgs lookup from archaeology into a normal command.

  • Guessing which nixpkgs commit carried a version
  • Searching years of Git history by hand
  • Re-evaluating old channels for every query
  • Treating a legacy dependency like a full-time research project

What it actually does

A useful product surface, not another README wearing a blazer.

01

Fast package search

Bloom filters reject misses quickly and SQLite FTS5 handles the useful work.

02

Version history

See when a version appeared, changed, and disappeared from channels.

03

Exact commits

Get a verified nixpkgs revision you can feed directly to Nix.

04

Nested package sets

Search Python, Haskell, and other nested ecosystems without special pleading.

05

CLI and browser

Query locally from the terminal or use the hosted web interface.

06

API and NixOS module

Run nxv as an HTTP service with managed index updates.

Pick your poison

Run it the way that annoys you least.

Search without installing
NXV_API_URL=https://nxv.urandom.io nix run github:utensils/nxv -- search python 2.7
Install the CLI
curl -sSfL https://raw.githubusercontent.com/utensils/nxv/main/install.sh | sh
Cargo
cargo install nxv

Plays well with the tools already causing trouble

  • Nix
  • nixpkgs
  • SQLite
  • FTS5
  • HTTP API
  • NixOS
  • Docker
  • shell completions

Under the hood

Simple enough to explain without a thirty-slide architecture deck.

  1. 01

    Channel snapshots

    Hydra-built releases provide verifiable package inventories back to 2016.

  2. 02

    Indexer

    Historical package sets become a compact SQLite index plus Bloom filters.

  3. 03

    Query engine

    Local or remote search resolves names, versions, and exact commits quickly.

  4. 04

    Reproducible result

    Use the returned revision in a shell, flake, profile, or system configuration.

Stop spelunking through nixpkgs

Ask for the version, get the commit, and return to the legacy problem you were avoiding.

Latest release: v0.7.0