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
- Valet Linux - Laravel Valet for Linux development environment
- GitHub CLI - GitHub command-line tool integration
- GitHub Copilot CLI - AI-powered command-line assistance
- 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
- Zinit (ZSH plugin manager)
- TPM (Tmux Plugin Manager)
- NVM and Node.js packages (language servers, formatters, linters)
- Composer (PHP dependency manager + Valet Linux)
-
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
- Database: MariaDB Server
- PHP: Multi-version PHP support (8.1 and 8.2) with common extensions
- bcmath, bz2, cli, common, curl, fpm, gd, gmp, intl, mbstring, mysql, opcache, readline, soap, tidy, xdebug, xml, xsl, zip
- Tools: wslu (WSL utilities for interoperability)
- Node.js (via NVM)
- Language Servers: GitHub Copilot, Devsense PHP LS, Intelephense, Ansible, TailwindCSS, Vue, Bash
- Go packages (development tools)
- Composer packages (PHP tools + Valet Linux)
- 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 --reinstall option, which wipes installed tool/runtime dirs before re-running setup:
./setup.sh --reinstall- β 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)
bin/corsair-headset-switch is a systemd user service that switches the default
PipeWire sink to the Corsair VOID Elite when the headset powers on and restores
the previous sink when it powers off. It depends on headsetcontrol (installed
by setup.sh). After symlinking, enable it once:
systemctl --user daemon-reload
systemctl --user enable --now corsair-headset.serviceLogs: journalctl --user -u corsair-headset -f.
Personal dotfiles - use at your own discretion.