WSL: Difference between revisions

imported>Onny
Run container on startup
Ponder (talk | contribs)
m Copyedits
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Notes on running NixOS on the Windows Subsystem for Linux (WSL, WSL2)
Notes on running NixOS on the Windows Subsystem for Linux (WSL, WSL2).


== Setup ==
== Setup ==


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


<syntaxhighlight lang="bash">
<syntaxhighlight lang="powershell">
wsl --install
wsl --update
wsl --update
</syntaxhighlight>
</syntaxhighlight>


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].
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].


Import the WSL container using PowerShell
Import the WSL container using PowerShell


<syntaxhighlight lang="bash">
<syntaxhighlight lang="powershell">
wsl --import NixOS .\NixOS\ nixos-wsl.tar.gz --version 2
wsl --import NixOS .\NixOS\ nixos-wsl.tar.gz --version 2
</syntaxhighlight>
</syntaxhighlight>
Line 19: Line 22:
== Usage ==
== Usage ==


Start it with PowerShell
Start it with PowerShellː


<syntaxhighlight lang="bash">
<syntaxhighlight lang="powershell">
wsl -d NixOS
wsl -d NixOS
</syntaxhighlight>
</syntaxhighlight>
Line 27: Line 30:
== Tips and tricks ==
== Tips and tricks ==


== Run container on startup ==
=== Run container on startup ===


To run the distro <code>NixOS</code> on Windows startup or user login in the background, proceed with following commands in PowerShell
To run the distro <code>NixOS</code> on Windows startup or user login in the background, use these commands in PowerShellː


<syntaxhighlight lang="bash">
<syntaxhighlight lang="powershell">
echo "" > $HOME\run_wsl2_at_startup.vbs
echo "" > $HOME\run_wsl2_at_startup.vbs
notepad $HOME\run_wsl2_at_startup.vbs
notepad $HOME\run_wsl2_at_startup.vbs
</syntaxhighlight>
</syntaxhighlight>


Inside the script we define <code>NixOS</code> as the distribution name, as imported in the setup step above
Inside the script we define <code>NixOS</code> as the distribution name, as imported in the setup step above.


{{file|$HOME\run_wsl2_at_startup.vbs|vbs|<nowiki>
{{file|$HOME\run_wsl2_at_startup.vbs|vbscript|<nowiki>
set object = createobject("wscript.shell")  
set object = createobject("wscript.shell")  
object.run "wsl.exe --distribution NixOS", 0
object.run "wsl.exe --distribution NixOS", 0
</nowiki>}}
</nowiki>}}


Execute following command to open the task planer
Open the task schedulerː


<syntaxhighlight lang="bash">
<syntaxhighlight lang="powershell">
taskschd.msc
taskschd.msc
</syntaxhighlight>
</syntaxhighlight>


Click on <code>New task</code> on the right pane, set name to <code>WSL</code>. On the tab "Triggers" click on "New ..." and select run task on user login. On the tab "Action" click on "New ..." and insert as command: <code>%USERPROFILE%\run_wsl2_at_startup.vbs</code>
Click on <code>Create task</code> on the right pane, set name to <code>WSL</code>. 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: <code>%USERPROFILE%\run_wsl2_at_startup.vbs</code>
[[Category:Container]]