{"id":31574721,"url":"https://github.com/cearley/dotfiles","last_synced_at":"2026-05-14T21:38:20.278Z","repository":{"id":312141629,"uuid":"1046373956","full_name":"cearley/dotfiles","owner":"cearley","description":"My personal dotfiles and configuration for various tools and applications.","archived":false,"fork":false,"pushed_at":"2026-05-08T15:05:34.000Z","size":1140,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-08T16:38:23.829Z","etag":null,"topics":["brewfile","chezmoi","dotfiles-macos","homebrew","powerlevel10k"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cearley.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-08-28T15:37:07.000Z","updated_at":"2026-05-08T15:05:51.000Z","dependencies_parsed_at":"2026-01-14T19:03:27.263Z","dependency_job_id":null,"html_url":"https://github.com/cearley/dotfiles","commit_stats":null,"previous_names":["cearley/dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cearley/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cearley%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cearley%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cearley%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cearley%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cearley","download_url":"https://codeload.github.com/cearley/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cearley%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33044499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brewfile","chezmoi","dotfiles-macos","homebrew","powerlevel10k"],"created_at":"2025-10-05T16:58:08.123Z","updated_at":"2026-05-14T21:38:20.273Z","avatar_url":"https://github.com/cearley.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotfiles\n\n[![CI](https://github.com/cearley/dotfiles/actions/workflows/ci.yml/badge.svg)](https://github.com/cearley/dotfiles/actions)\n[![macOS](https://img.shields.io/badge/macOS-supported-success)](https://www.apple.com/macos/)\n[![chezmoi](https://img.shields.io/badge/managed%20with-chezmoi-blue)](https://www.chezmoi.io/)\n[![Homebrew](https://img.shields.io/badge/package%20manager-Homebrew-orange)](https://brew.sh/)\n[![GitHub last commit](https://img.shields.io/github/last-commit/cearley/dotfiles)](https://github.com/cearley/dotfiles/commits)\n\nAutomated macOS development environment setup - dotfiles, packages, toolchains, and system configuration, managed with [chezmoi](https://chezmoi.io).\n\n## Table of Contents\n\n- [Quick Start](#quick-start)\n- [Key Features](#key-features)\n- [Using This Repository](#using-this-repository)\n- [Before Forking](#before-forking)\n\n## Quick Start\n\nBootstrap a new macOS machine with a single command (replace `YOUR_GITHUB_USERNAME`):\n\n```sh\nsh -c \"$(curl -fsSL https://raw.githubusercontent.com/cearley/dotfiles/main/remote_install.sh)\" -- init --apply YOUR_GITHUB_USERNAME\n```\n\nYou can also pass arguments to chezmoi by appending them:\n\n```sh\nsh -c \"$(curl -fsSL https://raw.githubusercontent.com/cearley/dotfiles/main/remote_install.sh)\" -- init --apply YOUR_GITHUB_USERNAME --keep-going --verbose\n```\n\nThis automatically installs all dependencies (chezmoi, Git, Homebrew, KeePassXC, etc.) and applies your dotfiles.\n\n**Requirements:** \n- A KeePassXC database file is needed for password management\n\n**Optional:**\n- Machine-specific brewfiles for additional package management (will be symlinked to `$HOME/Brewfile` if present)\n\n## Key Features\n\n### Machine Configuration System\n- **Pattern-based detection** - Automatically detects machine type via `config.yaml`\n- **Reusable templates** - Cross-platform `machine-name` and `machine-config` templates\n- **Dot-notation support** - Access nested settings (e.g., `keepassxc_entries.ssh`)\n- **Extensible design** - Add new machine-specific properties without template changes\n\n### Script Execution Framework\nScripts in `home/.chezmoiscripts/` use structured naming: `{frequency}_{timing}_{os}-{order}-{description}.sh.tmpl`\n\n**Execution order** (10-point range grouping for logical categorization):\n- **00-09**: System Foundation (Rosetta 2)\n- **10-19**: Development Toolchains (Rust)\n- **20-29**: Package Management (SDKMAN, Homebrew packages, SDKs, UV tools, Bun packages, Cargo crates, machine-specific Brewfiles)\n- **30-39**: Environment Managers \u0026 AI Tooling (nvm, Claude Code, Claude Code skills)\n- **40-49**: Environment Setup (GitHub auth, shell plugins)\n- **80-99**: System Configuration (security, VPN, sync services, defaults, validation)\n\n### Shared Utilities\n- **Location**: `home/scripts/shared-utils.sh`\n- **Functions**: `print_message()`, `command_exists()`, `require_tools()`, `download_file()`, `wait_for_app_installation()`, `prompt_ready()`, `is_icloud_signed_in()`, etc.\n- **Consistent patterns**: All installation scripts use identical messaging and error handling\n\n### Development Environment\n\n**Unified package management** (all in `packages.yaml`):\n1. **Homebrew packages** - System packages, apps, CLI tools (`taps`, `brews`, `casks`, `mas`)\n2. **UV tools** - Python CLI tools and utilities (`uv` key within tags)\n3. **Bun packages** - JavaScript/TypeScript global tools (`bun` key within tags)\n4. **SDKMAN SDKs** - JVM ecosystem (Java, Gradle, Maven) (`sdkman` key in `dev` tag)\n5. **Cargo crates** - Rust CLI tools (`cargo` key within tags; requires `dev` tag)\n6. **Claude Code skills** - AI assistant skills via `npx skills add` (`skills` key within tags; requires `ai` tag)\n7. **Machine-specific Brewfiles** - Additional packages requiring confirmation\n\n**Environment managers:**\n- **SDKMAN**: Java/JVM toolchain management (requires `dev` tag)\n- **uv**: Python package and tool management\n- **nvm**: Node.js version management\n- **conda**: Python environment management (Miniforge)\n\n## Using This Repository\n\n**Common operations:**\n```sh\n# Edit and apply dotfiles\nchezmoi edit --apply ~/.bashrc\n\n# Preview changes before applying\nchezmoi diff\n\n# Pull latest changes and apply\nchezmoi update\n\n# Add new dotfile\nchezmoi add ~/.config/newfile\n```\n\nSee the [chezmoi documentation](https://www.chezmoi.io/user-guide/daily-operations/) for more details.\n\n## Before Forking\n\nThis is a personal configuration reflecting specific workflows and preferences. Consider it a **reference implementation** rather than something to use directly.\n\n**What you'll need to customize:**\n- **KeePassXC database** - Set up your own with required entries\n- **Machine configurations** - Update `home/.chezmoidata/config.yaml` for your machines\n- **Package selections** - Review `home/.chezmoidata/packages.yaml` and machine-specific Brewfiles\n- **Personal tools** - Remove custom hosts management, etc.\n- **SSH/Git settings** - Update for your accounts and preferences\n\n**Initial setup prompts:**\n- Full name, GitHub username, GitHub emails\n- KeePassXC database path\n- Microsoft email (optional, for subscription app installs)\n- Machine tags (core, dev, ai, work, personal, data-science, mobile) - controls which tools get installed\n\n**Development focus:** Programming, Cloud (AWS, Azure), AI/ML, macOS-specific tools\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcearley%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcearley%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcearley%2Fdotfiles/lists"}