Introducing npins – Dependency pinning for Nix

Npins is a Nix dependency pinning tool strongly inspired by Niv. In fact, I hope it to be a worthy successor. If you’re familiar with Niv, the following new features might get your attention:

  • Track releases on any git repository, optionally with version bounds
  • Track Nix channels directly, which gives provides you the programs.sqlite database that isn’t present when tracking NixOS/nixpkgs as a git branch
  • First class GitLab support
  • Easy migration from Niv

Thank you to @​andir who wrote the initial code (and who made the mistake of giving me access to the repo :smiling_imp:).


Could you elaborate a bit on what you do differently in this project? I see niv is still maintained, having had a new release just 13 days ago. What is the motivation not to add this functionality to niv instead of starting a new project (e.g. Rust versus Haskell?)?



Note that Niv is maintained again. Npins development started shortly after this reddit post.

I can’t give you more details on this though because I wasn’t the one to start the project. However for me, I’m much more familiar with Rust than with Haskell so I didn’t mind, especially since the Niv code base appears dauntingly complex from my perspective.