Um ambiente de desenvolvimento versionado, flexível e automatizado. Com suporte intercambiável entre Zsh e Bash, permite alternância sem comprometer configurações ou fluxos de trabalho. O sistema de bootstrap automatizado aplica pré-configurações generalistas, baseadas em boas práticas iniciais para qualquer projeto, garantindo um setup mínimo eficiente. No entanto, o desenvolvedor mantém total liberdade para expandir e personalizar o ambiente conforme suas próprias necessidades, evoluindo sobre uma base sólida e bem estruturada. 🚀
Embora seja um mero bootstrap pós-instalação do SO, ele é baseado em meus requisitos essenciais míminos, portanto, é opnativo, sendo o SO o Ubuntu e suas ferramentas que considero básicas.
curl -fsSL https://raw.githubusercontent.com/rauleite/dotfiles/main/install.sh | bash
# Clone o repositório principal
git clone --recursive https://github.com/rauleite/dotfiles.git ~/dotfiles
# Atualize submódulos (Neovim)
cd ~/dotfiles
git submodule update --init --recursive
# Execute o bootstrap
chmod +x bootstrap.sh
./bootstrap.sh
Ferramenta | Descrição |
---|---|
Zsh + Plugins | Shell avançado com autocompletar |
Neovim | Editor com configuração completa |
Tmux | Multiplexador de terminal |
Node.js (LTS) | Runtime JavaScript via NVM |
Powerlevel10k | Tema Zsh com fontes personalizadas |
O projeto dotfiles é modular e inteligente, procura fazer com que todas as instalações e configurações se adaptem ao sistema, sem recriar o que já existe. Pode ser executado quantas vezes necessário, sem duplicações ou sobrescritas desnecessárias. Sempre que uma alteração for realmente necessária, uma cópia de segurança (.bak) é criada automaticamente.
Tmux funciona perfeitamente com Neovim, proporcionando uma experiência integrada.
Tmuxp é um gerenciador de sessões que mantém a configuração do tmux do seu jeito, evitando trabalho repetitivo.
Para testar, carregue um ambiente de desenvolvimento pré-configurado:
tmuxp load ~/dotfiles/tmux/dev.yaml
~/.bash_zsh_rc
é o local ideal para você incluir as configurações (tanto do bash, quanto do zsh).~/.bashrc
(e o~/.profile
) continua sendo específico para bash~/.zshrc
(e o~/.zprofile
) para zsh.
Neste diretório residem os arquivos de configuração linkados aos seus respectivos paths corretos.
Lembre que, por serem links, suas modificações podem ser feita de maneira bidirecional (origem ou destino do link). Mas você vai optar por trabalhar como faria normalmente, fazendo modificações dentro de seus paths 'naturais', que são os destinos dos links:
Origem | Destino [x] | Descrição |
---|---|---|
~/dotfiles/zsh/.p10k.zsh |
~/.p10k.zsh |
Configuração do Powerlevel10k |
~/dotfiles/zsh/.zshrc |
~/.zshrc |
Arquivo de configuração do Zsh |
~/dotfiles/nvim |
~/.config/nvim |
Configuração do Neovim |
~/dotfiles/tmux/.tmux.conf |
~/.tmux.conf |
Configuração do Tmux |
Algumas tasks do setup.yml
estão com tags, permitindo que sejam apenas elas executadas, caso você precise por algum motivo. Como por exemplo:
ansible-playbook setup.yml --tags tmux_conf
Este comando do exemplo executará somente tasks relacionadas às instalações de plugins e configurações do tmux
Em setup.yml
altere para a var nvm_version desejada (como por ex. nvm_version: "v0.40.3") e execute:
ansible-playbook setup.yml --tags neovim_bin
ansible-playbook setup.yml --tags pipx_packages
Compartilhamento de histórico entre sessões das distintas shells: bin e zsh. Centralizado no arquivo ~/.history
ansible-playbook setup.yml --tags unify_histories
No entanto, todas as tasks (com ou sem tags) já são executadas durante a instação geral (bootstrap)
# caso queira saber quais são os pacotes instalados através do pipx
pipx list
# checar lista de pacotes desatualizados
piplexed list --outdated
# atualização sob demanda
pipx upgrade nome_do_pacote
# atualização de todos
pipx upgrade-all
Seção de instalação e atualização do Neovim
O NVM faz uma bagucinha quando encontra bash e zsh no mesmo ambiente.
- recorte (copie e delete) o bloco do NVM presente no final do arquivo
~/.bashrc
e/ou~/.zshrc
- cole no seu
~/.bash_zsh_rc
- Calma, eles estão, idealmente, sincronizados no Github. Esse é todo o espírito da coisa. Provavelmente bastará dar um
git pull
e/ou re-linkar, ou algo equivalente. Na dúvida, peça ajuda.
Componente | Descrição | Link Oficial |
---|---|---|
Zsh | Shell avançado | Zsh Official |
Oh My Zsh | Framework para Zsh | Oh My Zsh |
Powerlevel10k | Tema para Zsh | Powerlevel10k |
Neovim | Editor moderno | Neovim |
Tmux | Multiplexador de terminal | Tmux |
Node.js (NVM) | Runtime JavaScript | NVM |
Fontes Meslo | Fontes para terminal | Meslo Fonts |