nvrs
π¦ fast new version checker for software releases π¦

Features
nvchecker compatibility
check the release notes and configuration docs for compatibility updates and instructions.
Speed
| command | time per updated package | details |
|---|---|---|
nvrs |
~ 0.03s | API requests includeddepends on internet speed |
nvrs --cmp |
~ 0.0008s | depends on disk speed |
nvrs --take |
~ 0.001s | depends on disk speed |
Sources
aurcratesiogiteagithubgitlab(with custom hosts)website(regex)
QOL improvements
ALLargument for the--takecommand--no-failflag to prevent exiting on recoverable errors--nukecommand to delete packages from all files--list-sourcescommand to list all available sources
Installation
nvrs is available as a package in the AUR. you can install it with your preferred AUR helper, example:
or manually:
nvrs can be installed via Cargo with:
note that crates installed using cargo install require manual updating with cargo install --force.
- download the latest binary from GitHub's release page
- allow execution
- move the file to a directory in
$PATH(using/usr/binas an example)
Usage
nvrs relies on a configuration file. see configuration.
the core commands are:
nvrs- fetches latest versions of defined packagesnvrs --cmp- compares newver with oldver and displays differencesnvrs --take- automatically updates oldver. takes in a comma-separated list of package names (ALLfor all packages)nvrs --nuke- deletes packages from all files. takes in a comma-separated list of names (yes, just like a hitman)- the
--no-failflag - as the name suggests, specifying this will make nvrs not exit on recoverable errors
Example usage
# download the example configuration file
# fetch latest package versions (should return `NONE -> version` for all packages)
# compare them to latest known versions (should also return `NONE -> version`)
# update the known versions
for all available commands, options and flags, see nvrs --help and the manual page.
Configuration
nvrs relies on a configuration file (example) containing basic settings, such as oldver, newver & keyfile paths, as well as package entries. supported config paths:
$XDG_CONFIG_HOME/nvrs.toml(~/.config/nvrs.tomlif the variable is not set)./nvrs.toml- custom paths set with
nvrs --config
__config__ table
this configures the behavior of nvrs. see the example config.
available fields:
| name | description | type | required |
|---|---|---|---|
oldver |
path to the oldver file |
string | βοΈ |
newver |
path to the newver file |
string | βοΈ |
keyfile |
path to a keyfile (see keyfile structure) | string | β |
Package entries
package entries are custom entries in the main config file. they contain values such as:
| name | description | type | required | custom |
|---|---|---|---|---|
source |
see sources | string | βοΈ | β |
| source name | the "target". eg. repo path for github |
string | βοΈ | βοΈ |
host |
domain name the source is hosted on | string | β | β |
prefix |
the prefix used in releases / tagsexample: v for tags like v0.1.0 |
string | β | β |
use_max_tag |
use max git tag instead of the latest release | bool | β | β |
url |
url to check for source type regex |
string | β | β |
regex |
regex to search url for source type regex |
bool | β | β |
Keyfile structure
this file contains API keys for various sources. example can be found here.
[]
= "your_secret_github_api_key_that_you_shouldnt_push_to_a_public_nor_a_private_remote_repo_because_there_will_definitely_be_serious_consequences_sooner_or_later_if_you_do_trust_me_just_dont"
= "remember_to_replace_the_example_values_here_here_with_your_actual_keys_otherwise_it_wont_work_but_dont_push_keyfiles_to_remote_repos"
"I think that example value is not long enough" - orhun
Documentation
the nvrs library documentation can be found at docs.rs/nvrs
Contributing
if you want to contribute to the project, please read the Contributing Guidelines before doing so.
if you find any parts of the code or the documentation unclear, or have any suggestions, feel free to open an issue or a pull request.
Credits
Copyright (c) 2025 Adam Perkowskisee LICENSE