Construire l'ISO est identique a Linux, meme commande nix build --
aucune raison de le repeter sous un titre "depuis Windows". Ne
garde que la vraie difference (la gravure, Rufus au lieu de dd) et
renvoie a l'Etape 0 pour le reste. Retire aussi le doublon dd/usbipd
qui se repetait deux fois dans la meme section.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Trop de justifications intercalees entre les commandes (pourquoi le
lien symbolique, pourquoi WSL ne voit pas la cle...) rendaient le
parcours illisible. Reduit aux commandes dans l'ordre (clone, build,
cp, Rufus, retour a l'etape 1), les explications passent en une
seule ligne de contexte a la fin. Corrige aussi l'ordre clone/cd qui
etait invalide (cd vers un dossier pas encore clone).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Avant : "Installer un PC" commencait directement au boot PXE, en
supposant le support d'installation deja pret. Le clone+build+dd
vivait seulement sous Referme > "Graver la cle USB", deconnecte --
personne ne tombait sur le chemin complet en partant de zero.
Ajoute une Etape 0 (USB : clone/build/dd -- PXE : rien a faire) au
debut de "Installer un PC", et adapte l'Etape 2 pour couvrir les
deux supports (Network Boot ou Boot from USB, meme menu ensuite).
Degonfle "Graver la cle USB" en Reference pour ne garder que le
contexte/pourquoi, les commandes ne vivent plus qu'a un seul endroit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Verifie en pratique : le lien result (pointe dans /nix/store, pur
Linux) apparait comme un objet 0 Ko depuis Windows/Explorer, meme
via \wsl$\... -- la mention precedente ("accessible aussi depuis
Windows via \wsl$") etait fausse. Seule une vraie copie (cp, pas le
lien) produit un fichier utilisable depuis Windows. Recommande de
copier directement dans le dossier du repo (deja visible, deja
ignore par git).
.gitignore n'existait pas du tout dans ce repo -- ajoute (result,
result-*, *.iso) pour eviter qu'un lien Nix ou une ISO de plusieurs
Go finisse committee par un futur `git add -A`.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
install.sh liste oreo-i3 dans sa liste blanche depuis un moment
deja, mais les etapes 4/4B du README (choix du profil au boot)
n'avaient jamais ete mises a jour -- oreo-i3 y etait invisible.
Ajoute aussi le vrai manque signale : "Graver la cle USB" dit que
c'est la meme ISO pour tout le monde mais ne renvoie jamais vers le
deroule reel (etape 4B) -- d'ou la confusion "comment je build l'ISO
jade/oreo-i3" alors qu'il n'y a qu'une seule commande de build, le
choix se fait au boot, pas a la construction.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Le contenu Windows/WSL existait deja mais loin de "Graver la cle
USB" (tout en bas, dans la section WSL) -- personne ne tombe dessus
en lisant la section principale. Ajoute un pointeur explicite.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Generalise pour n'importe quelle machine Windows qui a suivi la
section WSL du README, pas pour la configuration particuliere de
cette session. Construire l'ISO marche normalement sous WSL ; la
graver est une autre affaire (WSL2 n'a pas d'acces natif aux
disques amovibles, source Microsoft Learn) -- deux options
documentees : copier le .iso vers Windows + outil natif (Rufus...),
ou usbipd-win pour rattacher la cle USB a WSL et dd normalement.
AGENTS.md : meme mise en garde cote agent, avec consigne explicite
de ne pas improviser un contournement si usbipd n'est pas deja en
place -- construire l'ISO puis la remettre a l'operateur humain.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
L'agent doit pouvoir se concentrer soit sur l'ISO soit sur le
serveur PXE -- ajoute la section ISO (meme flake, meme install.sh,
sans dnsmasq/caddy a operer) avec la regle dd explicite (irreversible,
confirmation humaine obligatoire sur /dev/sdX).
Ajoute aussi une section Sources (nixos manual, search.nixos.org,
code source nixpkgs pour iso-image.nix/netboot.nix, wiki.nixos.org,
disko, home-manager, ipxe, dnsmasq, caddy, systemd.timer, policies
Firefox) pour que l'agent verifie au lieu de deviner quand il bute
sur un mecanisme qu'il ne connait pas.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
"pull-only... qui ne font jamais git pull" melangeait deux sens de
"pull" (role consommateur vs commande git litterale) et se lisait
comme contradictoire. Regle simple a la place : Hermes pull toujours
permis (necessaire a l'entretien du serveur PXE), push jamais, sans
exception -- signaler un changement a pousser plutot que le pousser.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fichier distinct du README humain -- couvre installation, entretien
et depannage du serveur PXE pour un agent charge de l'operer
(dnsmasq/caddy/pxe-publish), avec les incidents deja rencontres
cette session (service absent avant rebuild du serveur, clone perdu,
IP statique pas appliquee au premier switch, git pull sans nouveau
commit) et les regles de securite specifiques a un agent autonome
(jamais de push sans instruction, verifier hostname/pwd avant toute
commande distante, confirmer avant une action a impact sur le parc
en prod).
Note en passant : le README ne liste que 3 des 4 valeurs a adapter
dans pxe-server/configuration.nix (internetInterface manquait) --
corrige dans AGENTS.md, pas encore dans le README.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Precise les deux fichiers a toucher (hosts/nixos/configuration.nix
+ home-manager.users dans hosts/common/default.nix), et surtout la
limite : initialPassword ne s'applique qu'a la creation du compte,
jamais retroactivement sur une machine deja installee (sudo passwd
a la main sinon).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Renomme partout (flake.nix, hosts/usagers -> hosts/nixos,
install.sh, autoUpgrade.flake, home-manager.users, README) pour
que compte systeme, attribut de flake et mot de passe portent tous
le meme nom "nixos" -- un seul mot a retenir sur un poste partage.
Remplace aussi hosts/nixos/dconf.ini (jusque-la un seul reglage,
le fond d'ecran) par le dconf complet d'oreo (panneau, themes,
reglages GTK/Nemo...), chemins de wallpaper adaptes vers
hosts/common/wallpaper (partage, pas par-profil). Warpinator
connect-id retire du dconf copie : deja exclu du bureau Cinnamon
sur les trois profils (fleet/thomas-clara-jade/oreo) via
environment.cinnamon.excludePackages, une valeur figee partagee
par tout le parc aurait de toute facon casse l'appairage si le
paquet avait ete present.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Trois options (timer, systemctl start nixos-upgrade.service, ou
git pull + rebuild manuel sur place) au lieu d'attendre le prochain
passage hebdomadaire.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Etape 6 annoncait a tort un changement de mot de passe force pour
"PC normal" -- usagers garde nixos stable sans expiration, seuls les
postes nominatifs (nixos_users) le forcent. Ajoute comment reactiver
ce mecanisme sur la fleet si besoin un jour.
Avant-derniere section : commandes nix desormais reellement testees
(WSL), plus --no-build/--dry-run pour rester rapides, avec le
perimetre exact de ce qu'elles verifient.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
RequestedLocales manquait -- le langpack fr etait deja installe
(languagePacks) mais jamais active comme locale par defaut.
FirefoxHome.Weather=false (ajoute en Firefox 152 / ESR 140.12)
retire le widget meteo (demande la geolocalisation) de la page
d'accueil.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sans ca, taper 'oreo-i3' a l'install repondait 'Utilisateur inconnu' --
la liste etait en dur, pas derivee du repo nixos_users.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
hosts/usagers/dconf.ini (nouveau) : même clé qu'avant (fond d'écran),
mais sous forme de fichier ini mis à jour par 'dconf dump' + commit
depuis une machine réelle, pas en retranscrivant à la main -- même
mécanisme que oreo. Prépare le terrain pour enrichir ce fichier plus
tard sans toucher au .nix.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Couvre l'installation WSL2/Nix, le fait que les flakes sont déjà
activées par défaut (2.35+), le symptôme classique 'ping IP marche
mais résolution DNS time out' (fix: networkingMode=mirrored dans
.wslconfig), et comment appeler nix depuis un outil qui pilote WSL en
non-interactif (wsl.exe -e bash -lc, pas wsl.exe nix directement).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- flake.nix : ajoute l'input home-manager (release-26.05, même branche
que nixpkgs, confirmé qu'elle existe), importe
home-manager.nixosModules.home-manager sur le profil usagers
- hosts/common/default.nix : le fond d'écran par défaut passe par
home-manager.users.usagers.dconf.settings au lieu de
environment.etc."dconf/db/local.d/..." + system.activationScripts
dconfUpdate -- home-manager gère lui-même le contexte utilisateur et
le rechargement dconf
- useGlobalPkgs = true : partage le pkgs du système, pas de deuxième
évaluation nixpkgs (RAM, PC à 4 Go)
- backupFileExtension : évite un échec d'activation si un fichier
existant est dans le chemin (migration sur machine déjà installée)
ATTENTION : flake.lock est maintenant périmé (nouvel input non
verrouillé) -- nix flake lock à relancer avant déploiement.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Évite un conflit si un profil ajoute son propre XML dans
/usr/share/cinnamon-background-properties à côté du commun (cas réel
côté nixos_users : oreo). Sans effet fonctionnel ici (un seul profil
sur ce repo), appliqué pour la cohérence entre les deux repos.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Le précédent correctif visait gnome-background-properties (XDG_DATA_DIRS)
-- mais Cinnamon ne suit pas ce standard. Vérifié dans le vrai source du
sélecteur (linuxmint/cinnamon, cs_backgrounds.py) :
properties_dir = "/usr/share/cinnamon-background-properties", un
chemin ABSOLU EN DUR, jamais résolu via XDG_DATA_DIRS. Notre XML avait
beau être au bon endroit dans le store, Cinnamon ne le trouvait jamais.
Fix : le XML est maintenant généré sous cinnamon-background-properties
(bon nom), et systemd.tmpfiles.rules force un symlink
/usr/share/cinnamon-background-properties -> notre dérivation --
seul moyen d'atteindre ce chemin en dur sur NixOS (pas de /usr/share
FHS classique). Réappliqué à chaque switch, pas besoin de reboot.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Le config Firefox précédente ne coupait que showSponsored -- pas
aboutwelcome (page de config au premier lancement), pas les autres
sources de contenu sponsorisé/promo (FirefoxHome TopSites/Highlights/
Pocket/Snippets, FirefoxSuggest, UserMessaging...). Reprend la config
complète d'oreo (nixos_users/hosts/oreo/configuration.nix), avec deux
changements : SearXNG (perso/privé) -> DuckDuckGo (public, intégré,
pas besoin d'Add) ; ExtensionSettings réduit à uBlock Origin + Privacy
Badger (oreo en a une quinzaine, hors sujet pour un poste générique).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Root cause identifiée : Cinnamon découvre les fonds d'écran
sélectionnables via un XML gnome-background-properties (même
mécanisme que nixos-artwork.wallpapers dans nixpkgs, vérifié dans son
source). mint-artwork (déjà installé par défaut avec Cinnamon) ne
fournit PAS ce XML -- ses images existent bien dans le store mais sont
invisibles au clic droit > changer le fond d'écran. On génère ce XML
nous-mêmes au build, à partir des fichiers réellement présents dans
mint-artwork (pas de liste en dur) + notre propre wallpaper par défaut.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Déjà le défaut du module NixOS (nixos/modules/tasks/auto-upgrade.nix) :
si la machine est éteinte au moment prévu, systemd rattrape la maj au
prochain démarrage (Persistent= côté timer). Aucun changement de
comportement, juste documenté en dur plutôt que de dépendre d'un défaut
invisible.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Aucun changement fonctionnel, juste moins de fichiers à gérer côté
admin (structure inspirée de modules/anssi/ : un rôle clair par fichier,
mais un seul profil ici donc un seul fichier commun suffit).
hosts/usagers/configuration.nix importe désormais juste `../common`
(default.nix résolu automatiquement) + le layout disko.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- system.autoUpgrade.dates : daily -> weekly, même cadence que oreo
- hosts/common/desktop.nix : ajoute la liste de paquets demandée (System
tools, Office, Communication/Media) + Flatpak (repo/install/update) +
AppImage, déjà présents sur oreo, maintenant sur usagers aussi
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
hardware.bluetooth.enable + powerOnBoot=false + blueman, déplacé dans
hosts/common/base.nix -- avant ça n'existait que sur le profil oreo.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- ExtensionSettings : ajoute Privacy Badger (uBlock Origin déjà présent),
même id AMO que oreo/nixos_cinnamon
- SearchEngines.Default = DuckDuckGo (moteur intégré, pas besoin d'Add,
confirmé via firefox-admin-docs.mozilla.org)
- FirefoxHome.Sponsored{TopSites,Pocket} + FirefoxSuggest.SponsoredSuggestions
= false : retire les pubs du nouvel onglet / barre d'adresse
(showSponsored seul ne couvrait que l'ancien mécanisme)
- privacy.donottrackheader.enabled = true : DNT n'a plus d'UI dans les
Firefox récents mais le pref existe toujours et envoie l'en-tête DNT=1
- https_only_mode déjà réglé, rien à changer là-dessus
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Aucun changement fonctionnel -- juste les commentaires : essais de
justification en plusieurs paragraphes remplacés par des notes courtes,
type/quoi/pourquoi en une ou deux lignes. Corrige au passage un
commentaire obsolète dans installer-base.nix qui décrivait encore l'usage
de disko-install (abandonné depuis pour disko + nixos-install séparés).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Retire installer/ (script d'install, obsolète une fois fait) et
pxe-server/ (config d'un autre host) du clone copié sur la machine
installée -- inutiles pour un poste client, ne concernent que le
serveur PXE / le moment de l'install. Nix ne lit ces fichiers que si on
build l'attribut correspondant (jamais le cas pour un poste installé),
donc rien ne casse. N'affecte que la branche fleet : nixos_users n'a ni
installer/ ni pxe-server/, le rm -rf ne trouve rien à supprimer.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Vérifié dans nixpkgs (nixos/modules/hardware/all-firmware.nix) :
enableAllFirmware inclut déjà enableRedistributableFirmware (son défaut
est config.hardware.enableAllFirmware) et ajoute en plus
broadcom-bt-firmware (Bluetooth), b43Firmware (wifi Broadcom),
xone-dongle-firmware, facetimehd-firmware. Nécessaire pour coller à un
parc de PC inconnu à l'avance (logique Linux Mint : firmware non-libre
inclus par défaut). allowUnfree déjà réglé, rien d'autre à changer.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
R8 (mitigations CPU) coupe le SMT via mds=full,nosmt. Désactivé via
security.anssi.exceptions.R8 (mécanisme prévu par le module), puis
boot.kernelParams réaffirme le reste de R8 à l'identique du texte
source (modules/anssi/kernel-options.nix), sauf mds=full,nosmt ->
mds=full (valeur alternative documentée du même paramètre, mitige MDS
sans couper l'hyperthreading).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- vendor modules/anssi/ depuis SécurixOS (DINUM), copy-paste explicitement
supporté par son propre README, licence MIT
- hosts/common/base.nix: security.anssi.enable, level=intermediary,
category=client -- remplace le bloc sysctl qui n'existait que sur le
profil oreo (nixos_users), même valeurs, rien de plus fort
- garde systemd.coredump.enable=false + apparmor (pas couvert par le
module ANSSI, exception R45 explicite côté Sécurix)
- ip_forward=0 (R12) n'affecte pas pxe-server, qui n'importe pas ce fichier
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- install.sh: copie le repo (clone substitué) vers /mnt/etc/nixos après
nixos-install, sinon la machine installée n'a aucun fichier à éditer
- base.nix: hardware.enableRedistributableFirmware pour les cartes wifi
nécessitant un firmware non-libre
- desktop.nix: fond d'écran NixOS par défaut via dconf (n'existait pas)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>