Install Arch Linux in WSL and Set It Up
Update wsl to the latest version.
wsl --update
List available distributions.
wsl --list --online
even if archlinux is not listed, you can still install it.
Install Arch Linux.
wsl --install -d archlinux
Set the root password.
passwd
Update the system
Update the package database and upgrade all packages.
pacman -Syu
Stop Arch Linux and reopen it.
Run this in PowerShell or Command Prompt or Git Bash:
wsl.exe --terminate archlinux
Install sudo
Install some basic packages.
pacman -S sudo
Create a new user
It is not recommended to log in as the root all the time. You need a regular user who can run administrative commands when needed.
In Arch Linux, you can use the useradd command, to create a new user. Let's create a new user called “team”.
useradd -m -G wheel iancleary
Here, the -m
option will automatically create a home directory for the user at /home/
.
Set the password for the new user.
passwd iancleary
Add the new user to the wheel group.
usermod -aG wheel iancleary
Edit the sudoers file to allow members of the wheel group to use sudo.
sudo pacman -S nano
EDITOR=nano visudo
Uncomment the following line by removing the #
at the beginning of the line.
It is near the bottom of the file.
%wheel ALL=(ALL) ALL
Save the document using CTRL + O and exit using CTRL + X.
At this point, you can just terminate the system using the command:
wsl.exe --terminate archlinux
Update the wsl.conf file
Edit the wsl.conf file to set some options for WSL.
sudo nano /etc/wsl.conf
Add the following content to the file:
...
[user]
default=iancleary
Save the document using CTRL + O and exit using CTRL + X.
Terminate the system using the command:
wsl.exe --terminate archlinux
Now when you start Arch Linux, it will log you in as the user “iancleary”.
Windows Terminal Settings
Icon
https://wiki.archlinux.org/extensions/ArchLinux/modules/archnavbar/archicon.svg
{
"colorScheme": "Tango Dark",
"font":
{
"face": "MesloLGS NF"
},
"hidden": false,
"name": "Arch Linux",
"source": "Microsoft.WSL"
}
Update locale
sudo nano /etc/locale.conf
Add the following content to the file:
LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"
Save the document using CTRL + O and exit using CTRL + X.
Stop Arch Linux and reopen it.
wsl.exe --terminate archlinux
Run locale command to verify the changes.
locale-gen
Stop Arch Linux and reopen it.
wsl.exe --terminate archlinux
Setup Nix
# Install git, curl and xz (e.g. for archlinux)
sudo pacman -S git xz curl less
# git is for general use and for cloning this repository
# xz is for decompression
# curl is for downloading nix installation script
# less is for git diff viewing (for use later)
# Clone my home/wsl config repository
git clone https://github.com/iancleary/wsl-config.git
cd wsl-config
# Install nix (determinate-systems installation)
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
# Open tempoary shell with nix and home-manager (shell.nix)
# if no flake.lock exists, run `nix flake update`
# if 755 permission error, restart windows
nix-shell
# Remove nix (this is necessary, so home-manager can install nix)
nix-env -e nix
# Install the configuration (adjust to the configuration/hostname you want to use )
home-manager switch --flake .#windows-tower
home-manager switch --flake .#framework
# Exit temporary shell
exit
# Set zsh (installed by nix) as default shell
echo ~/.nix-profile/bin/zsh | sudo tee -a /etc/shells
sudo usermod -s ~/.nix-profile/bin/zsh $USER
# setup rust (rustup and gcc)
sudo pacman -S gcc
rustup default stable
# gcc is needed for cargo run to properly install crates
# rustup is installed via the the nix flake iancleary/terminal-config
# rustup default stable (change stable to whatever channel you want)
Install ssh
sudo pacman -S openssh
Create an ssh key if you wish.
voila!
You now have Arch Linux running in WSL with a user account and sudo privileges.
You can install additional packages using pacman or your nix-config as needed.
WSL Set default
To set Arch Linux as the default distribution, run the following command in PowerShell or Command Prompt or Git Bash:
wsl --set-default archlinux
If you need to list all installed distributions, run:
wsl --list --verbose