Personal dotfiles for macOS and Debian 12 (WSL2) development environments.
- Shell: zsh with oh-my-zsh and plugins (autosuggestions, docker)
- Editor: NeoVim with vim-plug and CoC LSP
- Terminal Multiplexer: tmux with TPM
- Version Managers: RVM (Ruby)
- Languages: Ruby (via RVM), Python 3
- Development Tools: Git, Ansible, various CLI utilities (bat, jq, shellcheck, etc.)
- macOS (tested on Monterey, Ventura, Sonoma)
- Debian 12 (WSL2 and native)
# Clone the repository
mkdir -p ~/Projects
cd ~/Projects
git clone https://github.com/gruz0/dotfiles.git
cd dotfiles
# Run installation
./install-macos.shThe script will:
- Install Command Line Tools (if needed)
- Install/update Homebrew
- Install all packages and GUI applications
- Set up oh-my-zsh, RVM, NeoVim, and tmux
- Apply macOS system settings
- Symlink configuration files
# Clone the repository
mkdir -p ~/Projects
cd ~/Projects
git clone https://github.com/gruz0/dotfiles.git
cd dotfiles
# Run installation
./install-debian12.shThe script will:
- Update apt repositories
- Install all CLI development tools via apt
- Install Ansible (via Ubuntu PPA) and diff-so-fancy (via npm)
- Set up oh-my-zsh, RVM, NeoVim, and tmux
- Configure SSH settings (optional)
- Symlink configuration files
Languages:
- Go, Node.js, Python, Deno
Version Control:
- Git, Subversion
Editors & Tools:
- NeoVim, tmux, zsh
Development:
- cmake, automake, pkg-config, shellcheck, hadolint, composer
Utilities:
- bat, jq, tree, wget, curl, diff-so-fancy, the_silver_searcher
Browsers:
- Chrome, Firefox, Brave, Edge, Opera
Development:
- Docker, iTerm2, DBeaver
Productivity:
- 1Password, Telegram, Zoom, TeamViewer
Media:
- OBS, Camtasia
Utilities:
- CleanMyMac, LibreOffice, The Unarchiver, Fira Code font
- Faster key repeat, no press-and-hold
- Dock on left, auto-hide enabled
- Show hidden files in Finder
- List view as default in Finder
- Time Machine exclusions for Downloads, Music, Movies, Pictures, and development directories
Build Tools:
- build-essential, pkg-config
Languages:
- Python 3, python3-pip
Version Control:
- Git
Editors & Tools:
- NeoVim (installed from GitHub release), tmux, zsh
Development:
- shellcheck
Utilities:
- bat, curl, gnupg, jq, tree, wget
System Libraries:
- coreutils, zlib1g
Via Ubuntu PPA:
- Ansible (installed via Ubuntu PPA for Debian 12 compatibility)
Via npm:
- diff-so-fancy (requires npm/nodejs to be installed first - install manually if needed:
sudo apt install nodejs npm)
Note: GUI applications are not installed on Debian as it's designed for headless/WSL2 environments.
- oh-my-zsh with custom gruz0 theme and plugins
- RVM (Ruby Version Manager)
- vim-plug and NeoVim plugins
- TPM (tmux plugin manager)
macOS:
- Python packages: neovim, ansible-vault (via pip)
Debian:
- Ansible (installed via Ubuntu PPA - see
lib/install-ansible.sh) - diff-so-fancy (installed via npm - see
lib/install-diff-so-fancy.sh)
All configuration files are symlinked from the assets/ directory:
.zshrc- zsh configuration with aliases and environment variables.tmux.conf- tmux configuration with custom key bindings.config/nvim/init.vim- NeoVim configuration.config/nvim/coc-settings.json- CoC LSP settings.gitconfig- Git configuration.ssh/- SSH configuration and keys.editorconfig- Editor indentation rules- And more...
macOS:
- Edit
packages/macos-brew.txtfor CLI tools - Edit
packages/macos-casks.txtfor GUI applications
Debian:
- Edit
packages/debian-apt.txt
Then re-run the installation script.
- Add your config file to the
assets/directory - Add the relative path to
config/symlinks.txt - Re-run the deployment:
./lib/deploy-configs.sh
All installation logic is in modular scripts under lib/:
lib/install-zsh.sh- zsh and oh-my-zsh setuplib/install-ruby.sh- RVM and Rubylib/install-neovim.sh- NeoVim and pluginslib/install-tmux.sh- tmux and TPMlib/install-python-tools.sh- Python packages (neovim, ansible-vault)lib/install-ansible.sh- Ansible via Ubuntu PPA (Debian only)lib/install-diff-so-fancy.sh- diff-so-fancy via npm (Debian only)lib/deploy-configs.sh- Symlink configurations
Test the installation scripts without running them:
# Test macOS scripts
./tests/test-macos.sh
# Test Debian scripts
./tests/test-debian12.shThese tests verify that all required files exist and scripts have valid syntax.
If you see errors about missing compilers:
xcode-select --installRestart your terminal or run:
exec zshRun the plugin install manually:
nvim +PlugInstall +qallFix SSH permissions:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*
chmod 644 ~/.ssh/*.pub
chmod 600 ~/.ssh/configEnsure Homebrew is in your PATH. Add to your shell:
eval "$(/opt/homebrew/bin/brew shellenv)" # Apple Silicon
# or
eval "$(/usr/local/bin/brew shellenv)" # IntelThis repository uses a modular bash script architecture:
dotfiles/
├── install-macos.sh # macOS entry point
├── install-debian12.sh # Debian entry point
├── lib/ # Shared installation scripts
├── packages/ # Package lists by OS
├── config/ # Installation configuration
└── assets/ # Dotfiles to symlink
Each component is designed to be:
- Idempotent: Safe to run multiple times
- Modular: Independent scripts for each tool
- Cross-platform: Shared code works on both macOS and Debian
- Verbose: Clear logging with color-coded output
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch
- Test your changes on both macOS and Debian if possible
- Submit a pull request
MIT
Created and maintained by gruz0