Personal dotfiles for Ubuntu, Arch, and macOS systems with comprehensive shell configuration, terminal setup, and development tools.
- ZSH with modern plugin management via Zinit
- Spaceship Prompt - beautiful, minimal, and powerful prompt
- Smart Completions - enhanced shell completions with zsh-completions
- Syntax Highlighting - real-time command syntax highlighting via fast-syntax-highlighting
- Auto-suggestions - fish-like autosuggestions with zsh-autosuggestions
- History Substring Search - intelligent history search with zsh-history-substring-search
- Oh My Zsh Plugins - npm and composer plugin integration
- Custom Aliases - extensive Git, Docker, npm, and system aliases
- Custom Functions - utility functions for package management and development workflows
- Environment Variables - secure
.envsupport via.shell_env.example - Extensible - load custom aliases from
~/.aliasesdirectory
- Alacritty - GPU-accelerated terminal with TokyoNight theme and JetBrains Mono font
- Ghostty - modern terminal emulator configuration
- iTerm2 - shell integration for macOS
- Configuration - optimized tmux setup with custom keybindings
- Plugin Manager - automatic TPM installation
- Custom Layouts - pre-configured workspace layouts
- Automatic Renaming - smart window naming with custom script
- Modern Config - Neovim configuration (v0.8+)
- Stylua - Lua code formatter configuration included
- Configuration - optimized Git settings
- Delta Integration - better diff viewing with git-delta
- Aliases - comprehensive Git workflow shortcuts
- NVM - Node Version Manager for Node.js
- Go - Go language support and tools
- Rust - Rustup and Cargo package management
- Composer - PHP dependency manager
- GitHub CLI - GitHub command-line tool integration
- Trellis CLI - virtualenv integration for WordPress development
- Spotifyd - lightweight Spotify daemon configuration
- Font Configuration - custom fontconfig settings
- Ngrok - secure tunneling configuration
alacritty-bg-toggle- Toggle Alacritty backgroundcountdown-days- Countdown timer utilityfix-valet-dns- Fix Laravel Valet DNS issueslogs- Enhanced log viewingmix-output-to-input- Audio routing helpermpris-currently-playing- Display current media playbacktmux_automatic_rename_format- Tmux window renamingupdate_proton_ge- Update Proton GE for gaming
- ZSH (required)
- macOS:
brew install zsh && chsh -s $(which zsh) - Ubuntu:
sudo apt install zsh && chsh -s $(which zsh) - Arch:
sudo pacman -S zsh && chsh -s $(which zsh)
- macOS:
- Git (required)
- macOS:
brew install git - Ubuntu:
sudo apt install git - Arch:
sudo pacman -S git
- macOS:
- Neovim v0.8+ (for nvim configuration)
- macOS:
brew install neovimorbrew install --HEAD luajit neovim - Ubuntu:
sudo apt install neovim - Arch:
sudo pacman -S neovim
- macOS:
- Tmux (for terminal multiplexing)
- Alacritty or Ghostty (for terminal emulator config)
# Clone the repository
git clone git@github.com:codepuncher/dotfiles.git ~/.dotfiles
# Run the setup script
~/.dotfiles/setup.shThe setup script will prompt you to:
-
Install Packages (optional) - Install system packages and dependencies
- Arch/Manjaro: Installs dev tools, terminals, media apps, and more
- WSL: Installs WSL-specific packages
- Sets up system services on Arch
-
Install Tools (optional) - Install development tools
- NVM (Node Version Manager)
- Zinit (ZSH plugin manager)
- TPM (Tmux Plugin Manager)
- Composer (PHP dependency manager)
-
Symlink Dotfiles (recommended) - Creates symlinks for:
- Shell configs (
.zshrc,.bashrc,.profile) - Shell variables and aliases
- Tmux configuration
- Neovim configuration
- Git configuration
- Terminal emulator configs (Alacritty, Ghostty)
- Media configs (Spotifyd)
- Font configuration
- Web tools (Ngrok)
Note: Existing files are automatically backed up to
~/.dotfiles/backups/ - Shell configs (
-
Initialize Directories - Creates standard workspace structure:
~/Code/misc~/Code/go~/Code/wordpress~/Tools
-
Shell Change - Automatically switches your shell to ZSH if needed
After completion, the script will launch ZSH with your new configuration.
Copy .shell_env.example to ~/.env and add your secrets:
cp ~/.dotfiles/.shell_env.example ~/.envAdd your own aliases by creating files in ~/.aliases/:
mkdir -p ~/.aliases
echo "alias myalias='my command'" > ~/.aliases/customAfter first tmux launch, install plugins with: prefix + I (default: Ctrl+b then Shift+i)
- General: Redshift, Ulauncher, Variety, Bitwarden, Plank, Spotify, Pandoc, LaTeX
- Social: Discord, Caprine, WhatsApp
- Work: Microsoft Edge, ClickUp, Zoom
- Dev: Alacritty, Ghostty, Tmux, GitHub CLI, Go, Rust
- Node.js (via NVM)
- Go packages (development tools)
- Composer packages (PHP tools)
- Pip packages (Python tools)
- Cargo packages (Rust tools)
~/.dotfiles/
├── ansible/ # Automation playbooks
├── backups/ # Backed up configs
├── bin/ # Custom utility scripts
├── fontconfig/ # Font configuration
├── git/ # Git configuration
├── media/ # Media player configs (Spotifyd)
├── nvim/ # Neovim configuration
├── shell/ # Shell configs, aliases, functions
├── templates/ # Configuration templates
├── terminals/ # Terminal emulator configs
├── tmux/ # Tmux configuration
├── web/ # Web tool configs (Ngrok)
└── setup.sh # Main setup script
To reinstall/update dotfiles:
cd ~/.dotfiles && git pull && ./setup.shOr use the built-in function:
reinstall_dotfiles- ✅ Arch Linux / Manjaro (full support with package installation)
- ✅ Ubuntu / Debian (full support)
- ✅ WSL (Windows Subsystem for Linux)
- ✅ macOS (shell and tool configs, package installation not automated)
Personal dotfiles - use at your own discretion.