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:
@@ -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
|
||||
|
||||
## Cloner (première fois)
|
||||
|
||||
Reference in New Issue
Block a user