Development

Dotfiles 2025: Inicialização Rápida e Adaptação Inteligente

Aprenda a estruturar dotfiles que funcionam perfeitamente no Mac, WSL, containers e CI—com camadas inteligentes e scripting defensivo

Novos Contextos, Mesma Filosofia

Esse ano não estou tentando reinventar meu shell. Estou preparando para que ele funcione em qualquer lugar.

Com múltiplas máquinas, containers e WSL em rotação, eu precisava de um setup rápido, limpo e consistente — independente do contexto.

Adicionei apenas o necessário para garantir flexibilidade.

Introduzindo profile.zsh: Uma Nova Camada Superior

A maior mudança estrutural deste ano: profile.zsh.

Ele roda antes de tudo. Seu objetivo: definir decisões de sistema. Nada específico do ambiente vive mais no .zshrc.symlink — tudo começa aqui.

# profile.zsh
export ZSH="$HOME/.zsh"
export DOTFILES="$HOME/.dotfiles"

É o equivalente a uma BIOS do shell — suposições base, sem ruído.

CamadaResponsabilidade
profile.zshPaths, infos do host, suposições
bootstrap.zshExports, setup base
aliases.zshAtalhos de desenvolvedor
functions.zshUtilitários reutilizáveis

Reordenando para Clareza e Segurança

O .zshrc.symlink agora se parece com um plano de inicialização:

source "$DOTFILES/profile.zsh"
source "$DOTFILES/bootstrap.zsh"
source "$DOTFILES/aliases.zsh"
source "$DOTFILES/functions.zsh"

Essa ordem reflete intenção:

  1. Definir a base
  2. Preparar o shell
  3. Adicionar comandos úteis

E como $DOTFILES e $ZSH são definidos cedo, todos os paths funcionam de forma previsível.

Scripting Defensivo: Evitando Deriva de Setup

Um pequeno ajuste no bootstrap.zsh mostra essa mudança:

[ -z "$ZSH" ] && export ZSH="$HOME/.zsh"

Esses guardas evitam que coisas quebrem em máquinas com instalações parciais ou ambientes onde nem tudo foi montado ainda.

É um pequeno investimento para um grande ganho: confiança.

Pensamento Modular Para Uma Vida Multi-Host

Esse setup não é mais “os dotfiles do meu laptop”.

É meu shell em:

  • Mac
  • WSL
  • Containers remotos de desenvolvimento
  • Sessões de CI

E ele simplesmente funciona.

Cada arquivo tem um papel. Cada papel é testável. Cada suposição está escrita.

# Detecção de WSL (exemplo)
if grep -qEi "(Microsoft|WSL)" /proc/version; then
  export WSL=true
fi

Dotfiles não são mais estáticos — são adaptativos.

Referenciando Segredos Fora do Repositório

Este ano também padronizei como fontei arquivos de segredo fora do repositório principal:

# De um repositório pessoal de segredos
[ -f "$HOME/code/private-dotfiles/zsh/secrets.zsh" ] && source "$HOME/code/private-dotfiles/zsh/secrets.zsh"

Essa abordagem me permite:

  • Manter meu config público seguro
  • Compartilhar dotfiles sem preocupações
  • Ter múltiplos escopos de confiança (pessoal, infraestrutura, clientes)

Dotfiles não precisam de segredos — só precisam saber onde procurar.

2025 É Sobre Velocidade, Não Tamanho

Este post não é longo porque o trabalho não foi barulhento.

Foi:

  • Uma reordenação de responsabilidades
  • Uma limpeza de modelo mental
  • Uma preparação para ambientes fora do meu controle

E significa que posso abrir um novo terminal e confiar que ele será rápido, limpo e meu.

Compare o diff no GitHub