WSL: Difference between revisions

From NixOS Wiki
imported>Tetov
m Fix header hierarchy
Onny (talk | contribs)
Further details on WSL2 installation
Line 3: Line 3:
== Setup ==
== Setup ==


Ensure that WSL is installed and up to date
Ensure that WSL is installed and up to date.


<syntaxhighlight lang="powershell">
<syntaxhighlight lang="powershell">
wsl --install
wsl --update
wsl --update
</syntaxhighlight>
</syntaxhighlight>
Sometimes you'll have to install WSL2 manually by [https://github.com/microsoft/WSL/releases downloading the msi-installation package].


NixOS is [https://github.com/microsoft/WSL/issues/11206 not yet packaged] as a official WSL distribution or on the Microsoft store. Download the latest release of <code>nixos-wsl.tar.gz</code> from the [https://github.com/nix-community/NixOS-WSL/releases NixOS-WSL Github page].
NixOS is [https://github.com/microsoft/WSL/issues/11206 not yet packaged] as a official WSL distribution or on the Microsoft store. Download the latest release of <code>nixos-wsl.tar.gz</code> from the [https://github.com/nix-community/NixOS-WSL/releases NixOS-WSL Github page].

Revision as of 10:17, 17 April 2024

Notes on running NixOS on the Windows Subsystem for Linux (WSL, WSL2)

Setup

Ensure that WSL is installed and up to date.

wsl --install
wsl --update

Sometimes you'll have to install WSL2 manually by downloading the msi-installation package.

NixOS is not yet packaged as a official WSL distribution or on the Microsoft store. Download the latest release of nixos-wsl.tar.gz from the NixOS-WSL Github page.

Import the WSL container using PowerShell

wsl --import NixOS .\NixOS\ nixos-wsl.tar.gz --version 2

Usage

Start it with PowerShell

wsl -d NixOS

Tips and tricks

Run container on startup

To run the distro NixOS on Windows startup or user login in the background, proceed with following commands in PowerShell

echo "" > $HOME\run_wsl2_at_startup.vbs
notepad $HOME\run_wsl2_at_startup.vbs

Inside the script we define NixOS as the distribution name, as imported in the setup step above

$HOME\run_wsl2_at_startup.vbs
set object = createobject("wscript.shell") 
object.run "wsl.exe --distribution NixOS", 0

Execute following command to open the task planer

taskschd.msc

Click on Create task on the right pane, set name to WSL. On the tab "Triggers" click on "New ..." and select run task on user login in the dropdown menu. On the tab "Action" click on "New ..." and insert as command: %USERPROFILE%\run_wsl2_at_startup.vbs