1
0
Fork
You've already forked dotfiles
0
No description
  • Shell 69.9%
  • Lua 28.2%
  • Python 1.9%
2026年07月13日 15:15:22 +02:00
brew fix: remove borders — was making WindowServer CPU go through the roof 2026年07月13日 15:15:22 +02:00
cron feat(cron): back up buku bookmarks to kDrive weekly 2026年05月26日 15:44:14 +02:00
flameshot/.config/flameshot fix(flameshot): disable tray icon 2026年05月26日 15:44:48 +02:00
ghostty/.config/ghostty feat: switch from Snazzy theme to TokyoNight Night for consistency 2026年07月01日 17:39:56 +02:00
git chore: update .gitignore_global and lazy_lock.json 2026年06月04日 09:21:09 +02:00
linearmouse/.config/linearmouse feat: add linearmouse config 2026年05月21日 15:16:28 +02:00
macos fix: increase icon size in Dock 2026年05月22日 14:48:09 +02:00
nvim/.config/nvim fix: remove buku.lua 2026年07月01日 17:43:14 +02:00
pomo/.config feat: add pomo to my setup 2026年07月01日 17:41:00 +02:00
raycast/.config/raycast/scripts feat(raycast): add buku scripts 2026年05月26日 15:44:21 +02:00
ripgrep feat: configure ripgrep 2026年05月21日 15:04:21 +02:00
scripts/.local/bin feat: switched to buku for bookmarks so added a fuzzy search using fzf 2026年07月01日 17:42:15 +02:00
sketchybar/.config/sketchybar feat(sketchybar/battery): apply color gradient to icon and label 2026年06月24日 18:30:21 +02:00
skhd/.config/skhd fix(skhd): resolve macOS shortcut conflicts and add workday shortcuts 2026年05月26日 15:40:28 +02:00
starship/.config fix(starship): remove line break and add space before cursor 2026年05月16日 18:48:28 +02:00
taskwarrior feat: add taskwarrior and taskwarrior-tui to my setup 2026年07月01日 17:40:43 +02:00
topgrade/.config feat(topgrade): enable no_self_update + autoremove; skip greedy_cask (kdrive+macfuse require Tahoe, abort run) 2026年05月21日 17:14:03 +02:00
yabai/.config/yabai fix: remove borders — was making WindowServer CPU go through the roof 2026年07月13日 15:15:22 +02:00
zed/.config/zed chore(zed): disable edit predictions and configure PHP settings 2026年06月24日 18:30:50 +02:00
zsh feat: add various aliases to save me some time after looking at my shell 2026年07月01日 17:42:51 +02:00
.gitignore perf(zsh): replace oh-my-zsh with direct plugin sourcing, cache tool inits 2026年06月08日 17:49:55 +02:00
.stowrc refactor: unify stow structure — .config/ path mirroring, .stowrc, single package list, disable macOS system update 2026年05月16日 13:56:14 +02:00
install.sh fix: remove borders — was making WindowServer CPU go through the roof 2026年07月13日 15:15:22 +02:00
LICENSE Initial commit 2025年10月22日 14:36:58 +02:00
README.md docs: add sketchybar to README, install.sh and setup-symlinks.sh 2026年05月22日 11:54:25 +02:00
setup-symlinks.sh fix: remove borders — was making WindowServer CPU go through the roof 2026年07月13日 15:15:22 +02:00

Dotfiles

Personal macOS configuration managed with GNU Stow.

Included Packages

  • zsh - Zsh configuration with oh-my-zsh
  • starship - Starship prompt with Catppuccin Powerline preset
  • nvim - Neovim configuration
  • ghostty - Ghostty terminal configuration
  • zed - Zed editor configuration
  • ripgrep - ripgrep configuration (~/.ripgreprc)
  • linearmouse - LinearMouse configuration
  • brew - Brewfile for application management
  • scripts - Custom shell scripts (~/.local/bin)
  • flameshot - Flameshot configuration
  • topgrade - Topgrade configuration
  • sketchybar - Floating island status bar with yabai integration
  • cron - Automated task scheduling

Quick Installation

On a New Machine

# Clone this repository
git clone https://github.com/mrcalexandre/dotfiles.git ~/Code/dotfiles
cd ~/Code/dotfiles
# Run automatic installation
./install.sh

The install.sh script will:

  1. Install Homebrew if needed
  2. Install GNU Stow
  3. Install oh-my-zsh and its plugins
  4. Backup my existing files
  5. Create symlinks with Stow
  6. Install all applications from Brewfile

On an Existing Machine (Migration)

cd ~/Code/dotfiles
# 1. First commit all my files in the repo
git add .
git commit -m "Add initial dotfiles"
git push
# 2. Create symlinks (automatic backup of my current files)
./setup-symlinks.sh

How Does It Work?

GNU Stow creates symlinks from this repository to my home directory. The .stowrc file sets --target=~ so every package is stowed with a single command regardless of whether it targets ~/ or ~/.config/:

~/Code/dotfiles/zsh/.zshrc → ~/.zshrc
~/Code/dotfiles/starship/.config/starship.toml → ~/.config/starship.toml
~/Code/dotfiles/nvim/.config/nvim/init.lua → ~/.config/nvim/init.lua
~/Code/dotfiles/ghostty/.config/ghostty/config → ~/.config/ghostty/config

Advantage: When I modify ~/.zshrc or ~/.config/nvim/init.lua, I am actually modifying files in the repo — changes are automatically versioned and easy to sync between machines via Git.

Sync on Another Machine

cd ~/Code/dotfiles
git pull
stow zsh starship nvim ghostty zed sketchybar

Adding a New Package

  1. Create the directory structure inside the repo, mirroring the path relative to ~:
# For a file that lives at ~/.config/bat/config
mkdir -p bat/.config/bat
  1. Move the existing config file into it:
mv ~/.config/bat/config bat/.config/bat/config
  1. Stow the package:
stow bat

Stow will refuse if a file already exists at the target path — move or delete the original first (step 2 handles this).

Useful Commands

# Stow a package
stow zsh
stow nvim
stow ghostty
# Stow all packages
stow zsh starship brew scripts nvim flameshot topgrade ghostty zed ripgrep linearmouse sketchybar
# Unstow (remove symlinks)
stow -D zsh
stow -D nvim
# Re-stow (useful after modifications)
stow -R zsh
stow -R nvim
# Simulate without doing anything (dry-run)
stow -n -v zsh
stow -n -v nvim

Zsh Configuration

My Zsh configuration uses:

  • oh-my-zsh - Zsh framework
  • Starship - Cross-shell prompt with Catppuccin Powerline preset
  • zsh-autosuggestions - History-based suggestions
  • zsh-syntax-highlighting - Syntax highlighting
  • you-should-use - Available alias reminders

Plugins

  • git - Git aliases
  • zoxide - Smart navigation (replaces cd)

Installed Applications

See the brew/.Brewfile file for the complete list.

Troubleshooting

Conflicts During Stow

# Error: "File already exists"
# Solution: remove the existing file or make a backup
mv ~/.zshrc ~/.zshrc.backup
stow zsh
# See where a symlink points
ls -la ~/.zshrc
# Expected result:
# ~/.zshrc -> /Users/alexandre/Code/dotfiles/zsh/.zshrc

Restore a Backup

# Backups are in ~/.dotfiles_backup_YYYYMMDD_HHMMSS/
ls -la ~/.dotfiles_backup_*
# Restore
cp ~/.dotfiles_backup_20241022_163000/.zshrc ~/