Updating & Rollback
Marchyo is a NixOS flake, so updating and rolling back use the standard Nix
machinery — there is no bespoke updater or “update channel” to manage. Every
nixos-rebuild switch builds a new generation you can boot back into if
something breaks.
The short way: the marchyo CLI
Section titled “The short way: the marchyo CLI”The marchyo CLI wraps the whole loop:
marchyo update # nix flake update in your flakemarchyo upgrade # update inputs, then rebuildmarchyo rollback # switch back to the previous generationmarchyo gc # collect old generations (default: older than 14d)marchyo diff # what changed between generationsUpdate your system
Section titled “Update your system”Bump the pinned inputs (including marchyo itself), then rebuild:
# In the directory holding your flake.nixnix flake update # bump every input to its latest# or bump just Marchyo:nix flake update marchyo
sudo nixos-rebuild switch --flake .#yourhostOn macOS use darwin-rebuild switch --flake .#yourhost instead.
What “update” actually moves
Section titled “What “update” actually moves”Marchyo’s builders pick the package set for you, so an update tracks different channels depending on the system (see the Introduction):
- Linux and
aarch64-darwinride nixpkgs unstable. x86_64-darwinis pinned to stable nixos-26.05 (the last release supporting Intel macOS).
You do not add a separate nixpkgs input — updating the marchyo input is what
advances your packages.
Roll back
Section titled “Roll back”If a rebuild misbehaves, roll back to the previous generation:
sudo nixos-rebuild switch --rollbackOr pick any earlier generation from the boot menu (systemd-boot / GRUB) at startup — each generation is a separate boot entry. To inspect or prune them:
sudo nix-env --list-generations --profile /nix/var/nix/profiles/systemsudo nix-collect-garbage -d # remove old generations + free the storeDeveloping on the Marchyo repo itself
Section titled “Developing on the Marchyo repo itself”If you have a checkout of Marchyo (rather than consuming it as an input), use the
just recipes — just update bumps the flake inputs and re-syncs
devenv.lock to the same nixpkgs revision, and just verify checks they stay
aligned:
just update # nix flake update + sync devenv.lockjust verify # confirm flake.lock and devenv.lock agreejust check # nix flake check (evaluation tests)