Skip to content

mfmezger/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

226 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”§ Dotfiles πŸš€

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.

Quick Install

git clone https://github.com/mfmezger/dotfiles.git ~/dotfiles
cd ~/dotfiles

macOS

./install_mac.sh

Arch Linux / CachyOS

./install_linux.sh

Ubuntu (Minimal Setup)

./install_ubuntu_server.sh

Change Git Name and Email

Create 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

Key Tools

  • 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.

Structure

~/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 setup

Note: 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.

Shortcuts

Shell abbreviations defined in .zshrc (type and press space to expand):

Basic

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)

Python / UV

Shortcut Expands To
av . .venv/bin/activate
us uv sync
pt Run pytest with coverage report

Git

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

Kubernetes

Shortcut Expands To
k kubectl
kgp kubectl get pods
tt tilt down; tilt up

Docker

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

System Update

Shortcut Description
uu Update all packages (Homebrew on macOS, pacman/yay on Arch)

File Listing (eza)

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)

Stow Usage

This repo uses GNU Stow to symlink configs to your home directory.

Stow Packages

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.

Apply Configs

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 nvim

After 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

Dry Run (Preview Changes)

stow -n zsh  # Shows what would happen without making changes

Remove Symlinks

stow -D zsh  # Unstow a package

Restow (Refresh Symlinks)

stow -R zsh  # Useful after adding new files to a package

Troubleshooting Conflicts

If 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

About

Dotfiles for Macbooks/Linux for AI Engineering with Gnu Stow.

Topics

Resources

Stars

Watchers

Forks

Contributors