Cross-platform dotfiles for macOS and Linux with modern CLI tools and development environment.
My recommended extensions for ai engineering can be installed via the vs-code extensions pack: AI Engineering Extensions Pack.
git clone https://github.com/mfmezger/dotfiles.git ~/dotfiles
cd ~/dotfiles./install_mac.sh./install_linux.sh./install_ubuntu_server.shCreate a ~/.gitconfig.local file to set your user details without modifying the tracked config:
cat <<EOF > ~/.gitconfig.local
[user]
name = Your Name
email = your.email@example.com
EOF- Shell: Zsh + Oh My Zsh + Powerlevel10k
- Terminal: Ghostty, Kitty (backup)
- Editor: Neovim, Zed
- File Navigation: eza, yazi, zoxide, fd
- Text & Viewers: bat, glow, chroma, jq
- System Monitoring: btop, htop, dust, duf, fastfetch
- Git: git-delta, gh, onefetch, commitizen
- History & Docs: atuin, tealdeer
- DevOps: k9s, kubectl, helm
- Launcher: Rofi (Linux), Raycast (macOS)
- Utilities: tokei, witr
AI Coding Agents: See ai_agent_dotfiles for Claude Code and OpenCode configurations.
~/dotfiles/
βββ zsh/ # Zsh configuration (.zshrc, .p10k.zsh)
βββ nvim/ # Neovim configuration
βββ kitty/ # Kitty terminal config
βββ ghostty/ # Ghostty terminal config
βββ git/ # Git configuration (.gitconfig)
βββ yazi/ # Yazi file manager
βββ zed/ # Zed editor config
βββ hypr/ # Hyprland configuration (CachyOS/Linux)
βββ waybar/ # Waybar top bar (Hyprland/Linux)
βββ screenlayout/ # Screen layout scripts (Linux)
βββ scripts/ # Utility scripts
βββ Brewfile # macOS packages (work)
βββ Brewfile.personal # macOS packages (personal)
βββ install_mac.sh # macOS installer
βββ install_linux.sh # Arch Linux installer
βββ install_ubuntu_server.sh # Ubuntu terminal setupNote: AI coding agent configurations (Claude Code, OpenCode) are managed in a separate repository: ai_agent_dotfiles. This keeps AI tool configs separate from general development dotfiles.
Shell abbreviations defined in .zshrc (type and press space to expand):
| Shortcut | Expands To |
|---|---|
e |
exit |
v |
$EDITOR (nvim) |
c |
clear |
g |
git |
d |
docker |
k |
kubectl |
pbcopy |
Copy to clipboard (Linux) |
pbpaste |
Paste from clipboard (Linux) |
| Shortcut | Expands To |
|---|---|
av |
. .venv/bin/activate |
us |
uv sync |
pt |
Run pytest with coverage report |
| Shortcut | Expands To |
|---|---|
ga |
git add -A |
gs |
git status |
gd |
git diff |
gg |
git add . && git commit -m |
gl |
git log --oneline -10 |
gp |
git push |
gpl |
git pull |
gc |
git checkout |
gcb |
git checkout -b |
pcr |
pre-commit run --all-files |
pcu |
pre-commit autoupdate |
init |
pre-commit install && cz init |
| Shortcut | Expands To |
|---|---|
k |
kubectl |
kgp |
kubectl get pods |
tt |
tilt down; tilt up |
| Shortcut | Expands To |
|---|---|
dcb |
docker compose build |
dcu |
docker compose up |
dcub |
docker compose up --build |
dd |
docker compose up --build -d |
dl |
docker compose logs -f -t |
dc |
docker compose |
| Shortcut | Description |
|---|---|
uu |
Update all packages (Homebrew on macOS, pacman/yay on Arch) |
| Shortcut | Expands To |
|---|---|
ls |
eza -1 -a --icons --group-directories-first |
l |
eza -lah --icons --group-directories-first |
ll |
eza -lah --icons --group-directories-first |
lt |
eza --tree --level 2 |
lg |
eza -lah --git --icons --group-directories-first |
cat |
bat (syntax-highlighted cat) |
This repo uses GNU Stow to symlink configs to your home directory.
| Package | Creates Symlinks |
|---|---|
zsh |
~/.zshrc, ~/.p10k.zsh |
git |
~/.gitconfig |
nvim |
~/.config/nvim |
ghostty |
~/.config/ghostty |
kitty |
~/.config/kitty |
yazi |
~/.config/yazi |
zed |
~/.config/zed |
hypr |
~/.config/hypr |
dunst |
~/.config/dunst |
waybar |
~/.config/waybar |
screenlayout |
~/.screenlayout |
AI Agents: Claude Code and OpenCode configs are managed in the separate ai_agent_dotfiles repository.
cd ~/dotfiles
# macOS
stow zsh git nvim ghostty yazi zed
# Arch Linux / CachyOS
stow zsh git nvim kitty yazi ghostty zed dunst hypr waybar
# Ubuntu (minimal)
stow zsh git nvimAfter installing main dotfiles, set up AI agent configs from the separate repository:
git clone https://github.com/mfmezger/ai_agent_dotfiles.git ~/ai_agent_dotfiles cd ~/ai_agent_dotfiles ./install.sh
stow -n zsh # Shows what would happen without making changesstow -D zsh # Unstow a packagestow -R zsh # Useful after adding new files to a packageIf stow reports conflicts, you likely have existing files that aren't symlinks:
# Backup and remove conflicting files
mv ~/.zshrc ~/.zshrc.backup
mv ~/.gitconfig ~/.gitconfig.backup
# Then stow again
stow zsh git