44 releases (25 stable)
✓ Uses Rust 2018 edition
|new 3.7.2||Jan 16, 2020|
|3.6.0||Dec 30, 2019|
|3.5.0||Nov 28, 2019|
|2.8.0||Aug 15, 2019|
|0.10.0||Jul 10, 2018|
#3 in Operating systems
1,191 downloads per month
Keeping your system up to date mostly involves invoking more than a single package manager. This usually results in big shell one-liners saved in your shell history. Topgrade tries to solve this problem by detecting which tools you use and run their appropriate package managers.
Topgrade should probably work on whichever platform it can be build. The real question is whether Topgrade knows that platform and can utilize its unique features, such as the operating system's package manager. Topgrade is tested on and knows the following platforms:
- Arch based
- Red Hat based
- Debian based
- Clear Linux
- DragonFly BSD
Arch Linux users can use the AUR package.
On NixOS, use the
topgrade package in
nix-env -iA topgrade
macOS users can install topgrade via Homebrew.
Other systems users can either use
cargo install or use the compiled binaries from the release
page. The compiled binaries contain a self-upgrading feature.
Topgrade isn't guaranteed to work on Rust versions older than the latest stable release. If you intend to install Topgrade using Cargo then you should either install Rust using rustup or use a distribution which ships the latest version of Rust, such as Arch Linux.
The precompiled binaries supplied in the Github releases page are compiled with a self upgrade
feature. Topgrade will try to upgrade itself before attempting anything else and will respawn itself
when an update is downloaded. If you choose to install Topgrade in this method it is recommended
that you place the binary in some place which is writable by your user account, such as
If you prefer to have Topgrade installed in system-wide manner then it's recommended to either
install it using the OS package manager or
cargo install. Topgrade will not have the self upgrade
feature but it will keep itself up to date by calling the operating system's package manager.
topgrade. It will run the following steps:
- Try to self-upgrade if compiled with this feature. Topgrade will respawn itself if it was upgraded.
- Linux: Run the system package manager:
- Arch based: Run yay or fall back to pacman
- Redhat based: Run
- Debian based: Run
apt update && apt dist-upgrade
- Clear Linux: Run
- Gentoo: Run
layman -s ALL && emerge --sync -q && eix-update && emerge -uDNa world
- openSUSE: Run
zypper refresh && zypper dist-upgrade
- Void: Run
- Linux: Run etc-update:
- DragonFly BSD: Upgrade and audit packages
- FreeBSD: Upgrade and audit packages
- Unix: Run
brew update && brew upgrade. This should handle both Homebrew and Linuxbrew
- Unix: Run
nix upgrade-nix && nix --upgrade.
- Unix: Run Pearl
- Windows: Run Topgrade inside WSL.
- Windows: Upgrade Powershell modules
- Windows: Upgrade all Chocolatey packages
- Windows: Upgrade all Scoop packages
- Check if the following paths are tracked by Git. If so, pull them:
- Unix: Run zr update
- Unix: Run zplug update
- Unix: Run oh-my-zsh update
- Unix: Run antigen update
- Unix: Run fisher
- Unix: Upgrade tmux plugins with TPM. Note: Do not use
-bflag in your configuration as suggested by the TPM readme.
- Update Rustup by running
rustup update. This will also attempt to run
rustup self updatewhen Rustup is installed inside the home directory.
- Run Cargo install-update
- Upgrade Emacs packages (You'll get a better output if you have Paradox installed)
- Upgrade OCaml packages
- Upgrade vcpkg globally installed packages
- Upgrade myrepos managed sourcecode repositories
- Upgrade Python packages installed using pipx
- Upgrade R globally installed packages
- Upgrade stack
- Upgrade Vim/Neovim packages. Works with the following plugin frameworks:
yarn global updateif yarn is installed.
npm update -gif NPM is installed and
npm root -gis a path inside your home directory.
composer global updateif Composer's home directory is inside the home directory of the user. Run
- Upgrade Atom packages
gem upgrade --user-installif
- Linux: Update Flatpak packages
- Linux: Update snap packages
- Linux: Run fwupdmgr to show firmware upgrade. (View only. No upgrades will actually be performed)
- Linux: Run
rpi-updateto update Raspberry Pi Firmware
- Linux: Run pihole updater
- Run custom defined commands
- Final stage
config.example.toml for an example configuration file.
The configuration should be placed in the following paths depending by the operating system:
- macOS -
- Windows -
- Other Unix systems -
You can specify a key called
remote_topgrades in the configuration file. This key should contain a
list of hostnames that have topgrade installed on them. Topgrade will execute Topgrades on these