There are already a few tools for automating nix packages updates, and
nvfetcher is a kind of yet another tool for this. But unlike some of those tools,
- non-intrusive - it generates a nix source expr file that can be “injected” into packages drvs, rather than rewriting something.
- flexible - “how to track the version update of a package” and “how to fetch a package” are not correlated, so we are free to make arbitrary combinations of package source and fetcher.
- powerful - with the help of
nvchecker, which supports exhaustive upstream version sources, e.g. github release, git commit, and pypi release, etc.,
nvfetcheris able to track many kinds of version updates and prefetch them.
- fast -
nvfetcheris buit on the top of shake, which means that it has some basic properties of a build system, such as never build one thing more than once.
It can be configured by either a TOML file or a eDSL language in Haskell, where the later one is much powerful. Base on shake, the internal structure of
nvfetcher is very extensible, with many components decoupled. It might not be mature yet as a new-born tool, but I believe it won’t be hard to add some features which we don’t yet have.