Configurando o ArchLinux com WSL 2 para Devs
Tags: archlinux, programming, wsl, webdev
Published: 2022-11-21 16:24:48

> [English version](https://dev.to/dchueri/archlinux-config-on-wsl2-to-developers-48lm)

Nos últimos dias eu precisei formatar novamente meu equipamento e senti a necessidade de ter uma documentação para agilizar essa parte de configuração do meu ambiente de desenvolvimento. Utilizo alguns apps no meu dia a dia que me impedem de utilizar somente o Linux, por um tempo utilizei o dual-boot, porém a necessidade de reiniciar o PC para algumas alterações rápidas em código me fizeram buscar outra alternativa, no caso o WSL.

A ideia inicial era somente documentar para facilitar o meu processo de configuração, mas como do limão surge a limonada, decidi compartilhar com vocês aqui. Não vou me apegar a explicações sobre o que é o WSL ou sobre os motivos de cada escolha, mas fico completamente aberto a sugestões e diálogos com quem possuir interesse.

Se você não sabe o que é o WSL ou busca mais informações a respeito segue o link com a documentação oficial da Microsoft (há também inúmeros artigos que podem ser encontrados por uma pesquisa rápida):

[O que é o Subsistema do Windows para Linux](https://learn.microsoft.com/pt-br/windows/wsl/about)

## Instalando o WSL

Caso ainda não tenha instalado o WSL no seu Windows insira o seguinte comando no Windows PowerShell:

```bash
wsl --install
```

[Instalar o WSL | Microsoft Learn](https://learn.microsoft.com/pt-br/windows/wsl/install#install-wsl-command)

## Windows Terminal

Eu prefiro utilizar o Windows Terminal por dois principais motivos: personalização e aproveitamento de alguns comandos Linux. A instalação é simples e pode ser feita pelo link abaixo:

[Windows Terminal - Aplicativos Microsoft Store](https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=pt-br&gl=br)

## Instalando o Arch

Essa versão do Arch que eu utilizo é bem leve se comparado a outras opções (como o Manjaro por exemplo):

[https://github.com/yuk7/ArchWSL](https://github.com/yuk7/ArchWSL)

Basta extrair os arquivos para uma pasta de preferência e executar o arquivo Arch que será iniciada a instalação.

## Configurando um usuário

Feita a instalação é hora de configurar um usuário e torná-lo padrão na inicialização, evitando utilizar o usuário root. Basta seguir os comandos abaixo, lembrando de substituir `{username}` pelo _nome_ de usuário desejado:

```bash
echo "%wheel ALL=(ALL) ALL" > /etc/sudoers.d/wheel
```

```bash
useradd -m -G wheel -s /bin/bash {username}
```

```bash
passwd {username}
```

Agora para definir o usuário criado como padrão, feche o Arch e abra o seu terminal na pasta onde está o arquivo Arch.exe e insira o comando a seguir:

```bash
.\Arch.exe config --default-user {username}
```

[How to Setup | ArchWSL official documentation (wsldl-pg.github.io)](https://wsldl-pg.github.io/ArchW-docs/How-to-Setup/#set-up-the-default-user)

## Atualizando os pacotes da distro

Antes de atualizar precisamos inicializar o keyring do pacman:

```bash
sudo pacman-key --init
```

E também realizar a configuração inicial das chaves com:

```bash
sudo pacman-key --populate
```

```bash
sudo pacman -Sy archlinux-keyring
```

```bash
sudo pacman -Syu
```

[pacman (Português)/Package signing (Português) - ArchWiki (archlinux.org)](https://wiki.archlinux.org/title/Pacman_(Portugu%C3%AAs)/Package_signing_(Portugu%C3%AAs))

[Initialize keyring | ArchWSL official documentation (wsldl-pg.github.io)](https://wsldl-pg.github.io/ArchW-docs/How-to-Setup/#initialize-keyring)

## Gerenciadores de pacotes

Vou instalar incialmente os gerenciadores YARN e NPM:

```bash
sudo pacman -S yarn npm
```

Como gerenciador de [AUR](https://wiki.archlinux.org/title/Arch_User_Repository_(Portugu%C3%AAs)) eu utilizo o [Yay](https://github.com/Jguer/yay):

```bash
sudo pacman -S --needed git base-devel
```

Por fim, o pacote *“Rust”* para utilizar o *“cargo”*:

```bash
sudo pacman -S rust
```

Para instalar o Yay será necessário clonar o repositório, como após a instalação os arquivos não serão mais utilizados eu opto por criar uma pasta temporária para facilitar a exclusão posteriormente:

```bash
mkdir tmp
```

```bash
cd tmp
```

Agora basta clonar o repositório e fazer o build com o `makepkg`:

```bash
git clone https://aur.archlinux.org/yay.git
```

```bash
cd yay
```

```bash
makepkg -si
```

[Jguer/yay: Yet another Yogurt - An AUR Helper written in Go (github.com)](https://github.com/Jguer/yay#installation)

### Z Shell

Instalando o ZSH:

```bash
yay -S zsh
```

## Personalizando o Terminal

### Alterando o tema do terminal

O [Windows Terminal Themes](https://windowsterminalthemes.dev/) possui diversos temas prontos para o seu terminal, basta escolher o tema de sua preferência e clicar no botão “*Get theme*”, com isso o tema selecionado será copiado para a sua área de transferência. O meu tema preferido é o [Dracula](https://windowsterminalthemes.dev/?theme=Dracula).

Basta agora voltar ao terminal, utilizar o atalho `Ctrl + ,` para abrir as *Configurações* e clicar em *Abrir arquivo JSON* no canto inferior esquerdo.

![Print do terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sxwa3nf86ranoliefgj2.png)

Após o último tema (os temas estão dentro do array "*schemes*”), coloque uma `,` e cole o tema escolhido. Salve e feche o arquivo.

> **Obs.:** Caso você “quebre” o arquivo JSON, enquanto o terminal estiver aberto ele pode funcionar normalmente, porém ao reiniciá-lo você encontrará algum erro parecido com [este](https://i.imgur.com/Dp8w5WD.png). Caso isso ocorra, apenas clique em “OK”, abra o arquivo JSON novamente, verifique a sintaxe e salve o arquivo.
> 

Volte à tela de *Configurações,* abra o perfil do Arch, em “*Configurações adicionais”* clique em “*Aparência”*. Agora é só alterar o “*Esquema de cores*” para a opção desejada. Clique em “*Salvar*” e feche as configurações.

### Alterando tema do ZSH

Para alterar o tema do ZSH eu utilizo o [Powerlevel10k](https://github.com/romkatv/powerlevel10k):

```bash
yay -S --noconfirm zsh-theme-powerlevel10k-git
```

```bash
echo 'source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
```

```bash
chsh -s /usr/bin/zsh
```

Reinicie o terminal.

### Fonte

Após instalado o Powerlevel10k, quando iniciar o terminal novamente irá aparecer uma tela de configurações onde deverá ser visualizado alguns símbolos:

![Print do terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lzc52918hwliw624th5j.png)

> Caso você não esteja conseguindo visualizar os símbolos apresentados, basta instalar alguma das chamadas [Nerd Fonts](https://www.nerdfonts.com/font-downloads) e alterar a fonte do perfil Arch em “*Configurações adicionais*” > “*Aparência*” > “*Tipo de fonte*”.
> 

Quando quiser acessar novamente a tela de configuração do Powerlevel10k basta digitar:

```bash
p10k configure
```

### Plugins

No meu caso, costumo utilizar os seguintes plugins:

- [ZSH Autosuggestions](https://github.com/zsh-users/zsh-autosuggestions): que faz um autocomplete com base no meu histórico de comandos;

- [exa](https://github.com/ogham/exa): serve como alternativa ao “*ls*”; e

- [bat](https://github.com/sharkdp/bat): alternativa ao “*cat*”.

```bash
mkdir .zsh
```

```bash
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
```

```bash
cargo install bat exa
```

Abra o arquivo .zshrc no seu editor de preferência e adicione ao final do arquivo:

```bash
code .zshrc
```

```bash
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
alias ls="exa --icons"
alias bat="bat --style-auto"
```

## NVM

Para o gerenciamento de versões do node eu utilizo o [NVM](https://github.com/nvm-sh/nvm):

```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
```

## Docker

É necessário possuir o Docker Desktop instalado no windows. Com isso, apenas digite no terminal:

```bash
yay -S docker
```

E por fim habilite a distro do Arch nas _Resources_ do Docker Desktop.

## E é isso

Ao decorrer do artigo, busquei disponibilizar alguns links úteis para que cada um consiga realizar a melhor configuração conforme for o caso. Como dito no início sinta-se livre para dar sugestões, assim como indicar algum erro que ocorreu durante o processo e bem como compartilhar suas preferências com os demais.