❄️ Nixos : migration flakes et mono-repo

2026-02-26

retour

Intro

J'ai migré la majorité de mes ordinateurs (serveurs et bureau) sous NixOS. Je ferai un billet plus tard à ce sujet.

Au début j'avais un dossier par machine, je ne bénéficiait donc pas de modules partagés.

J'ai profité de ma migration vers les flakes pour corriger tout ça, voici donc un petit tour d'horizon de mes modules.

Flakes ?

Petite parenthèse, même si je ne vais pas aller loin dans le détail car l'écosystème Nix est assez compliqué, mais pour ce billet, il faut juste retenir que les flakes permettent de créer un fichier ".lock" pour tous les packages installés.

Si on veut faire une analogie avec debian, on pourrait imaginer lancer un "dpkg -l", et sauvegarder la liste des packages ainsi que leurs versions.

Ensuite, si on veut réinstaller une machine, on pourrait prendre cette liste et l'appliquer pour arriver à un système identique.

Ça a l'air facile dit comme ça, mais c'est chose quasiment impossible à faire avec les distributions classiques, or c'est ce que NixOS promet, justement.

Arborescence

Je gère maintenant la configuration de mes toutes machines dans un seul repo git, organisé à peu près comme ceci :

Modules

Ici on va mettre tout ce qui sera commun à toutes les machines, par exemple mon utilisateur, avec mes programmes préférés. L'environement graphique si c'est un ordinateur de bureau.

Des règles pour améliorer la sécurité, des valeurs sysctl, l'envoi des logs centralisés, une supervision de base, etc...

Ça permet d'appliquer le même socle de partout.

Machines

Ici on va mettre les spécificités des machines :

Autre

Les derniers fichiers sont communs à toutes les machines :

Mise à jour du système

La première étape sera de lancer "nix flake update", qui mettra à jour le fichier "flake.lock".

Ensuite, un simple "nixos-rebuild" va créer la nouvelle génération (packages à jour et configuration) et l'appliquer aux machines voulues (en local ou via ssh).

Dotfiles

Pour les fichiers de conf utilisateur, les options nixos ne gèrent pas tout, on peut en gérer une partie avec "home-manager", un autre projet Nix, mais je préfère "chezmoi", que je trouve plus simple.

projet Home-Manager

projet chezmoi

Conclusion

Toutes mes machines ont le même socle, en cas de soucis, le rollback est garanti par le fonctionnement même de NixOS.

Et si je dois installer ou réinstaller une machine, c'est rapide (ici je zappe le partitionnement, mais c'est tout aussi rapide) :