diff --git a/README.md b/README.md index ddceb54..8e7314b 100644 --- a/README.md +++ b/README.md @@ -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//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) diff --git a/flake.lock b/flake.lock index 6738ce4..78b9951 100644 --- a/flake.lock +++ b/flake.lock @@ -20,6 +20,27 @@ "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": { "locked": { "lastModified": 1788807765, @@ -39,6 +60,7 @@ "root": { "inputs": { "disko": "disko", + "home-manager": "home-manager", "nixpkgs": "nixpkgs" } }