Modernize dotfiles infrastructure and update deprecated tools#23
Merged
Modernize dotfiles infrastructure and update deprecated tools#23
Conversation
Add platform-specific test scripts: - tests/test_mac.sh: uses OrbStack to spin up Ubuntu 24.04 VM on macOS - tests/test_linux.sh: uses Multipass to spin up Ubuntu 24.04 VM on Linux Add CLAUDE.md for Claude Code context.
mise is faster, simpler to install (no GPG keys), and manages both Ruby and Node.js — removing the need for separate tools (RVM, nodesource, yarn repo).
Use docker-ce from Docker's apt repository instead of the outdated docker.io Ubuntu package. Docker Compose v2 is now installed as a plugin (docker-compose-plugin) instead of the standalone v1 binary.
…optional - Replace wget with curl for consistency across the project - Update Gogh terminal colors URL from deprecated git.io shortlink to the direct GitHub raw URL - Show tmux build output instead of suppressing it - Make Docker installation skippable with SKIP_DOCKER=1 - Quote variables to handle paths with spaces
Activate mise in the shell before running rake install so Ruby comes from mise instead of apt. Also fix return/exit, add set -eu, remove duplicated dconf-cli, and simplify unsupported OS handling.
- Update Homebrew install command to current method - Replace hub with gh (GitHub CLI) - Remove reattach-to-user-namespace (unnecessary since tmux 2.6+) - Remove macvim obsolete flags - Replace Atom (discontinued) with VS Code - Use brew install --cask (replaces deprecated brew cask install)
UTM provides a full Ubuntu Desktop VM with graphical interface, allowing visual verification of terminal colors, fonts, and themes. Add tests/README.md with setup and usage instructions for both macOS (UTM) and Linux (Multipass) testing.
Add step-by-step instructions for creating the VM, installing Ubuntu, configuring directory sharing, mounting shared folders, and verifying the dotfiles installation.
Unlike Multipass, UTM requires manual VM creation and configuration. The script only wrapped trivial start/stop commands. Full instructions are in tests/README.md.
Replace VirtualBox provider with vagrant_utm plugin, enabling Vagrant automation with UTM's graphical VM on macOS. Update tests/README.md with Vagrant+UTM setup instructions.
- Add Ruby build dependencies (libssl-dev, libreadline-dev, etc) - Use mise precompiled binaries (ruby.compile=false) - Use mise use --global instead of mise install for proper activation - Replace cp with rsync to handle VirtFS permission issues - Download vim-plug from GitHub instead of copying from mount - Update peepcode theme RPROMPT: replace rvm-prompt with mise showing ruby-X.Y.Z and node-X.Y.Z - Fix sh -> bash in test scripts and README - Add --provider=utm to README commands
Use bento box which is more stable and well-maintained. Keep provisioning minimal (only curl) so the user can run install.sh interactively (chsh password, Gogh theme selection). Add rsync as a dependency in install.sh for local installs.
- docker-compose → docker compose (Compose v2 plugin) - gem install --no-ri --no-rdoc → --no-document (RubyGems 3.0+) - rake db:migrate/rollback/redo → rails (Rails 5+) - rake routes → rails routes - rspec spec → rspec (argument redundant) - gpom now pushes current branch instead of hardcoded master - brew prune removed (included in brew cleanup) - Fix gi alias conflict: rename gitignore edit to gie - Use command -v instead of mvim --version for shell startup speed
…ions - Increase HISTSIZE/SAVEHIST from 4096 to 50000 - Add guards for zsh-syntax-highlighting and mise (don't error if missing) - Only set TERM=screen-256color on Linux - Add ~/.local/bin to PATH (mise install location) - Fix peepcode RPROMPT to not show empty prefixes without mise - Remove outdated completions: docker-compose, rvm, boot2docker, bower, docker-machine
- scrooloose/nerdtree → preservim/nerdtree (repo renamed) - scrooloose/syntastic → dense-analysis/ale (async linting) - vim-scripts/tComment → tomtom/tcomment_vim (correct repo) - Remove syntastic config from vimrc - Fix <Leader>p conflict: remove CtrlP binding, keep clipboard paste
- git stash save → git stash push (deprecated since git 2.16) - Gdiff → Gdiffsplit (deprecated in fugitive) - push.default upstream → simple (safer, refuses push on name mismatch)
- Use Pry::Prompt.new API (Pry 0.13+) with fallback for older versions - Replace awesome_print with amazing_print (with fallback) - Use modern .pry! integration instead of deprecated Pry.config.print - Remove CodeRay customization and color files (no longer used by Pry) - Update RVM reference to mise in comments
No longer needed since tmux 2.6+ — pbcopy works natively in tmux.
README rewritten with clearer structure: what's included, install instructions using bash (not sh), customization table, key conventions, and links to testing docs. CLAUDE.md updated with testing section, mise references, and corrected push default.
Replace sparse lists with organized tables covering all custom key mappings. Add sections for navigation, search, copy mode, pane management, and status bar description.
25cdd22 to
0850b9c
Compare
Workflow tests the full install.sh on both platforms, then verifies mise, symlinks, and vim-plug are set up correctly. Skip chsh in Rakefile and Gogh in ubuntu.sh when CI=true (both require interactive input).
Node.js download from nodejs.org timed out at the default 30s.
mise installs tools in parallel by default. On CI, the Node download was timing out while waiting for Ruby to compile. Installing sequentially avoids the issue.
mac.sh now runs before mise in install.sh so Homebrew and build dependencies (openssl, libyaml, readline) are available for Ruby compilation. Made Homebrew installation idempotent.
The mac.sh runs in a subshell (bash), so its environment changes don't propagate. Explicitly eval brew shellenv after mac.sh so libyaml and openssl are visible to ruby-build via mise.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivação
O projeto estava com diversas ferramentas desatualizadas ou descontinuadas (RVM, Node 12 via nodesource, Docker Compose v1, Syntastic, Atom, etc) e a infraestrutura de testes com Vagrant dependia do VirtualBox que não funciona bem no Apple Silicon.
Esta PR moderniza toda a stack, atualiza dependências e melhora a documentação.
Gerenciamento de versões
RPROMPT) agora mostraruby-X.Y.Z node-X.Y.Zvia mise em vez dervm-prompt.~/.local/binadicionado ao PATH nozshenv(onde o mise é instalado).Infraestrutura de testes
bento/ubuntu-24.04. Permite testar com interface gráfica via UTM (terminal colors, fonts, vim, tmux).tests/test_linux.shusando Multipass com diretório montado para teste headless rápido.curl— oinstall.shé executado manualmente para permitir interação comchshe seleção de tema no Gogh.tests/README.mdcom instruções completas de setup.Scripts de instalação
install.sh
#!/bin/sh→#!/bin/bashcomset -eu(falha em caso de erro)return→exit(funciona combash install.sh, não sósource)cp -r→rsynccom excludes para evitar problemas de permissão em mounts VirtFSlibssl-dev,libreadline-dev, etc)mise use --globalem vez demise installpara ativar Ruby e Node.js corretamenteruby.compile=false) para evitar falhas de compilação do OpenSSLmac.sh
hub→gh(GitHub CLI oficial)reattach-to-user-namespaceremovido (desnecessário desde tmux 2.6+)brew cask install→brew install --caskubuntu.sh
docker.io(pacote Ubuntu) →docker-cedo repositório oficial do Dockerdocker-compose-plugin)TMUX_VERSION)git.io(descontinuado) → URL direta do repositóriowget→curl(consistência com o resto do projeto)> /dev/null 2>&1)SKIP_DOCKER=1Shell (zsh)
HISTSIZE/SAVEHIST: 4096 → 50000zsh-syntax-highlightingemise(não quebra se não instalados)TERM=screen-256coloraplicado apenas no Linux (macOS não precisa)_docker-compose,_rvm,_boot2docker,_bower,_docker-machineAliases
docker-compose→docker compose(Compose v2)gem install --no-ri --no-rdoc→--no-document(RubyGems 3.0+)rake db:migrate/rollback/redoerake routes→rails(Rails 5+)rspec spec→rspec(argumento redundante)gpomagora faz push da branch atual em vez de hardcodedmasterbrew pruneremovido (já incluído nobrew cleanup)giresolvido:vim .gitignorerenomeado paragiemvimusacommand -vem vez demvim --version(mais rápido no startup)Vim
scrooloose/syntastic→dense-analysis/ale(linting assíncrono, não trava o vim)scrooloose/nerdtree→preservim/nerdtree(repo renomeado)vim-scripts/tComment→tomtom/tcomment_vim(repo correto do autor)<Leader>presolvido (removido binding do CtrlP, mantido clipboard paste)Git
git stash save→git stash push(depreciado desde git 2.16)Gdiff→Gdiffsplit(depreciado no fugitive)push.default:upstream→simple(recusa push se nome do branch local difere do remoto)IRB/Pry
Pry::Prompt.new(Pry 0.13+) com fallback para versões antigasawesome_print→amazing_print(renomeado), com fallback paraawesome_print.pry!em vez dePry.config.print(depreciado)escaped_colors.rbeunescaped_colors.rbTmux
reattach-to-user-namespaceremovido do template de copy mode do macOS (desnecessário desde tmux 2.6+)Documentação
Test plan
SKIP_DOCKER=1pula instalação do DockerPlugInstall)