devshells | ||
disks | ||
hosts/vm | ||
profiles | ||
secrets | ||
flake.lock | ||
flake.nix | ||
README.md | ||
secrets.nix |
NixOS
Ce repo contient la configuration NixOS des différentes machines présentes dans l'infrastructure d'Aurore et se décompose en plusieurs parties :
- disks : contient la configuration disko des machines.
- devshells : contient des shells nix pour obtenir des environnements avec l'ensemble des dépendances nécessaires.
- hosts : contient la configuration spécifique à chaque machine, typiquement la configuration réseau,
- profiles : contient la configuration des différents modules utilisés.
- secrets : contient l'ensemble des secrets chiffrés avec agenix.
Gestion des secrets
Dans Nix, l'ensemble des fichiers est écrit dans /nix/store
, ce qui est
accessible et donc visible par tous les programmes (et tous les utilisateur⋅ices).
De plus, l'ensemble des fichiers de configurations se trouvent sur un repo git
public. Pour ces deux raisons, il est préférable de chiffrer les secrets à
l'aide de agenix. Plus de détails sont
disponibles dans secrets.
Installation d'une machine
Si la configuration est déjà présente dans ce projet, il vous suffit de suivre les étapes suivantes :
- Assurez-vous que la machine a accès à Internet et possède un serveur DNS,
- Importez les fichiers de configuration,
- Si nécessaire, il faut générer le fichier
hardware-configuration.nix
à l'aide de la commandenixos-generate-config --no-filesystems --root .
puis l'ajouter dans la configuration, - Vérifiez que la configuration
disko
utilisée est compatible, la commandelsblk
devrait être suffisante pour cela, - Partitionnez les disques : l'usage de
disko
simplifie cette étape. En effet, il suffit d'exécuter la commande :nix run github:nix-community/disko --extra-experimental-features "nix-command flakes" -- --mode disko --flake <path>#<nom>
, etdisko
s'occupe automatiquement du montage des partitions créées, - Créez le répertoire
/mnt/etc/nixos
et ajoutez les fichiers de configuration dans ce répertoire, - Installez NixOS :
nixos-install --flake <path>#<nom>
, - Si tout s'est bien passé, un mot de passe vous sera demandé pour le mot
de passe root, entrez-le, puis redémarrez la machine avec
reboot
. - Pensez à push la configuration ainsi écrite.
Remarque :
S'il n'y a pas suffisamment de place mémoire sur le disque d'installation lors du partitionnement des disques avec
disko
, il est possible d'étendre le/nix/store
en utilisant la RAM de la machine à l'aide de la commande :mount -o remount,size=3G,noatime /nix/.rw-store
Cependant, vérifiez au préalable d'avoir suffisamment de RAM.
Remarque :
Si l'installation nécessite le déchiffrement de secrets, l'installation pourrait échouer. Veuillez alors suivre la procédure décrite dans secrets.
Formattage
La flake contient un formatter (treefmt)
qui s'exécute automatiquement lors d'un nix flake check
. Si le repo n'est pas
formatté, une erreur sera alors retournée en suggérant des modifications. Pour
appliquer les modifications suggérées, il est alors possible d'exécuter la
commande :
$ nix fmt