3.2 KiB
NixOS
Ce repo contient la configuration NixOS des différentes machines présentes dans l'infrastructure de Aurore et se décompose en plusieurs parties :
- disks : contient la configuration disko des machines.
- devshells : contient des shells nix pour faciliter l'édition des configurations nixos.
- hosts : contient la configuration spécifique à chaque machine, typiquement la configuration réseau,
- profiles : contient la configuration des différents modules utilisé,
- secrets : contient l'ensemble des secrets chiffrés avec agenix.
Gestion des secrets
Dans NixOS, l'ensemble des fichiers est écrit dans /nix/store
et qui est
visible par tous les programmes (et tout les utilisateur⋅ices). De plus,
l'ensemble des fichiers de configurations se trouvent sur un repo git publique.
Pour ces deux raisons, il est préférable de chiffrer les secrets à l'aide de
agenix. Pour plus de détaille dans
secrets
Installation d'une machine
Si la configuration est déjà écrite, il faut alors suivre les étapes suivantes :
- S'assurer que la machine a accès à internet et possède un serveur DNS,
- Importer les fichiers de configurations,
- Si nécessaire, il faut de générer le fichier
hardware-configuration.nix
à l'aide de la commandenixos-generate-config --no-filesystems --root .
puis de l'ajouter dans la configuration, - Vérifier que la configuration
disko
utilisée est compatible, la commandelsblk
devrait être suffisant pour cela, - Partitionner 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>
disko
s'occupe automatiquement du montage des partitions créer, - Créer le répertoire
/mnt/etc/nixos
et ajouter les fichiers de configuration dans ce répertoire, - Installer 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. Entrer celui-ci puis
poweroff
oureboot
. - Penser à 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 à l'aide de la commande :
mount -o remount,size=3G,noatime /nix/.rw-store
Cependant, cela peut être risquer s'il n'y a pas suffisamment de RAM.
Remarque :
Si l'installation nécéssite le déchiffrement de secrets, l'installation pourrait échouée. 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
formatter, 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