A Swiss Army knife tool for updating version numbers and source hashes of Nix packages across multiple package sets.
Nix-update is a command-line tool that automates updating version numbers and source hashes in Nix package definitions. It solves the manual effort of checking for new releases and updating multiple hash values across different build systems like buildRustPackage, buildGoModule, and buildNpmPackage.
Nix package maintainers and developers who regularly update packages in nixpkgs or other Nix-based package repositories.
Developers choose nix-update because it handles the tedious parts of package updates across multiple platforms and build systems, provides testing capabilities to validate changes, and works with both traditional Nix expressions and modern flakes.
Swiss-knife for updating nix packages.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically detects latest versions from 10+ platforms including GitHub, PyPI, crates.io, and RubyGems, as detailed in the README, reducing manual checks.
Updates specific hashes for Rust (cargoHash), Go (vendorHash), Node.js (npmDepsHash), and other build systems, handling language-specific dependency management.
Provides flags like --build, --test, --run, and --shell to validate updates interactively, ensuring packages work before finalizing changes.
Works with both Nix flakes and legacy expressions via the --flake flag, offering flexibility for modern and older Nix projects.
Can commit changes, run update scripts, and format files with --commit and --format flags, streamlining the update process.
Known to fail with files containing multiple packages due to simplistic search-and-replace, as admitted in the README's 'Known Bugs' section, requiring manual overrides.
The TODO list includes 'create pull requests,' indicating this feature is absent, limiting integration with collaborative platforms like GitHub.
Requires extra flags like --url and --override-filename for non-standard packages (e.g., Signal Desktop), adding setup complexity for maintainers.
Prioritizes user intervention over mass updates, making it less suitable for unattended workflows compared to tools like nixpkgs-update.