Skip to content

OzzyCzech/dotfiles

Repository files navigation

OzzyCzech's dotfiles

Personal macOS config. Zsh, Antidote, and helpers.

Installation

Note

The repo is cloned over SSH, so a fresh Mac needs a GitHub SSH key first (step 2) — otherwise the clone fails with Permission denied (publickey).

On a fresh Mac, follow these in order:

  1. Install Homebrew, tools & set the shell — see Prerequisites.
  2. Set up GitHub SSH access — see GitHub access (SSH).
  3. Clone and build:
    git clone git@github.com:OzzyCzech/dotfiles.git ~/.dotfiles && cd $_ && make
    (what this does → What make install does)
  4. Apply macOS defaults (optional) — see Setup scripts.

Prerequisites

Install Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Install tools:

brew install git zsh zsh-completions antidote powerlevel10k

Set Zsh as default shell:

chsh -s /bin/zsh

GitHub access (SSH)

The repo is cloned over SSH, so a fresh Mac needs a working SSH key on GitHub before git clone/make. Either restore your backed-up keys or generate a new one.

Option A — restore from backup

If you have ssh.zip from the old Mac (see Backup & restore SSH keys):

mkdir -p ~/.ssh && chmod 700 ~/.ssh
unzip ~/Downloads/ssh.zip -d ~/
chmod 600 ~/.ssh/id_*        # private keys
chmod 644 ~/.ssh/*.pub       # public keys

Option B — generate a new key

ssh-keygen -t ed25519 -C "roman@ozana.cz"
eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
pbcopy < ~/.ssh/id_ed25519.pub   # then add it at https://github.com/settings/keys

Persist the key in the macOS keychain

Add to ~/.ssh/config so the agent loads the key automatically after reboot:

Host github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

Verify

ssh -T git@github.com

Accept the host key when prompted (GitHub's ed25519 fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU). A Hi <user>! You've successfully authenticated message means you're ready to clone.

File permissions

SSH refuses keys that are too open. Correct modes:

Path Mode
~/.ssh 700
private keys (id_*) 600
public keys (*.pub) 644
~/.ssh/config 600
~/.ssh/known_hosts 644

Repository structure

Directory Description
zsh/ Zsh config — aliases, paths, prompt, history, AI helpers, Docker, eza, etc.
bin/ Compiled utilities (del, encode64, passgen, mac-cleanup, mac-upgrade)
utils/ Swift source for utilities in bin/
setup/ macOS defaults scripts (Finder, Dock, keyboard, …) — see setup/readme.md
apps/ Homebrew and Mac App Store app lists (brew-list.txt, mas-list.txt, …)
config/ App configs (Zed, Ghostty, cmux, yt-dlp) — symlinked into ~/.config/
claude/ Claude Code config (CLAUDE.md, settings.json, commands, skills) — symlinked into ~/.claude/
icns/ Custom volume icons

What make install does

  1. Creates ~/.hushlogin
  2. Symlinks git config (.gitignore_global, .gitconfig) and sets core.excludesfile
  3. Symlinks zsh dotfiles (.zshrc, .zsh_plugins.txt, .p10k.zsh, .zprofile) and directories (zsh/~/.zsh, bin/~/.bin)
  4. Symlinks claude/ entries into ~/.claude/ (CLAUDE.md, settings.json, commands/, skills/)
  5. Symlinks config/ entries into ~/.config/ (Zed, Ghostty, cmux, yt-dlp)

Make targets

Target Description
make / install Symlink all dotfiles (git, zsh, ~/.claude, ~/.config)
make utils Compile Swift utilities into bin/
make completions Regenerate zsh/_pnpm completion
make apps-backup Export installed Homebrew/MAS apps to lists in apps/

Utilities

Compile Swift utilities into bin/:

make utils
Utility Description
del Move files to Trash (safe delete)
encode64 Base64 encode/decode
passgen Generate passwords and passphrases
mac-cleanup Shell script — clean caches/logs/Trash
mac-upgrade Shell script — upgrade brew, mas, npm

Zsh plugins

Managed by Antidote via .zsh_plugins.txt:

Prompt

The prompt is Powerlevel10k configured to look like the classic robbyrussell oh-my-zsh theme — same ➜ dir git:(branch) ✗ style, just rendered with async git status and instant-prompt support for snappier startup.

The config in .p10k.zsh is a copy of the p10k-robbyrussell.zsh template shipped with Powerlevel10k. Tweak it directly or run p10k configure to generate a different style.

Setup scripts

Scripts in setup/ configure macOS defaults. Run individually:

zsh setup/apps/finder.zsh
zsh setup/apps/dock.zsh
zsh setup/system/keyboard.zsh

Load helper functions:

source ./setup/defaults.zsh

Then use:

set-lock-message "Roman Ozana • roman@ozana.cz • +420 605 783 455"
set-screen-capture   # screenshots to ~/Downloads
set-screen-saver     # screen saver after 5 min, require password immediately
set-software-updates # enable automatic updates

Backup & restore SSH keys

Back up your keys before wiping the old Mac:

zip -r ~/Downloads/ssh.zip ~/.ssh

Restore on the new Mac → GitHub access (SSH), Option A.

Get inspired

https://dotfiles.github.io/inspiration/

About

This is a collection of my personal dotfiles for configuring macOS.

Topics

Resources

Stars

135 stars

Watchers

7 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors