Installation initiale
On met en place un réseau DNF par étapes, et on peut s’arrêter à chacune : un poste suffit pour démarrer.
Le parcours
Section intitulée « Le parcours »- Un poste : la machine de l’administrateur (cette page).
- Une passerelle : créer une zone et y brancher d’autres postes.
- La coordination : relier les zones par VPN (tailnet).
Installation assistée
Section intitulée « Installation assistée »Le premier poste s’installe seul, depuis l’ISO générique, sans autre machine : c’est la voie la plus simple.
-
Obtenir l’image
L’ISO générique jointe à chaque release du framework 🡕 (
dnf-installer-vX.Y.Z-x86_64-linux.iso), gravée sur une clé USB. -
Démarrer la machine sur la clé, en filaire, Secure Boot désactivé.
-
Répondre à l’assistant
Il se lance tout seul sur la console, une fois le réseau en place.
Ctrl-Cdonne l’invite de commande, d’où il se relance :Fenêtre de terminal darkone newIl demande la langue et le clavier, l’identité et le mot de passe de l’administrateur, le domaine du réseau, le nom de la machine, le disque s’il y en a plusieurs (pas en dessous de 20 Go : la clé de sauvegarde n’est jamais proposée), puis le chiffrement du disque et sa passphrase. Le reste se détecte : portable ou poste fixe, UEFI ou BIOS, fuseau horaire du pays. Disque en clair : une passphrase pour la sauvegarde des clés.
-
Confirmer
Le récapitulatif signale les choix définitifs (domaine, login). Le disque est ensuite effacé et le système installé, projet compris dans
/etc/nixos. -
Sauvegarder les clés, sur une seconde clé USB
Brancher une clé USB (FAT, exFAT, ext4…), la choisir : rien n’y est effacé. L’assistant y écrit
dnf-backup-<domaine>.tar.age, puis demande de la débrancher et de la rebrancher pour la relire. Pas de sauvegarde relue, pas de fin d’installation. -
Redémarrer, clés USB retirées. Disque chiffré : la passphrase est demandée à chaque démarrage, avec le clavier choisi. La première session ouvre une page d’accueil dans le navigateur : étape 1 sur 4 franchie, la passerelle ensuite.
Installation scriptée
Section intitulée « Installation scriptée »Un fichier de réponses tient lieu de questions ; une réponse absente est
demandée, ou refusée avec --non-interactive.
version: 1admin: login: "alice" name: "Alice Martin" passwordHash: '$y$j9T$...' # mkpasswd -m yescryptnetwork: domain: "example.org"host: hostname: "poste"disk: encrypt: truelocale: language: "fr_FR.UTF-8"backup: device: "/dev/disk/by-label/SECOURS" # clé USB de la sauvegardedarkone new --answers reponses.yaml --non-interactive --yes \ --luks-passphrase-file /run/user/1000/luksLa passphrase du disque n’entre jamais dans le fichier de réponses, qui
circule : --luks-passphrase-file la lit dans un fichier, sinon elle est
demandée. Elle chiffre aussi la sauvegarde ; disque en clair, c’est
--backup-passphrase-file. En scripté, la clé USB est relue sans être
débranchée.
Sauvegarde des clés
Section intitulée « Sauvegarde des clés »dnf-backup-<domaine>.tar.age, chiffré par age, contient :
nix/: la clé de déploiement (SSH) et la clé age d’admin qui en dérive ;infra.key: la clé age d’infra ;project.bundle: le projet,/etc/nixos, engit bundle.
Pour l’ouvrir, sur n’importe quel Linux doté d’age :
age -d dnf-backup-example.org.tar.age | tar -xgit clone dnf-backup/project.bundle mon-reseauSur un nouveau poste d’administration, les clés reprennent leur place, au
compte nix, en mode 600 : /home/nix/.ssh/id_ed25519,
/home/nix/.config/sops/age/keys.txt et /etc/sops/age/infra.key. Le projet
évolue : just backup-admin <périphérique> refait la sauvegarde
(recettes).
--dry-run affiche le plan sans rien toucher, sur n’importe quelle machine.
Créer le projet
Section intitulée « Créer le projet »Voie manuelle, depuis une machine d’administration qui est déjà un hôte DNF.
Le projet part du modèle fourni par le framework : une structure prête et un
etc/config.yaml commenté à remplir.
-
Créer le dépôt
Fenêtre de terminal nix flake new -t github:darkone-linux/darkone-nixos-framework mon-reseaucd mon-reseau && git init && git add -ALe projet épingle la dernière release du framework. Autre voie : le template GitHub dnf-boilerplate 🡕 (bouton « Use this template »), copie publiée du même modèle.
-
Amorcer le framework
Fenêtre de terminal nix run github:darkone-linux/darkone-nixos-framework#initnix develop github:darkone-linux/darkone-nixos-framework -
Initialiser les secrets
Fenêtre de terminal just configure-admin-host
Décrire la configuration
Section intitulée « Décrire la configuration »Tout se déclare dans etc/config.yaml (réseau, zones, utilisateurs, hôtes).
Pour un premier poste, une zone, un utilisateur et un hôte suffisent : tout
hôte appartient à une zone (ou porte une adresse publique ipv4).
Un éditeur doté de yaml-language-server (Zed, VS Code avec l’extension YAML…) complète et valide chaque clé, grâce à cette première ligne du fichier (déjà présente dans un projet créé par le modèle) :
# yaml-language-server: $schema=../dnf/config/config.schema.jsonzones: main: description: "Réseau principal" ipPrefix: "10.0" # cette zone utilise 10.0.0.0/16
users: alice: uid: 1000 name: "Alice" profile: "nix-admin" groups: ["global"]
hosts: - hostname: "poste" name: "Poste de l'administrateur" zone: "main:1.10" # IP fixe 10.0.1.10 ("main" seul = DHCP) profile: "desktop" users: ["alice"] disko: profile: "btrfs-1-disk" devices: main: "/dev/nvme0n1"Puis régénérer, vérifier et commiter :
just generate # produit var/generated/*.nix depuis etc/config.yamljust check-flake # nix flake checkgit add . && git commit -m "Premier hôte"Installer un poste
Section intitulée « Installer un poste »L’installation grave une image, démarre la machine dessus, puis applique le système complet.
-
Obtenir l’image
Fenêtre de terminal just build-isoCette image porte votre clé de déploiement. Autre voie, sans construction : l’ISO générique jointe à chaque release du framework 🡕 (
dnf-installer-vX.Y.Z-x86_64-linux.iso) ; la clé s’autorise alors au démarrage. -
Démarrer la machine
Graver l’image sur une clé USB, brancher l’ordinateur au réseau en filaire, puis démarrer sur la clé. Avant l’invite de commande, l’écran affiche un message de bienvenue DNF, puis l’adresse IP et l’adresse MAC de l’interface reliée à Internet (servies par la passerelle locale ou votre routeur) : les noter.
- IP: 10.0.0.50- MAC: aa:bb:cc:dd:ee:ffLa commande
dnf-netinfoles réaffiche.Avec l’ISO générique, l’écran le rappelle : définir un mot de passe (
passwd), puis autoriser la clé depuis le poste d’admin.Fenêtre de terminal sudo -i -u nix ssh-copy-id nixos@10.0.0.50 -
Fixer les adresses (dès qu’une zone existe)
L’installation se termine par un redémarrage, et la suite doit retrouver la machine. Deux cas :
- adresse MAC déjà déclarée : rien à faire, la passerelle sert la même adresse fixe à la clé USB et au système installé ;
- adresse MAC inconnue : la relever, puis la déclarer.
Fenêtre de terminal # just host-info <hôte> <ip-actuelle>just host-info poste 10.0.0.50Reporter la valeur dans
etc/config.yaml, avec une adresse fixe, puis redéployer la passerelle de chaque zone concernée :etc/config.yaml - hostname: "poste"zone: "maison:2.1"mac: "aa:bb:cc:dd:ee:ff"Fenêtre de terminal # Redéployer la passerelle localejust cleangit add . && git commit -m "host(poste): installation"just apply gw -
Installer le système
Fenêtre de terminal # just full-install <hôte> <utilisateur> <ip>just full-install poste nixos 10.0.0.50 -
Le système est installé et à jour.