Skip to content

Repository files navigation

Dotfiles

CI Chezmoi Platform

Personal macOS development environment managed with Chezmoi and Homebrew. Shell, Git, editor, and XDG configuration also work on Linux where supported.

Overview

Area Configuration
Terminal Ghostty opens the persistent tmux session main
Shell Zsh, Oh My Zsh, Starship, fzf, mise, and direnv
Editors Zed, VS Code, Vim, and Neovim
Shortcuts Raycast Caps Lock Hyper translated by Ghostty into tmux commands
Packages Homebrew bundle with personal and work profiles
SSH Portable client config; keys stay local to each machine
macOS Dock, Finder, keyboard, Safari, and general defaults

Install

git clone https://github.com/froppa/dotfiles.git ~/.local/share/chezmoi
cd ~/.local/share/chezmoi
./init.sh --macos

Use WORK=true ./init.sh --macos for the work package profile. An existing ~/.gitconfig is left unchanged and any detected global identity is reused. If the file does not exist, bootstrap prompts for a missing Git name or email before creating the default config. Put machine-specific overrides or signing settings in ~/.gitconfig.local. On new machines, the root config includes repository defaults from the managed ~/.config/git/dotfiles.gitconfig. Omit --macos to apply the dotfiles without changing macOS defaults.

SSH

SSH keys are never managed by this repository. Generate a new key on each machine when needed:

./scripts/ssh-keygen.sh

SSH behavior is config-driven: AddKeysToAgent and macOS Keychain integration load the key on first use. Shell startup does not call ssh-add.

Manual steps

Component Once per machine
Raycast Configure Caps Lock as Hyper (Control+Option+Command, no Shift)
Raycast scripts Add ~/.config/raycast/scripts/ as a Script Command directory
Neovim Open once to finish Lazy, Mason, and tree-sitter setup

Raycast exports are intentionally not managed because they can contain private local data and did not reliably restore settings. To add a Ghostty launcher, open Raycast's Applications extension, add a Command for Ghostty, and assign the hotkey there. tmux plugins install through TPM; Continuum and Resurrect handle session restoration.

Terminal shortcuts

Raycast owns Caps Lock and emits Ctrl+Option+Command. Ghostty converts the following chords to tmux commands. Right Option remains available for Danish symbols.

Shortcut Action
Command+K Clear the active application screen through tmux
Shift+Enter Insert a newline in Claude Code and shell prompts
Caps+C New window
Caps+I Side-by-side pane
Caps+- Stacked pane
Caps+Arrow Move between panes
Caps+0…9 Select window
Caps+Z Toggle pane zoom
Caps+R Reload tmux
Caps+X / Caps+W Kill pane after confirmation

Daily use

chezmoi diff                     # inspect changes
chezmoi apply -v                 # apply source state
chezmoi update -v                # pull and apply
chezmoi edit --apply ~/.zshrc    # edit through Chezmoi
chezmoi re-add ~/.zshrc          # capture a target change
chezmoi cd                       # open the source repository

Machine-specific overrides use unmanaged *.local files such as .zshrc.local, .exports.local, .aliases.local, .functions.local, and .gitconfig.local.

Where things live

Path Purpose
home/dot_config/ghostty/ Ghostty and Hyper mappings
home/dot_config/tmux/ tmux, status scripts, and plugins
home/dot_config/raycast/ Raycast Script Commands
home/dot_config/zed/ Zed settings and keybindings
home/dot_config/Code/User/ VS Code XDG settings
home/dot_config/nvim/ Neovim configuration
home/.chezmoidata/ Packages, profiles, and VS Code extensions
home/.chezmoiscripts/ Ordered and change-triggered setup
home/.chezmoiexternal.toml Pinned shell and TPM sources
macos-scripts/ Auditable macOS defaults
scripts/ Local SSH key generation and preference helpers

macOS defaults

macos-scripts/macos-defaults.sh --audit   # show differences
macos-scripts/macos-defaults.sh           # apply defaults
macos-scripts/macos-defaults.sh --update  # apply and update macOS

Validate

./test.sh

The same ShellCheck, template, profile, and Chezmoi dry-run checks run in CI. Neovim reference: docs/nvim-cheat-sheet.md.

About

Minimal, modular dotfiles for macOS automated with chezmoi and Homebrew.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages