Skip to content

GizmoTickler/dotfiles

Repository files navigation

GizmoTickler's Dotfiles

My personal dotfiles managed with Chezmoi, featuring Fish shell, Starship prompt, and productivity tools.

Features

  • 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

Prerequisites

Before applying these dotfiles, you need to set up 1Password CLI integration, as all secrets and personal information are managed through 1Password.

Required: 1Password Account & Desktop App

  1. 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
  2. Install 1Password Desktop App:

    brew install --cask 1password
  3. 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)

Required: 1Password CLI Setup

  1. Install 1Password CLI:

    brew install 1password-cli
  2. Enable 1Password CLI integration:

    • Open 1Password app → Settings → Developer
    • Enable "Connect with 1Password CLI"
  3. Verify CLI integration:

    op whoami

Required: Create Vault Items

  1. 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 key field for Git commit signing
  2. 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"

Optional: SSH Agent Setup

  1. Enable 1Password SSH Agent:
    • Open 1Password app → Settings → SSH Agent
    • Enable "Use the SSH agent"
    • Enable "Display key names when authorizing connections"

Quick Start

New Machine Setup

# One-liner installation
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply GizmoTickler/dotfiles

Manual Installation

# 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/Brewfile

Bootstrap Script

The install.sh script automates full setup on a new machine:

./install.sh

This installs Homebrew, 1Password CLI, Chezmoi, Claude Code CLI, Bun, and applies all dotfiles.

Set Fish as Default Shell

echo $(brew --prefix)/bin/fish | sudo tee -a /etc/shells
chsh -s $(brew --prefix)/bin/fish
exec fish

Repository Structure

dotfiles/
├── 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

Customization

Personal Configuration

Edit the Chezmoi data in ~/.config/chezmoi/chezmoi.yaml:

data:
  name: "Your Name"
  email: "your.email@example.com"
  git:
    signingkey: "your-ssh-key"

Adding New Configurations

chezmoi add ~/.newconfig
chezmoi edit ~/.newconfig
chezmoi apply

Included Tools

Terminal & Shell

  • 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

Modern CLI Replacements

  • bat → Better cat with syntax highlighting
  • eza → Better ls with icons and Git status
  • fd → Better find with intuitive syntax
  • ripgrep → Better grep with speed and features
  • fzf → Fuzzy finder for files and history
  • zoxide → Better cd with intelligent ranking

Development Tools

  • 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

Kubernetes Ecosystem

  • kubectl with completions
  • k9s - Kubernetes TUI dashboard
  • Helm, kustomize, helmfile
  • Talosctl, talhelper
  • kubecolor, stern, kubeconform

Productivity

  • 1Password CLI integration
  • Custom Fish abbreviations (shortcuts)
  • Useful functions (mkcd, extract, gcommit)
  • Git aliases and helpers

Daily Usage

Common Abbreviations

  • ggit
  • gcgit commit -m
  • kkubectl
  • lleza -l --icons --git
  • cmchezmoi
  • catbat
  • vnvim
  • gcigcloud
  • gplgcloud_project_list
  • opstatusop_status

Useful Functions

  • mkcd <dir> - Create directory and cd into it
  • extract <file> - Extract any archive format
  • gcommit "message" - Quick commit with optional push

Kubernetes Shortcuts

  • kgpkubectl get pods
  • kgskubectl get svc
  • kgnkubectl get nodes

Neovim Key Bindings

  • <Space> - Leader key
  • <Space>ff - Find files with Telescope
  • <Space>fg - Live grep search
  • <Space>e - Toggle file explorer
  • gd - Go to definition
  • K - Show hover information
  • <Space>ca - Code actions
  • <Space>rn - Rename symbol
  • <Space>f - Format buffer

Syncing Changes

chezmoi status
chezmoi diff
chezmoi apply
chezmoi update

1Password Integration

Complete Secret Management

Environment 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

Available 1Password Functions

  • op_status - Check signin status
  • op_get <item> [field] - Get item field value
  • op_copy <item> [field] - Copy to clipboard
  • op_search <query> - Search items
  • op_create - Create new item interactively
  • op_init_dev - Setup common dev secrets
  • op_load_secrets - Load common env vars into Fish session

Troubleshooting

1Password Integration Issues

"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

Fish Shell Issues

exec fish
fish_config doctor

Chezmoi Issues

chezmoi init --force
chezmoi data
chezmoi status -v

Tool Installation

brew bundle --file ~/.config/brew/Brewfile
brew update && brew upgrade

Resources

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors