Personal configuration files for Linux (Arch/Omarchy) and macOS development environments. Designed to maintain consistency across machines using symlinks with platform-specific setup scripts.
# Clone this repo
git clone https://github.com/benward83/dotfiles.git ~/.dotfiles
# Run installation script (auto-detects your platform)
cd ~/.dotfiles
./install.sh
# Install dependencies (see below)
# Restart your shellThis dotfiles repository supports:
- Linux (Arch Linux with Hyprland/Omarchy)
- macOS
Platform-specific configs are automatically handled by the setup scripts.
.zshrc- ZSH configuration with oh-my-zsh, custom aliases and functions.bashrc,.bash_profile,.profile- Bash configurations.local/bin/env- PATH setup script
.gitconfig- Git global config with conditional includes- Default:
bward@quadrabee.com(work email) - For
~/.dotfiles/and~/personal/: uses.gitconfig-personal
- Default:
.gitconfig-personal- Personal email override (benward83@gmail.com).config/git/ignore- Global gitignore
.config/alacritty/alacritty.toml- Alacritty configuration.config/kitty/kitty.conf- Kitty terminal configuration.config/warp-terminal/- Warp terminal configs (Linux-specific).config/starship.toml- Starship prompt configuration
.config/nvim/- Neovim configuration (LazyVim-based)- Custom plugins and themes
- Omarchy theme hot-reload support (Linux)
- Cross-platform compatible
vscode/- VS Code settings (to be added)settings.json- Editor settingskeybindings.json- Custom keybindingsextensions.txt- Extension list
.config/lazygit/config.yml- Lazygit TUI configurationdirenv- Auto-loaded via.zshrc
.config/hypr/- Hyprland window manager configurationhyprland.conf- Main configbindings.conf- Keybindingsmonitors.conf- Display setuplooknfeel.conf- Appearanceenvs.conf- Environment variables
linux/omarchy/- Omarchy theme systemconfig.sh- Theme preferencesthemes/- Custom themes directory
scripts/setup-linux.sh- Linux/Omarchy setup scriptscripts/setup-macos.sh- macOS setup scriptscripts/omarchy-setup.sh- Omarchy theme installerscripts/reset-scarlett.sh- Audio interface reset script
./install.shAuto-detects your platform (Linux or macOS) and runs the appropriate setup script. On Linux, offers to set up Omarchy themes interactively.
Linux:
./scripts/setup-linux.shmacOS:
./scripts/setup-macos.shOmarchy Themes (Linux only):
./scripts/omarchy-setup.shThese need to be installed manually on a new system:
- ZSH -
sudo pacman -S zsh(Arch) orbrew install zsh(macOS) - oh-my-zsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" - Git - Usually pre-installed
# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting- NVM (Node Version Manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash - direnv -
sudo pacman -S direnv(Arch) orbrew install direnv(macOS) - Starship -
sudo pacman -S starship(Arch) orbrew install starship(macOS) - Neovim -
sudo pacman -S neovim(Arch) orbrew install neovim(macOS) - Lazygit -
sudo pacman -S lazygit(Arch) orbrew install lazygit(macOS)
- Alacritty -
sudo pacman -S alacritty(Arch) orbrew install --cask alacritty(macOS) - Kitty -
sudo pacman -S kitty(Arch) orbrew install --cask kitty(macOS) - Warp (optional) - Download from https://www.warp.dev/
- Hyprland -
sudo pacman -S hyprland - Omarchy - Follow installation from https://github.com/warbacon/omarchy
- CaskaydiaMono Nerd Font - For terminal icons
- Homebrew -
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
The .gitconfig uses conditional includes to automatically use the correct email:
- Work repos (default):
bward@quadrabee.com - Personal projects (
~/.dotfiles/,~/personal/):benward83@gmail.com
This is automatic - no manual switching needed! Just put personal projects in ~/personal/ directory.
Custom themes go in linux/omarchy/themes/. The setup script will symlink them to ~/.config/omarchy/themes/.
To change your preferred theme:
- Edit
linux/omarchy/config.sh - Set
OMARCHY_THEME="your-theme-name" - Run
./scripts/omarchy-setup.sh
Or use Omarchy directly:
omarchy theme list
omarchy theme set <theme-name>Status: ✅ Fully configured and tracked in this dotfiles repo.
Your VS Code configuration is stored in vscode/ and includes:
vscode/settings.json- All your VS Code settings (ESLint, formatters, themes, etc.)vscode/keybindings.json- Custom keyboard shortcutsvscode/extensions.txt- List of 37 installed extensions
The setup scripts (setup-linux.sh and setup-macos.sh) automatically:
- Symlink settings and keybindings to the correct platform-specific location
- Install all extensions from
extensions.txt
Symlinks are created based on your platform:
- Linux:
~/.config/Code/User/and~/.config/Code - OSS/User/ - macOS:
~/Library/Application Support/Code/User/
Since settings are symlinked, any changes in VS Code automatically update the dotfiles repo:
# After making changes in VS Code, commit them:
cd ~/.dotfiles
git add vscode/
git commit -m "[VSCode] Update settings"
git pushTo update the extension list after installing new extensions:
code --list-extensions > ~/.dotfiles/vscode/extensions.txt
cd ~/.dotfiles
git add vscode/extensions.txt
git commit -m "[VSCode] Update extension list"
git pushSince configs are symlinked, any edits you make to files like ~/.zshrc automatically update the repo:
cd ~/.dotfiles
git status # See what changed
git add <changed-files>
git commit -m "[Component] Description of changes"
git pushImportant: Follow the commit message format: [Component] Description
Examples:
[Zsh] Add docker compose alias[Hypr] Update keybindings for screenshot[Nvim] Add new LSP configuration
- Shell configs (
.zshrc, etc.) - Git configuration
- Neovim
- Starship prompt
- Lazygit
- Terminal emulators (alacritty, kitty)
- Hyprland configuration
- Omarchy themes
- Warp terminal (partially)
- Terminal configs reference Omarchy themes but won't break on macOS (files just won't exist)
- VS Code paths differ: Linux uses
~/.config/Code/User/, macOS uses~/Library/Application Support/Code/User/ - Setup scripts handle these differences automatically
Q: Symlink already exists error?
A: The scripts handle this automatically. If issues persist, manually remove: rm ~/.zshrc then re-run.
Q: Permission denied on scripts?
A: Ensure scripts are executable: chmod +x ~/.dotfiles/scripts/*.sh
Q: ZSH plugins not loading? A: Install oh-my-zsh plugins (see Dependencies section)
Q: Omarchy themes not applying?
A: Ensure Omarchy is installed. Run omarchy theme list to see available themes.
Q: Terminal theme looks broken on macOS? A: Normal - Omarchy theme imports are Linux-only. You can comment out the import lines or add macOS-specific themes.
Q: Neovim plugins not installed?
A: Open nvim and run :Lazy sync to install all plugins.
Q: Hyprland config appearing on macOS? A: It's harmless - macOS ignores Hyprland configs. The setup script only symlinks what's needed.
.dotfiles/
├── README.md # This file
├── install.sh # Main installer (platform detection)
├── .gitignore # Comprehensive gitignore
│
├── Shell configs
├── .zshrc # ZSH configuration
├── .bashrc # Bash configuration
├── .bash_profile
├── .profile
│
├── Git configs
├── .gitconfig # Main git config
├── .gitconfig-personal # Personal email override
│
├── .config/ # Cross-platform configs
│ ├── hypr/ # Hyprland (Linux only)
│ │ ├── hyprland.conf
│ │ ├── bindings.conf
│ │ ├── monitors.conf
│ │ └── ...
│ ├── alacritty/
│ │ └── alacritty.toml
│ ├── kitty/
│ │ └── kitty.conf
│ ├── nvim/ # Neovim (cross-platform)
│ │ ├── init.lua
│ │ └── lua/
│ ├── warp-terminal/ # Warp terminal
│ ├── starship.toml # Starship prompt
│ ├── lazygit/
│ │ └── config.yml
│ ├── git/
│ │ └── ignore
│ └── Code/ # VS Code (already tracked)
│
├── linux/ # Linux-specific
│ └── omarchy/
│ ├── config.sh # Theme preferences
│ └── themes/ # Custom themes
│
├── macos/ # macOS-specific (future)
│
├── vscode/ # VS Code (to be added)
│ ├── settings.json
│ ├── keybindings.json
│ └── extensions.txt
│
├── scripts/
│ ├── setup-linux.sh # Linux setup
│ ├── setup-macos.sh # macOS setup
│ ├── omarchy-setup.sh # Omarchy theme installer
│ └── reset-scarlett.sh # Audio script
│
└── .local/bin/
└── env # PATH setup
Personal configurations - use at your own risk!