README : section installer/déboguer WSL + Nix sous Windows

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>
This commit is contained in:
2026-09-12 11:08:45 +02:00
co-authored by Claude Sonnet 5
parent 980eb9d71b
commit 618db31477
2 changed files with 95 additions and 0 deletions
+73
View File
@@ -431,6 +431,79 @@ sudo nixos-rebuild switch --flake .#usagers
--- ---
# Environnement de dev sous Windows (WSL + Nix)
Pour tester `nix flake check` / `nix build` depuis un poste Windows. Nix ne tourne pas nativement sur Windows : il faut un vrai noyau Linux, donc WSL2.
## Installer WSL2
PowerShell **en administrateur** :
```powershell
wsl --install
```
Installe WSL2 + Ubuntu par défaut. Redémarrer si demandé, puis laisser Ubuntu créer l'utilisateur Linux (indépendant du compte Windows).
## Installer Nix
Dans le terminal Ubuntu, commande officielle (nixos.org) :
```bash
curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install | sh -s -- --daemon
```
Fermer/rouvrir le terminal ensuite. Vérifier :
```bash
nix --version
```
Les flakes sont activées par défaut sur les versions récentes de Nix (2.35+) — rien à configurer en plus. Si `nix flake check` répond une erreur `experimental-features`, ajouter dans `/etc/nix/nix.conf` :
```
experimental-features = nix-command flakes
```
## Utiliser les repos depuis WSL
Les fichiers Windows sont accessibles depuis WSL sous `/mnt/c/...` — pas besoin de cloner une deuxième fois :
```bash
cd "/mnt/c/Users/<toi>/Desktop/Claude/Nixos/nixos_fleet"
nix flake check --no-build
```
`pxe-server` échouera à `nix flake check` (sans `--impure`) : il lit `/etc/nixos/hardware-configuration.nix`, qui n'existe que sur le vrai serveur PXE. Normal, pas une régression.
## Si "pas de réseau" dans WSL
Symptôme typique : `ping 8.8.8.8` répond, mais `curl https://nixos.org` (ou tout domaine) time out à la résolution — le tunnel DNS de WSL2 est cassé (fréquent avec VPN/antivirus). Vérifier :
```bash
curl -m 5 https://1.1.1.1 # IP brute : doit marcher
curl -m 5 https://nixos.org # domaine : si ça time out, c'est le DNS
```
Correctif (côté Windows, PowerShell, pas besoin d'être admin) : créer `%USERPROFILE%\.wslconfig` avec :
```
[wsl2]
networkingMode=mirrored
```
Puis `wsl --shutdown` et rouvrir Ubuntu. Ce mode partage directement la pile réseau de Windows à WSL, au lieu de passer par le NAT + proxy DNS interne.
## Appeler `nix` depuis un outil qui pilote WSL sans shell interactif
`wsl.exe nix --version` échoue avec `nix: command not found` : une commande non-interactive ne source pas le profil qui ajoute `nix` au PATH. Forcer un shell de login :
```bash
wsl.exe -e bash -lc "nix --version"
```
---
# Travailler avec Git # Travailler avec Git
## Cloner (première fois) ## Cloner (première fois)
Generated
+22
View File
@@ -20,6 +20,27 @@
"type": "github" "type": "github"
} }
}, },
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1789182507,
"narHash": "sha256-9nt4W0HNNP84B+b37yRs9Zxat1ZR5guJxEZDEjAgex4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b1d1b60084970f9d1e2b72662639dab6d039be71",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-26.05",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1788807765, "lastModified": 1788807765,
@@ -39,6 +60,7 @@
"root": { "root": {
"inputs": { "inputs": {
"disko": "disko", "disko": "disko",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
} }