My personal dotfiles managed with Chezmoi, featuring Fish shell, Starship prompt, and productivity tools.
- Fish Shell - Modern shell with better defaults, auto-suggestions, and syntax highlighting
- Starship Prompt - Fast, customizable prompt with Git and Kubernetes context
- Ghostty - GPU-accelerated terminal with Catppuccin Mocha theme
- Chezmoi - Secure, cross-platform dotfiles management with templating
- 1Password CLI Integration - Complete secret management for environment variables, Git config, and SSH keys
- Kubernetes Tools - kubectl, k9s, helm, talos, and more with context switching
- Modern CLI Tools - bat, eza, fd, ripgrep, fzf, zoxide
- Development Tools - Neovim with LSP support, atuin, git tooling
- Security First - 1Password SSH agent integration, automatic key management, secure credential storage
Before applying these dotfiles, you need to set up 1Password CLI integration, as all secrets and personal information are managed through 1Password.
-
1Password Account: You need an active 1Password subscription:
- Individual ($3/month) or Family ($5/month) plan minimum
- Sign up at 1password.com if you don't have an account
-
Install 1Password Desktop App:
brew install --cask 1password
-
Sign in to 1Password Desktop App:
- Open 1Password app
- Sign in with your account credentials
- Enable Touch ID/Face ID for convenience
- Important: Keep the desktop app running (it manages CLI authentication)
-
Install 1Password CLI:
brew install 1password-cli
-
Enable 1Password CLI integration:
- Open 1Password app → Settings → Developer
- Enable "Connect with 1Password CLI"
-
Verify CLI integration:
op whoami
-
Create required vault items in your 1Password:
Item: "Git Config" (in Private vault)
- Field:
name→ Your full name - Field:
email→ Your Git email address
Item: "Atuin Config" (in Private vault)
- Field:
sync_address→ Your Atuin server URL
SSH Signing Key (in Infrastructure vault)
- Your SSH key should exist as "Github" with category "SSH Key"
- Must have a
public keyfield for Git commit signing
- Field:
-
Verify 1Password integration works:
op read "op://Private/Git Config/name" op read "op://Private/Atuin Config/sync_address" op read "op://Infrastructure/Github/public key"
- Enable 1Password SSH Agent:
- Open 1Password app → Settings → SSH Agent
- Enable "Use the SSH agent"
- Enable "Display key names when authorizing connections"
# One-liner installation
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply GizmoTickler/dotfiles# Install Chezmoi
brew install chezmoi
# Initialize with this repository
chezmoi init https://github.com/GizmoTickler/dotfiles.git
# Preview changes
chezmoi diff
# Apply dotfiles
chezmoi apply
# Install tools with Homebrew
brew bundle --file ~/.config/brew/BrewfileThe install.sh script automates full setup on a new machine:
./install.shThis installs Homebrew, 1Password CLI, Chezmoi, Claude Code CLI, Bun, and applies all dotfiles.
echo $(brew --prefix)/bin/fish | sudo tee -a /etc/shells
chsh -s $(brew --prefix)/bin/fish
exec fishdotfiles/
├── home/ # Chezmoi source directory
│ ├── .chezmoi.yaml.tmpl # Chezmoi configuration
│ ├── dot_config/
│ │ ├── fish/
│ │ │ ├── config.fish # Main Fish config
│ │ │ ├── conf.d/ # Modular configurations
│ │ │ └── functions/ # Custom Fish functions
│ │ ├── ghostty/
│ │ │ └── config # Ghostty terminal config
│ │ ├── atuin/
│ │ │ └── config.toml.tmpl # Atuin history sync config
│ │ ├── nvim/ # Neovim configuration
│ │ ├── starship.toml # Prompt configuration
│ │ └── brew/
│ │ └── Brewfile # Homebrew packages
│ ├── dot_claude/ # Claude Code CLI config
│ ├── dot_gitconfig.tmpl # Git configuration
│ ├── dot_gitignore_global # Global Git ignore
│ └── private_dot_ssh/ # SSH configuration
├── install.sh # Bootstrap script
└── README.md # This file
Edit the Chezmoi data in ~/.config/chezmoi/chezmoi.yaml:
data:
name: "Your Name"
email: "your.email@example.com"
git:
signingkey: "your-ssh-key"chezmoi add ~/.newconfig
chezmoi edit ~/.newconfig
chezmoi apply- Ghostty - GPU-accelerated terminal (Catppuccin Mocha theme, MesloLGS Nerd Font)
- Fish Shell - Modern shell with better defaults
- Starship - Cross-shell prompt with Git/Kubernetes info
bat→ Bettercatwith syntax highlightingeza→ Betterlswith icons and Git statusfd→ Betterfindwith intuitive syntaxripgrep→ Bettergrepwith speed and featuresfzf→ Fuzzy finder for files and historyzoxide→ Bettercdwith intelligent ranking
- Neovim - Modern Vim with LSP support (lazydev, ts_ls, pyright, gopls, rust_analyzer)
- Atuin - Encrypted shell history sync across machines (self-hosted)
- Claude Code - AI coding assistant (native install, not Homebrew)
- Bun - Fast JavaScript runtime (native install)
- Git - Complete setup with LFS and SSH signing support
- Languages - Node.js, Python, Go, Rust (via Homebrew); uv for Python packaging
- kubectl with completions
- k9s - Kubernetes TUI dashboard
- Helm, kustomize, helmfile
- Talosctl, talhelper
- kubecolor, stern, kubeconform
- 1Password CLI integration
- Custom Fish abbreviations (shortcuts)
- Useful functions (mkcd, extract, gcommit)
- Git aliases and helpers
g→gitgc→git commit -mk→kubectlll→eza -l --icons --gitcm→chezmoicat→batv→nvimgci→gcloudgpl→gcloud_project_listopstatus→op_status
mkcd <dir>- Create directory and cd into itextract <file>- Extract any archive formatgcommit "message"- Quick commit with optional push
kgp→kubectl get podskgs→kubectl get svckgn→kubectl get nodes
<Space>- Leader key<Space>ff- Find files with Telescope<Space>fg- Live grep search<Space>e- Toggle file explorergd- Go to definitionK- Show hover information<Space>ca- Code actions<Space>rn- Rename symbol<Space>f- Format buffer
chezmoi status
chezmoi diff
chezmoi apply
chezmoi updateEnvironment Variables & API Keys - loaded from 1Password vault items
Git Configuration - name, email, and SSH signing key from 1Password
SSH Key Management - 1Password SSH agent handles all connections automatically
Kubernetes & Talos Configs - stored in 1Password, retrieved during cluster bootstrap
op_status- Check signin statusop_get <item> [field]- Get item field valueop_copy <item> [field]- Copy to clipboardop_search <query>- Search itemsop_create- Create new item interactivelyop_init_dev- Setup common dev secretsop_load_secrets- Load common env vars into Fish session
"Connect with 1Password CLI" not working:
- Ensure 1Password desktop app is running
- Check Settings → Developer → "Connect with 1Password CLI" is enabled
- Restart terminal
"isn't an item" errors:
- Verify vault names:
op vault list - Check item exists:
op item list --vault Private | grep "Git Config" - Create missing items as described in Prerequisites
exec fish
fish_config doctorchezmoi init --force
chezmoi data
chezmoi status -vbrew bundle --file ~/.config/brew/Brewfile
brew update && brew upgrade