A lightweight dependency manager for Nix projects that simplifies adding and updating packages from GitHub, URLs, and other sources.
niv is a dependency manager specifically for Nix projects that streamlines the process of adding, updating, and tracking external packages. It solves the problem of manually managing remote sources like GitHub repositories or custom URLs by automating version tracking and providing a consistent interface for dependency operations.
Nix developers and system administrators who need a simple, reproducible way to manage dependencies in their Nix expressions, especially those working on projects with multiple external sources.
Developers choose niv for its minimal design, ease of use, and seamless integration with Nix. It eliminates the boilerplate of manually fetching and pinning dependencies, offering a practical alternative to more complex solutions like Nix flakes while maintaining compatibility with existing Nix tooling.
Easy dependency management for Nix projects
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Stores all dependency metadata in a single nix/sources.json file, ensuring transparency and reproducibility, as highlighted in the key features.
Automatically infers repository details when adding GitHub packages, reducing manual configuration, as shown in the add command examples.
Allows updating all dependencies or targeting specific ones with options to change branches, revisions, or versions, detailed in the update command section.
Supports fetching from arbitrary URLs using templates and overriding sources with local paths via environment variables, useful for development and testing workflows.
Exclusively designed for Nix projects, making it irrelevant for users of other build systems or package managers, limiting its general applicability.
Lacks advanced features like dependency resolution, version ranges, or deep integration with Nix flakes, which may be necessary for complex or modern workflows.
Commands like git and local are marked experimental in the add command, indicating potential instability and lack of long-term support, as noted in the README.