+++ date = '2025-10-13T00:00:01+02:00' draft = false title = 'Workflow de mise à jour avec NixOs' +++ Je met mes système NixOs à jour une fois par semaine, le dimanche. Fini le temps des mises à jour effrénées sous Archlinux pour un paquet 2 fois par jour ! Je commence sur ma machine desktop par mettre à jour les dépot et à figer les versions dans le git. C'est mon point d'ancrage, celui qui validera une mise à jour aboutie. ``` nix flake update git add flake.lock git commit -m "FLAKE: update" git push origin master ``` Ensuite je met à jour ma machine desktop avec un peu de nettoyage. Je le fait à 8 jours, si bien que je suis sur d'avoir la génération complète de la semaine dernière. ``` sudo nixos-rebuild switch --flake $HOME/nixos-config#pennsardin --show-trace --keep-going nix-collect-garbage --delete-older-than 8d sudo nix-collect-garbage --delete-older-than 8d ``` Et je passe au serveur. Je commence par récupérer la version du flake et je met à jour : ``` ssh dunoz@terre-neuvas cd nixos-config git pull sudo nixos-rebuild switch --flake $HOME/nixos-config#terre-neuvas --show-trace --keep-going nix-collect-garbage --delete-older-than 8d sudo nix-collect-garbage --delete-older-than 8d ``` ## Et si ça pète ? En cas de soucis de mise à jour, je reviens à l'ancienne version du flake sur la machine desktop. ``` git revert HEAD git push origin master sudo nixos-rebuild switch --flake $HOME/nixos-config#pennsardin ``` Et sur la machine serveur ``` git pull sudo nixos-rebuild switch --flake $HOME/nixos-config#pennsardin ``` Je pourrai rollback, mais dans ce cas, il y aurai une dissonance entre depot git et machines, ce que je ne souhaite pas. Le depot git est le sanctuaire, celui qui régit tout.