portfólio
← voltar

Meu setup de desenvolvimento hoje: Windows Terminal, WSL 2, Arch Linux, tmux e Neovim

O ambiente que uso hoje para programar: Windows Terminal, WSL 2 com Arch Linux, zsh, tmux, Neovim, lazygit e opencode no mesmo fluxo.

Matheus Pergoli··5 min de leitura

Eu nunca gostei muito de conteúdo sobre setup quando ele vira só uma lista de ferramenta. Sempre achei meio sem graça quando a pessoa fala o nome de tudo que usa, mas não mostra o que aquilo resolve na prática.

Então a ideia aqui é mais simples: registrar o que eu uso hoje para trabalhar e por que esse fluxo faz sentido para mim.

Hoje eu uso o Windows como sistema principal, mas programo 100% no Linux, dentro do WSL 2, com Arch Linux. É onde ficam minhas ferramentas, meu shell, meu editor, meus runtimes e basicamente tudo que faz parte do meu dia a dia de desenvolvimento.

Onde eu programo de verdade

Hoje eu entro no WSL 2 pelo Windows Terminal e faço tudo por lá.

O Windows continua sendo meu sistema para o resto das coisas. Eu ainda prefiro manter esse lado por conta de jogos e de coisas fora da programação. Mas, para desenvolver, meu ambiente é o Linux.

No meu caso, essa divisão ficou boa porque eu não preciso escolher entre uma coisa ou outra. Uso o Windows como host e deixo o Linux como ambiente de trabalho.

Dotfiles e organização

Quase toda a configuração importante fica em ~/dotfiles.

Para quem quiser ver, meus dotfiles estão aqui.

Eu uso uma estrutura separada por ferramenta e aplico tudo com stow. Isso me ajuda a manter o ambiente organizado e reproduzível sem transformar configuração em hobby paralelo.

Hoje meus dotfiles concentram principalmente:

Também deixei scripts separados para Arch Linux nativo e para Arch Linux no WSL 2, porque gosto da ideia de conseguir reconstruir o ambiente sem depender de memória ou de uma sequência solta de passos.

Shell

Meu shell hoje é zsh, com oh-my-zsh como base.

Eu uso dois plugins que, para mim, já resolvem bastante coisa sem exagero:

O prompt é feito com starship, bem enxuto. Eu gosto de abrir o terminal e ver só o que importa:

Não gosto de prompt carregado demais. Quanto menos ruído, melhor.

Para runtimes, eu uso mise. Hoje ele cuida de:

Gosto do mise porque ele deixa essa parte mais organizada. Em vez de ir juntando gerenciador para cada linguagem, fica tudo no mesmo fluxo.

Também uso zoxide, que hoje já virou hábito. Ele resolve uma coisa simples, mas que ajuda muito: chegar mais rápido nos projetos.

Além disso, no shell eu substituí alguns comandos padrão por ferramentas que prefiro no uso diário:

É aquele tipo de detalhe pequeno que melhora o uso do terminal o tempo todo.

Tmux

O tmux é o centro do meu workspace.

É nele que eu organizo as sessões, separo projetos, abro painéis e mantenho contexto entre tarefas. Os splits e novas janelas já abrem no diretório atual, o que ajuda bastante.

Uma parte importante desse fluxo é a combinação de:

Isso me ajuda a navegar entre projetos e retomar sessões com rapidez. Em vez de pensar só em abrir pasta, eu penso mais em voltar para um contexto de trabalho que já estava montado.

Também deixei o lazygit como popup dentro do tmux, no diretório atual do projeto. Quando eu preciso revisar mudanças, fazer stage ou olhar histórico, resolvo isso ali mesmo.

Neovim

Meu editor hoje é o Neovim, usando NvChad como base.

Eu gosto dessa escolha porque ela me dá uma estrutura boa para começar, mas ainda deixa espaço para ajustar o que realmente importa para mim.

No dia a dia, algumas decisões fazem bastante diferença:

No visual, o tema atual é tokyodark. No geral, eu tento manter a interface limpa e simples.

Plugins e foco do editor

O meu Neovim hoje está muito alinhado com o tipo de trabalho que eu realmente faço: JavaScript, TypeScript, React, Tailwind, MDX, Astro, bastante configuração de projeto e um pouco de Lua para o próprio setup.

Entre os plugins que mais importam no meu uso estão:

Isso resume bem o que eu quero do editor hoje: velocidade, previsibilidade e um fluxo bom para ler, navegar e refatorar código.

LSPs e formatação

Uma parte do setup que eu gosto bastante é a forma como LSP e formatação estão organizados.

Os LSPs que aparecem com mais frequência no meu fluxo hoje são:

Na formatação, eu uso conform.nvim com uma lógica que acho importante: o formatter não entra no projeto de forma cega.

Se o repositório usa Biome, ele entra primeiro. Se não usar, o fluxo cai para Prettier ou prettierd, dependendo do arquivo e do contexto.

Eu prefiro isso a tentar forçar um padrão único em tudo. No fim, o setup respeita o projeto.

Git

No Git, eu fico no meio-termo entre terminal e interface mais visual.

Para coisas rápidas, eu uso aliases simples no terminal. Para revisão, staging e navegação mais confortável, o lazygit entra muito bem.

Algumas escolhas do meu config refletem bem como eu gosto de trabalhar:

Nada muito mirabolante. Só um fluxo que seja rápido e previsível.

IA no fluxo

Hoje a IA também faz parte do meu ambiente de desenvolvimento, mas do mesmo jeito que o resto das ferramentas: dentro do terminal.

Eu uso opencode no próprio ambiente Linux, com acesso ao contexto real do projeto. Isso faz diferença para mim porque eu não gosto da ideia de usar IA como uma camada separada do trabalho principal.

No meu caso, funciona melhor assim: eu continuo no mesmo ambiente em que abro projeto, leio código, executo comando e navego entre arquivos.

O que eu tento preservar com esse setup

Se eu tivesse que resumir o que esse ambiente tenta me dar hoje, seria isso:

Eu não tenho interesse em montar um setup para impressionar ninguém. Eu só quero um ambiente que me deixe trabalhar bem.

É por isso que gosto tanto dessa combinação de Windows + WSL 2 + Arch Linux. Para mim, ela fechou muito bem.

Fechando

Hoje esse é o ambiente em que eu programo 100% do tempo.

Uso o Windows como host, entro no Linux pelo Windows Terminal, trabalho no WSL 2 com Arch Linux, organizo o fluxo com zsh, tmux, Neovim, lazygit e mise, e também uso opencode como parte real do dia a dia.

Não vejo isso como uma vitrine de ferramenta. Vejo mais como o jeito que fui encontrando de trabalhar com menos fricção.

Provavelmente isso ainda vai mudar com o tempo, mas hoje é assim que eu gosto de desenvolver.

← voltar para o blog