Compare commits
4
Commits
18b0156db3
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9512f781fd | ||
|
|
64e7112093 | ||
|
|
8cca5d3ebb | ||
|
|
3be4747eb8 |
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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"; }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user