Personal dotfiles for macOS/Linux with zsh, vim, git, tmux, and pry. Optimized for Rails development with lazy-loaded version managers.
git clone https://github.com/skelz0r/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.sh --dry-run # Preview changes
./install.sh # Install- zsh as login shell:
chsh -s $(which zsh) - Homebrew (macOS) or equivalent package manager
./install.sh [OPTIONS]
Options:
-n, --dry-run Preview changes without applying
-h, --help Show helpThe installer:
- Creates symlinks for dotfiles in
$HOME - Installs Ruby via rbenv + ruby-lsp
- Clones tmux/vim plugin managers
- Sets up SSH and Claude configs
- Optionally installs Syncthing for folder sync
Backups: Existing files are saved to ~/.dotfiles_backup/YYYYMMDD_HHMMSS/
- Git branch in prompt
- Lazy loading for nvm/rbenv/pyenv (faster startup)
- Common aliases:
g,b,v,mcd,tat
- vim-rails - Rails navigation
- coc.nvim - LSP support
- copilot.vim - GitHub Copilot
- 40+ plugins via Vundle
- Prefix:
Ctrl+a - TPM for plugins
- Battery indicator in status bar
- Useful aliases (
lg,tree,pod,pf) - GPG signing ready
- Secure defaults (ed25519, strong ciphers)
- Connection multiplexing
- Pre-configured for GitHub/GitLab
Add your customizations above the line DO NOT EDIT BELOW THIS LINE.
Example ~/.gitconfig:
[user]
name = Your Name
email = you@example.com
# DO NOT EDIT BELOW THIS LINE
[color]
diff = autoLocal overrides (not synced):
~/.zshrc.local- Shell customizations~/.vimrc.local- Vim customizations~/.aliases- Custom aliases
| Script | Description |
|---|---|
migration |
Sync folders between machines (rsync) |
dotfiles-health |
Check dependencies and configuration |
dotfiles-diff |
Compare local vs repo dotfiles |
kill_port <port> |
Kill process on port |
tat |
Attach to tmux session (named after directory) |
wt <name> |
Create git worktree with branch |
encrypt_folder <dir> |
GPG encrypt a folder |
flushdns |
Flush DNS cache (macOS/Linux) |
battery |
Show battery level for tmux |
stunnel [port] |
SSH tunnel to remote machine (default: 3000) |
stunnel-ss [port] |
Screen Sharing tunnel (default: 5900) |
sync-setup |
Setup Syncthing with ~/share folder |
sync-status |
Show Syncthing sync status |
Real-time folder sync between machines (local and remote):
# First machine
sync-setup
# Note the Device ID
# Second machine
sync-setup --device-id <DEVICE_ID_FROM_FIRST_MACHINE>
# Accept pairing in Web UI: http://127.0.0.1:8384Usage:
# Add file on first machine
echo "test" > ~/share/file.txt
# Instantly available on second machine
cat ~/share/file.txtCheck status:
sync-status # Show sync status and connected devices
open http://127.0.0.1:8384 # Open Web UIFeatures:
- Real-time sync (< 1s detection)
- Works on local network and remote
- Encrypted P2P
- Built-in versioning
- Automatic conflict resolution
Sync dotfiles and documents to a new machine:
# Push to remote
migration --local user@newmac.local
# Pull from remote
migration --pull user@oldmac.local
# Preview only
migration --dry-run --local user@newmac.localConfigure folders in ~/.migration.conf:
FOLDERS=(
"$HOME/Documents"
"$HOME/Projects"
"$HOME/.ssh"
)dotfiles-health # Full check
dotfiles-health -q # Errors/warnings onlyChecks: git, zsh, nvim, tmux, rbenv, pyenv, nvm, symlinks, SSH, GPG
dotfiles/
├── bin/ # Utility scripts
├── zsh/
│ ├── completion/ # Shell completions
│ └── functions/ # Shell functions (lazy-load, etc.)
├── vim/
│ ├── bundle/ # Vundle plugins (git-ignored)
│ └── colors/ # Color schemes
├── config/ # App configs (coc-settings.json)
├── claude/ # Claude Code commands
├── zshrc, vimrc, ... # Dotfiles
├── ssh_config # SSH configuration
├── install.sh # Installer
└── symlink.sh # Symlink creator
Lazy-loaded for fast shell startup:
| Manager | Commands |
|---|---|
| rbenv | ruby, gem, bundle, rails, rake, rspec |
| nvm | node, npm, npx, yarn, pnpm |
| pyenv | python, pip |
First invocation loads the manager, subsequent calls are direct.
cd ~/dotfiles
git pull
./install.shCheck for drift:
dotfiles-diff -a # Check all files
dotfiles-diff -v zshrc # Show diff for specific fileInspired by thoughtbot's dotfiles
Free software under LICENSE.