Compare commits

...
4 Commits
Author SHA1 Message Date
DamienandClaude Sonnet 5 9512f781fd README : retire les prenoms des postes nommes, repo public
thomas/clara/jade/oreo/oreo-i3 apparaissaient en clair dans le
README public (Etape 4B, section "NixOS deja installe", etc.) --
ce sont des prenoms reels d'utilisateurs, n'ont rien a faire dans
un repo public sans authentification. Remplace par des mentions
generiques ("profil nomme", "<profil>"), la liste reelle reste
privee cote Nixos_Users.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 15:59:39 +02:00
DamienandClaude Sonnet 5 64e7112093 README : ajoute un index et la section "NixOS deja installe"
Nouvel index en tete de fichier (3 chemins d'installation + reference/dev/git).
Nouvelle section top-level "Installer depuis un NixOS deja installe" :
clone + nixos-rebuild switch --flake .#nixos-existing/-existing --impure,
pour flotte et poste nomme, plus le netrc a la main (pas d'install.sh
ici pour l'ecrire) et la maintenance qui va avec.

Simplifie l'Etape 8 de "Installer le serveur PXE" (redondant avec le
deroule de "Installer un PC", ne garde qu'un renvoi).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 15:56:07 +02:00
DamienandClaude Sonnet 5 8cca5d3ebb Externalise le module disque (comme nixos_users) + ajoute nixos-existing
hosts/nixos/configuration.nix importait diskos/plain.nix en dur --
deplace vers flake.nix (injection externe), meme pattern que
nixos_users/flake.nix (mkHost). Necessaire pour ajouter
nixos-existing : meme profil logiciel que "nixos", mais avec le
hardware-configuration.nix reel de la machine a la place de
diskos/plain.nix -- pour appliquer cette config sur un NixOS deja
installe, sans toucher au partitionnement existant (meme principe
que pxe-server, --impure requis).

Deplace aussi system.autoUpgrade.flake hors de hosts/common/default.nix
(etait fixe sur #nixos pour tous les profils) vers une injection par
attribut dans flake.nix : sans ca, une machine nixos-existing aurait
bascule sur l'attribut "nixos" (disko) a son prochain auto-upgrade,
avec un layout disque potentiellement incompatible avec l'existant.

Verifie : nix flake check --no-build passe pour "nixos" ; "nixos-existing"
echoue nur pour la meme raison attendue que pxe-server
(hardware-configuration.nix absent hors du vrai serveur/poste), pas
une regression. Dry-run build de "nixos" toujours complet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 15:53:32 +02:00
DamienandClaude Sonnet 5 3be4747eb8 README : previent que le build ISO est long, explique la difference avec l'ISO nixos.org
mksquashfs (compression du store pour l'ISO) est l'etape la plus
lente et n'affiche aucune progression -- peut donner l'impression
d'un plantage alors que ca tourne normalement (10-30+ min).

Precise aussi ce qui distingue cette ISO de celle de nixos.org :
paquets/clavier/locale du parc, et surtout install.sh qui se lance
seul au lieu d'un shell nu a completer a la main.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 15:34:34 +02:00
4 changed files with 97 additions and 13 deletions
+66 -11
View File
@@ -6,8 +6,65 @@ Repo public. `git pull` sans mot de passe.
Ne contient aucune donnée des utilisateurs nommés. Ça, c'est dans [Nixos_Users](../nixos_users), repo privé séparé. Ne contient aucune donnée des utilisateurs nommés. Ça, c'est dans [Nixos_Users](../nixos_users), repo privé séparé.
## Index
- [Installer depuis un NixOS déjà installé](#installer-depuis-un-nixos-déjà-installé) -- appliquer cette config sans réinstaller, partitionnement existant préservé
- [Installer un PC](#installer-un-pc) -- clé USB ou PXE, depuis zéro (reformate le disque)
- [Installer le serveur PXE](#installer-le-serveur-pxe)
- [Référence](#référence)
- [Environnement de dev sous Windows (WSL + Nix)](#environnement-de-dev-sous-windows-wsl--nix)
- [Travailler avec Git](#travailler-avec-git)
--- ---
# Installer depuis un NixOS déjà installé
Pour appliquer cette config (flotte ou poste nommé) sur une machine où NixOS tourne déjà -- sans réinstaller, **sans toucher au partitionnement existant**. Utilise `nixos-existing` (flotte, ce repo) ou `<profil>-existing` (poste nommé, [Nixos_Users](../nixos_users)) : même profil logiciel que l'install normale, mais basé sur le `hardware-configuration.nix` réel de la machine plutôt que sur disko.
Pour repartir de zéro (reformater le disque) à la place : voir "Installer un PC" plus bas.
## Flotte
```bash
git clone https://gitea.miniclic.net/Damien/Nixos_Fleet.git /etc/nixos-fleet
cd /etc/nixos-fleet
sudo nixos-rebuild switch --flake .#nixos-existing --impure
```
`--impure` : nécessaire pour lire `/etc/nixos/hardware-configuration.nix`, hors du flake.
## Poste nommé
Repo privé -- voir "Token Gitea" dans [Nixos_Users](../nixos_users) pour en obtenir un, et la liste des profils disponibles (pas listée ici, repo public).
```bash
git clone https://<token>@gitea.miniclic.net/Damien/Nixos_Users.git /etc/nixos-users
cd /etc/nixos-users
sudo nixos-rebuild switch --flake .#<profil>-existing --impure
```
Pour que les mises à jour automatiques continuent de fonctionner ensuite (repo privé), créer le netrc à la main -- normalement écrit par `install.sh`, absent ici puisqu'on ne passe pas par l'installeur :
```bash
sudo mkdir -p /etc/nix
{
echo "machine gitea.miniclic.net"
echo "login <token>"
echo "password x-oauth-basic"
} | sudo tee /etc/nix/netrc
sudo chmod 600 /etc/nix/netrc
```
## Maintenance
Identique au reste du repo (voir "Mises à jour de la flotte" en Référence), avec `nixos-existing` (ou `<profil>-existing`) à la place de l'attribut normal :
```bash
cd /etc/nixos-fleet # ou /etc/nixos-users
sudo git pull
sudo nixos-rebuild switch --flake .#nixos-existing --impure
```
# Installer un paquet sans le mettre "en dur" # Installer un paquet sans le mettre "en dur"
Pour tester un outil sans toucher à `configuration.nix`. Pour tester un outil sans toucher à `configuration.nix`.
@@ -44,6 +101,10 @@ Deux supports possibles, choisis-en un.
**PXE (serveur déjà monté)** : rien à préparer ici. Va à l'étape 1. **PXE (serveur déjà monté)** : rien à préparer ici. Va à l'étape 1.
**Ce n'est pas l'ISO de nixos.org.** Celle-ci est construite depuis ce repo (`installer/iso.nix`) : paquets propres au parc (git, outils de partitionnement...), clavier/locale FR par défaut, et surtout `install.sh` qui se lance seul à l'ouverture de session -- l'ISO officielle démarre sur un shell nu, sans rien de tout ça, il faudrait tout faire à la main (partitionnement, `nixos-install`...).
Le `nix build` ci-dessous est **long** (10 à 30+ minutes) et n'affiche presque rien pendant la majeure partie du temps -- l'étape la plus lente (`mksquashfs`, compression de tout le store Nix pour l'ISO) ne montre aucune progression. Normal, pas figé : vérifier avec `top`/`htop` qu'un processus consomme du CPU avant de penser à interrompre.
**Clé USB, sur Linux :** **Clé USB, sur Linux :**
```bash ```bash
@@ -102,7 +163,7 @@ Il y a deux cas. Choisis-en un seul.
PC normal → va à l'étape 4A. PC normal → va à l'étape 4A.
PC pour thomas, clara, jade, oreo ou oreo-i3 → va à l'étape 4B. PC pour une personne (profil nommé) → va à l'étape 4B.
## Étape 4A — PC normal ## Étape 4A — PC normal
@@ -122,7 +183,7 @@ Tape : `2`
Appuie sur Entrée. Appuie sur Entrée.
Tape le prénom (thomas, clara, jade, oreo ou oreo-i3). Tape le prénom du profil (liste donnée à part, pas dans ce guide public).
Appuie sur Entrée. Appuie sur Entrée.
@@ -272,13 +333,7 @@ Un reboot du serveur applique aussi ça correctement au démarrage suivant.
## Étape 8 — Tester sur 1 PC ## Étape 8 — Tester sur 1 PC
Démarrer un seul PC en PXE. Suivre "Installer un PC" (Network Boot au lieu de Boot from USB) sur une seule machine avant d'en lancer 20. Tester BIOS et UEFI séparément si le parc a les deux.
Vérifier qu'il arrive sur l'écran de choix.
Si le parc a du BIOS et de l'UEFI, tester les deux.
Ne pas lancer 20 PC avant que cette étape fonctionne.
## Après l'installation ## Après l'installation
@@ -413,7 +468,7 @@ Pour réactiver la même chose sur `nixos`, reprendre ce bloc tel quel dans `hos
Une machine de la flotte pull uniquement ce repo. Une machine de la flotte pull uniquement ce repo.
Les comptes thomas/clara/jade/oreo vivent dans un autre repo, privé. Les comptes nominatifs vivent dans un autre repo, privé.
La flotte ne voit jamais ce second repo. La flotte ne voit jamais ce second repo.
@@ -423,7 +478,7 @@ Marche sans le serveur PXE. Utile pour tester avant de monter le PXE, ou en seco
NixOS permet nativement de fabriquer une image d'installation sur mesure : un ISO avec nos propres paquets et notre propre script (`install.sh`) qui se lance seul au démarrage. C'est une fonctionnalité standard de NixOS, pas un bricolage — `installer/iso.nix` dans ce repo est la définition de cette image. NixOS permet nativement de fabriquer une image d'installation sur mesure : un ISO avec nos propres paquets et notre propre script (`install.sh`) qui se lance seul au démarrage. C'est une fonctionnalité standard de NixOS, pas un bricolage — `installer/iso.nix` dans ce repo est la définition de cette image.
C'est le même ISO pour la flotte et les postes nommés — pas deux images différentes, **pas de commande de build spécifique à jade/oreo/oreo-i3**. Le choix se fait à l'écran au démarrage, une fois la clé branchée sur le PC cible (voir étapes 4/4B). C'est le même ISO pour la flotte et les postes nommés — pas deux images différentes, **pas de commande de build spécifique par profil nommé**. Le choix se fait à l'écran au démarrage, une fois la clé branchée sur le PC cible (voir étapes 4/4B).
Depuis Windows : mêmes commandes, dans WSL -- voir "Étape 0", section Windows. Depuis Windows : mêmes commandes, dans WSL -- voir "Étape 0", section Windows.
+21
View File
@@ -19,6 +19,9 @@
outputs = outputs =
{ self, nixpkgs, disko, home-manager, ... }: { self, nixpkgs, disko, home-manager, ... }:
let
repoUrl = "git+https://gitea.miniclic.net/Damien/Nixos_Fleet.git";
in
{ {
nixosConfigurations = { nixosConfigurations = {
nixos = nixpkgs.lib.nixosSystem { nixos = nixpkgs.lib.nixosSystem {
@@ -27,6 +30,24 @@
disko.nixosModules.disko disko.nixosModules.disko
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
./hosts/nixos/configuration.nix ./hosts/nixos/configuration.nix
./diskos/plain.nix
{ system.autoUpgrade.flake = "${repoUrl}#nixos"; }
];
};
# Même profil logiciel que "nixos", mais sans disko : pour une
# machine où NixOS est déjà installé (partitionnement existant,
# quel qu'il soit, à ne pas toucher) -- utilise le
# hardware-configuration.nix réel de cette machine à la place de
# diskos/plain.nix, comme pxe-server. --impure obligatoire au
# nixos-rebuild (lit un chemin hors du flake).
nixos-existing = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
home-manager.nixosModules.home-manager
./hosts/nixos/configuration.nix
/etc/nixos/hardware-configuration.nix
{ system.autoUpgrade.flake = "${repoUrl}#nixos-existing"; }
]; ];
}; };
+6 -1
View File
@@ -168,11 +168,16 @@ in
# (déjà la valeur par défaut de ce module -- explicité ici) : si la # (déjà la valeur par défaut de ce module -- explicité ici) : si la
# machine est éteinte au moment prévu, la maj se lance dès le # machine est éteinte au moment prévu, la maj se lance dès le
# prochain démarrage plutôt que d'attendre la semaine suivante. # prochain démarrage plutôt que d'attendre la semaine suivante.
# `flake` n'est PAS fixé ici : il dépend de l'attribut réellement
# utilisé pour cette machine (nixos vs nixos-existing, disko ou pas)
# -- injecté par flake.nix, comme dans nixos_users. Le fixer ici
# ferait basculer une machine "nixos-existing" vers l'attribut
# "nixos" (disko) à son prochain auto-upgrade, avec un layout disque
# potentiellement incompatible avec l'existant.
system.autoUpgrade = { system.autoUpgrade = {
enable = true; enable = true;
persistent = true; persistent = true;
dates = "weekly"; dates = "weekly";
flake = "git+https://gitea.miniclic.net/Damien/Nixos_Fleet.git#nixos";
}; };
# Compte admin de la flotte : root, mot de passe "nixos" STABLE (pas # Compte admin de la flotte : root, mot de passe "nixos" STABLE (pas
+4 -1
View File
@@ -1,10 +1,13 @@
# Profil générique "nixos" : poste non-nominatif de la flotte. # Profil générique "nixos" : poste non-nominatif de la flotte.
# Le module disque (diskos/plain.nix pour une install neuve, ou le
# hardware-configuration.nix réel d'une machine déjà installée) est
# injecté par flake.nix, pas ici -- ce fichier ne connaît pas le
# layout disque, comme dans nixos_users.
{ ... }: { ... }:
{ {
imports = [ imports = [
../common ../common
../../diskos/plain.nix
]; ];
# Compte de session non-nominatif, mot de passe "nixos" stable, sans # Compte de session non-nominatif, mot de passe "nixos" stable, sans