ArchWSL [1][2][3]ยถ

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
wsl --set-default-version 2
wsl --update --web-download
scoop install archwsl
arch
passwd
echo "%wheel ALL=(ALL) ALL" > /etc/sudoers.d/wheel
useradd -m -G wheel -s /bin/bash <username>
passwd <username>
exit
arch config --default-user <username>
arch

Use repository mirror [4]:

sudo vim /etc/pacman.conf
[archlinuxcn]
Server = https://repo.archlinuxcn.org/$arch
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
sudo vim /etc/pacman.d/mirrorlist
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
# sudo pacman -Sy archlinux-keyring
# sudo pacman-key --init
# sudo pacman-key --populate archlinux
sudo pacman -Sy archlinuxcn-keyring
sudo pacman-key --init
sudo pacman-key --populate
sudo pacman -Syyu
sudo pacman -S --needed base-devel

Install Optsยถ

sudo pacman -S <pkg>
sudo pacman -Syu yay
yay -S <pkg>
yay -S paru
paru <pkg>

For example:

sudo pacman -S \
	asciinema \
	atuin \
	bat \
	cargo \
	chezmoi \
	cmus \
	cronie \
	curl \
	docker \
	docker-compose \
	eza \
	fd \
	fzf \
	git \
	github-cli \
	harper \
	neovim \
	newsboat \
	nvm \
	openssh \
	pandoc-cli \
	pnpm \
	presenterm \
	python-pipx \
	rust \
	rbenv \
	sdcv \
	starship \
	tere \
	tldr \
	texlab \
	tmux \
	tmuxinator \
	translate-shell \
	uv \
	wget \
	yq \
	zsh
	# go
yay -S --noconfirm \
act \
gvm \
lazydocker-bin \
paru \
ruby-build \
texlive-installer \
win32yank
pipx install deep-translator pip_search
cargo install autocast grex pipe-rename tidy-viewer trashy
pnpm add -g clean-css html-minifier js-beautify prettier svgo terser
pnpm add -g degit echo-cli npms-cli markserv open-cli png-to-ico serve

Remove Windows 10โ€™s PATH [5][6]ยถ

Edit ~/.wslconfig:

[interop]
appendWindowsPath = false

Install fontsยถ

mkdir -p ~/.local/share/fonts
mv <font> ~/.local/share/fonts/
fc-cache -fv

D-Bus [7]ยถ

# sudo pacman -S dbus
sudo mkdir /run/dbus -p
sudo dbus-daemon --system

systemd/systemctl [7]ยถ

vim /etc/wsl.conf
[boot]
systemd=true

WSLgยถ

ln -s /mnt/wslg/runtime-dir/wayland-0* /run/user/1000/

On Windows:

Edit ~/.wslconfig

[wsl2]
guiApplications=false

Cross-referenceยถ