Exécuter NixOS en plein écran sur WSL2

illustrations illustrations illustrations illustrations illustrations illustrations illustrations
post-thumb

Publié le 26 mars 2026 par Andrew Owen (8 minutes)

Ce n’est pas que je déteste Windows. Je pense que Windows 11 ARM (avant que Copilot ne soit intégré au système d’exploitation) était tout à fait raisonnable, à condition de l’exécuter dans une machine virtuelle. Je pense plutôt que Windows me déteste. J’ai toujours trouvé pénible d’utiliser Windows en mode natif sur du matériel Intel. À l’époque où je travaillais dans l’industrie du jeu vidéo, j’ai assemblé le seul PC que j’ai jamais possédé. Au départ, il s’agissait d’un projet Hackintosh, mais il n’a jamais fonctionné de manière fiable sous macOS. Il était équipé d’un matériel haut de gamme. Apparemment, les cartes graphiques des PC sont des consommables (la mienne a brûlé et a dû être remplacée). Il fonctionnait sous Windows 10. Au fil du temps, il a signalé de plus en plus de problèmes matériels, qui, j’en suis sûr, étaient simplement dus à la corruption du système d’exploitation (comme le prouve le fait que les problèmes ont disparu après une réinstallation propre).

Je ne suis pas tout facilement contreproductif sous Windows. Ce n’est pas ainsi que je travaille confortablement. Je sais qu’il existe un moyen de faire tout ce que l’on veut dans PowerShell. Mais, ce que je connais bien, c’est l’environnement utilisateur UNIX. Alors, si je ne peux pas avoir de Mac (car l’entreprise pour laquelle je travaille est trop petite pour bénéficier d’une remise de la part d’Apple) et si le service informatique ne peut pas prendre en charge Linux (ce qui est tout à fait raisonnable pour une entreprise qui n’a pas commencé à utiliser Linux), je dois alors garantir que Windows fonctionne pour moi. Pour cela, je dois utiliser le sous-système Windows pour Linux (WSL).

WSL fonctionne en traduisant les appels système Linux en appels système Windows, ce qui permet aux binaires Linux de même architecture (x64 ou ARM) de fonctionner nativement sous Windows. La version originale de WSL était limitée à plusieurs égards. WSL2 vous permet d’exécuter pratiquement tous les logiciels Linux, y compris un bureau complet et des conteneurs Docker natifs. La distribution Linux préférée de Microsoft est Ubuntu. Mais, j’ai déjà vu Ubuntu se bloquer sur une machine virtuelle, et Canonical Ltd est une secte (opinion sincère). Debian, Kali et OpenSUSE sont également pris en charge officiellement, mais il existe aussi une prise en charge non officielle de NixOS.

Ce qui fait de NixOS un bon candidat pour WSL, c’est qu’il utilise un modèle de configuration déclaratif. L’ensemble du système est défini dans un seul fichier. À condition de stocker vos données en dehors du système de fichiers natif (de préférence dans un stockage cloud sécurisé), si le système devient instable, il vous suffit de le réinstaller, d’actualiser le fichier de configuration et de revenir à un système fonctionnel. Cela est particulièrement commode si vous êtes responsable de votre propre assistance utilisateur.

Avec Linux, vous disposez de plusieurs options pour environner bureau. Je suis un utilisateur Mac depuis 1993, et avant cela, j’étais un utilisateur Atari ST. J’aime la barre de menu supérieure et je me suis également habitué au dock. Mais, je ne suis pas fan de l’expérience de bureau actuelle de macOS 26. Je ne vois pas ce qui n’allait pas avec le skeuomorphisme (les icônes actuelles de l’e-mail, de FaceTime et du téléphone sur iOS sont toujours skeuomorphismes). Mon environnement graphique préféré actuellement est iOS 26, car c’est un système d’exploitation tactile qui fonctionne bien avec un pavé tactile et un clavier externes. Mais, sur un ordinateur traditionnel, je trouve que KDE Plasma 6 est agréable à utiliser. J’ai toujours eu une légère préférence pour KDE par rapport à Gnome sur Linux, depuis CentOS 4 (même si j’aimais le thème Gnome Nimbus sur Solaris).

Conditions préalables

Avant de pouvoir installer NixOS, vous devez disposer d’un compte administrateur et activer les scripts PowerShell (Get-Execution Policy pour vérifier l’état actuel, puis Set-ExecutionPolicy RemoteSigned pour autoriser l’exécution des scripts locaux non signés, mais exiger que les scripts téléchargés soient signés). Enregistrez ce script PowerShell sous le nom certs.ps1, puis exécutez-le :

# Créer un dossier pour les certificats exportés
$ExportPath = "$env:USERPROFILE\certs"
New-Item -ItemType Directory -Force -Path $ExportPath | Out-Null

# Exporter tous les certificats CA racine au format PEM
Get-ChildItem -Path Cert:\LocalMachine\Root |
ForEachObject {
  $pem = "-----BEGIN CERTIFICATE-----`n" + 
    [System.Convert]::ToBase64String($_.RawData, 'InsertLineBreaks') +
    "`n-----END CERTIFICATE-----`n"
  $fileName = ($_.Thumbprint + ".pem")
  Set-Content -Path (Join-Path $ExportPath $fileNAme) -Value $pem 
}

Write-Host "Certificates exported to $ExportPath"

Les certificats se trouvent désormais dans le chemin d’accès C:\users\<user.name>\certs

Installation et configuration de NixOS

  1. À partir d’un PowerShell administrateur, entrez « wsl —install ».
  2. Téléchargez la dernière image nixos.wsl depuis la page des versions NixOS-WSL. Une fois le téléchargement terminé, double-cliquez sur le fichier pour l’installer. Si l’installation réussit, vous devriez voir apparaître une invite de commande NixOS.
  3. Dans NixOS, entrez sudo cp -r /mnt/c/Users/<user.name>/certs /etc/nixos/certs.
  4. Entrez sudo nano /etc/nixos/configuration.nix.
  5. Modifiez le fichier de configuration (voir l’exemple). Appuyez sur Ctrl+O pour enregistrer le fichier et sur Ctrl+X pour quitter l’éditeur.
  6. Entrez sudo nix-channel —-update pour actualiser le canal actuel.
  7. Entrez sudo nixos-rebuild switch pour appliquer la configuration. 8. Dans PowerShell, entrez wsl --shutdown. Le serveur RDP ne sera pas disponible tant que NixOS n’aura pas redémarré.

Exemple de configuration.nix :

{ config, lib, pkgs, ... }:

{
  security.pki.certificateFiles =
    builtins.map (name: ./certs/${name})
      (builtins.attrNames (builtins.readDir ./certs));

  imports = [
    <nixos-wsl/modules>
  ];

  wsl.enable = true;
  wsl.defaultUser = "nixos";

  system.stateVersion = "25.05";

services = {

  desktopManager.plasma6.enable = true;

  xrdp = {
    defaultWindowManager = "startplasma-x11";
    enable = true;
    openFirewall = true;
    port = 3390;
  };

  xserver = {
    enable = true;

    xkb = {
      layout = "us";
      variant = "";
    };
  };
};

nixpkgs.config.allowUnfree = true;

environment.systemPackages = with pkgs;
  [
    kdePackages.kcalc # Calculator
    kdePackages.kmail # Email
    kdePackages.kmail-account-wizard
    appimage-run # Run app images
    git # Git
    libreoffice-qt-fresh # Office
    nodejs_24 # node.js
    onedrive # OneDrive intergration
    teams-for-linux # MS Teams
    vivaldi # Browser
    vscode # IDE
    wget # File downloads
  ];

environment.sessionVariables = {
    DONT_PROMPT_WSL_INSTALL = "true";
  };
}

Connexion à NixOS avec RDP

Bien que WSL2 prenne en charge Wayland (et X11), si vous souhaitez exécuter un bureau Linux en plein écran (ou sur plusieurs écrans), le moyen le plus simple consiste à utiliser Remote Desktop (qui utilise le protocole Remote Desktop Protocol). Pour vous connecter, vous aurez besoin d’un compte avec un mot de passe. Vous pouvez soit ajouter un mot de passe à l’utilisateur root avec passwd, soit créer un nouvel utilisateur.

  1. Sous Windows, ouvrez Bureau à distance et cliquez sur Afficher les options.
  2. Dans l’onglet Général, entrez les détails de connexion dans la zone Ordinateur. Par exemple, localhost:3390.
  3. [Facultatif] Dans l’onglet Affichage, sélectionnez Utiliser tous mes moniteurs pour le bureau à distance.
  4. Cliquez sur Se connecter. Ignorez l’avertissement relatif au certificat et connectez-vous.
  5. Sur l’écran xrdp, entrez votre nom d’utilisateur et votre mot de passe.

Lorsque vous vous reconnectez à une session existante, si l’écran de verrouillage s’affiche, vous devrez saisir à nouveau votre mot de passe pour reprendre la session.

Ajouter des paquets à NixOS

NixOS fournit une page Recherche où vous pouvez parcourir plus de 120 000 paquets. Il existe plusieurs façons d’installer des paquets. Prenons l’exemple du navigateur Vivaldi :

  • Pour ajouter temporairement le paquet afin de le tester avant de l’ajouter définitivement, utilisez nix-shell -p vivaldi.
  • Vous pouvez ajouter le paquet directement dans le fichier configuration.nix avec : environment.systemPackages = [ pkgs.vivaldi ];
  • Vous pouvez l’ajouter à votre profil avec nix profile add nixpkgs#vivaldi.
  • Ou vous pouvez l’ajouter de manière permanente à l’environnement avec nix-env -iA nixos.vivaldi.

Mise à niveau vers la dernière version de NixOS

Le dernier paquet NixOS pour WSL n’est peut-être pas la version actuelle (au moment de la rédaction de cet article, le paquet WSL est la version 25.05 et la dernière version est la 25.11). Pour effectuer la mise à niveau, vous devrez modifier votre liste de canaux Nix. Par exemple :

sudo nix-channel --add https://nixos.org/channels/nixos-25.11 nixos
sudo nix-channel --add https://github.com/nix-community/NixOS-WSL/archive/ref/heads/main.tar.gz nixos-wsl
sudo nix-channel --update
sudo nixos-rebuild boot --upgrade.

Votre session de bureau à distance sera déconnectée à un moment donné et vous ne pourrez pas vous reconnecter tant que vous n’aurez pas complètement redémarré NixOs. Dans PowerShell, entrez :

wsl --shutdown

Mise à niveau des packages

Pour passer aux derniers paquets :

sudo nix-channel --update \
sudo nixos-rebuild switch --upgrade

Conclusion

Ces instructions concernent x64. Si vous souhaitez utiliser ARM, vous devrez créer votre propre package WSL à l’aide d’une autre distribution Linux. Par exemple :

wsl --install -d Kali
cd ~
git clone https://github.com/nix-community/NixOS-WSL.git
cd NixOS-WSL
vim flake.nix
# change nixosConfigurations.default."x86_64-linux"
# to nixosConfiguration.default."aarch64-linux"
# save and exit
nix build .#nixosConfigurations.default.config.system.build.tarballBuilder
sudo ./result/bin/nixos-wsl-tarball-builder
cd /mnt/c/Users/<your-user>
cp ~/NixOS-WSL/nixos.wsl ./Downloads/
exit
wsl --install --from-file C:\Users\<user.name>\Downloads\nixos.wsl
# wait for install
# boot into nixos if it doesn't open automatically
# wsl -d NixOS
sudo nix-channel --update
sudo nixos-rebuild switch

Plasma 6 offre des possibilités de configuration apparemment illimitées (vous pouvez les découvrir dans le manuel), mais il existe d’autres environnements de bureau, tels que Gnome. Il existe des moyens plus simples d’obtenir un environnement utilisateur UNIX sous Windows, tels que Cygwin. Certaines distributions Linux sont mieux adaptées aux utilisateurs normaux, telles qu’OpenSUSE. Il existe d’autres moyens d’exécuter des machines virtuelles Linux, comme VirutalBox. Vous ne devriez probablement essayer cela que si vous êtes déjà fan de NixOS (auquel cas, vous savez déjà comment changer d’environnement de bureau). Mais, personnellement, c’était plus facile que d’apprendre PowerShell.