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
|
# Travailler avec Git
|
||||||
|
|
||||||
## Cloner (première fois)
|
## Cloner (première fois)
|
||||||
|
|||||||
Generated
+22
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user