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, nvfetcher
is
- 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.,nvfetcher
is able to track many kinds of version updates and prefetch them. - fast -
nvfetcher
is 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.