{"id":16004532,"url":"https://github.com/sotayamashita/dotfiles","last_synced_at":"2025-03-17T20:30:51.226Z","repository":{"id":34858162,"uuid":"38855594","full_name":"sotayamashita/dotfiles","owner":"sotayamashita","description":"dotfiles","archived":false,"fork":false,"pushed_at":"2025-03-13T08:12:12.000Z","size":1331,"stargazers_count":4,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-16T14:11:32.159Z","etag":null,"topics":["automate","bash","dotfiles","emoji","fish","fish-shell","git","macos"],"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/sotayamashita.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2015-07-10T02:07:50.000Z","updated_at":"2025-03-13T08:12:16.000Z","dependencies_parsed_at":"2023-11-16T16:44:40.437Z","dependency_job_id":"c0dc890f-9b51-4bba-b6b9-fe7981e5975d","html_url":"https://github.com/sotayamashita/dotfiles","commit_stats":{"total_commits":291,"total_committers":7,"mean_commits":41.57142857142857,"dds":0.4467353951890034,"last_synced_commit":"cf64c67ff044fa55b6be768dde8b5cc7c9205093"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sotayamashita%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sotayamashita%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sotayamashita%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sotayamashita%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sotayamashita","download_url":"https://codeload.github.com/sotayamashita/dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244105523,"owners_count":20398873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["automate","bash","dotfiles","emoji","fish","fish-shell","git","macos"],"created_at":"2024-10-08T11:00:48.652Z","updated_at":"2025-03-17T20:30:51.219Z","avatar_url":"https://github.com/sotayamashita.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotfiles\n\nA streamlined configuration management system for macOS development environments.\n\n## Quick Start\n\nRun this single command to begin the automated setup:\n\n```bash\nbash -c \"$(curl -fsSL https://raw.githubusercontent.com/sotayamashita/dotfiles/main/bootstrap.sh)\"\n```\n\n## How It Works\n\nThis repository uses a multi-stage setup process to handle SSH dependency constraints on fresh macOS installations:\n\n```mermaid\nflowchart TD\n    Start([Start Execution]) --\u003e CheckState{Check State}\n    \n    CheckState --\u003e|initial| Stage1[Stage 1: Initial Setup]\n    CheckState --\u003e|homebrew_installed| Stage2[Stage 2: SSH Configuration]\n    CheckState --\u003e|ssh_configured| Stage3[Stage 3: Complete Setup]\n    CheckState --\u003e|completed| AlreadyDone[Setup Already Completed]\n    CheckState --\u003e|unknown| ResetState[Reset State]\n    \n    ResetState --\u003e CheckState\n    \n    Stage1 --\u003e InstallPrereq[Install Prerequisites\\nXcode CLT, Homebrew]\n    InstallPrereq --\u003e SetupCore1[Setup Core Functionality\\nSymlinks, Brewfile]\n    SetupCore1 --\u003e SetupMacOS1[Configure macOS\\nDock, System Preferences]\n    SetupMacOS1 --\u003e SaveState1[Save State: homebrew_installed]\n    SaveState1 --\u003e Exit1[Temporary Exit\\nContinue on Next Run]\n    \n    Stage2 --\u003e SetupSSH[Configure SSH\\n1Password SSH Agent]\n    SetupSSH --\u003e SaveState2[Save State: ssh_configured]\n    SaveState2 --\u003e Exit2[Temporary Exit\\nContinue on Next Run]\n    \n    Stage3 --\u003e CloneRepo[Clone Repository\\nvia SSH]\n    CloneRepo --\u003e SetupCore2[Setup Core Functionality\\nSymlinks, Brewfile]\n    SetupCore2 --\u003e RunInstallers[Run Installers\\nRust, Volta, uv, etc.]\n    RunInstallers --\u003e SetupMacOS2[Configure macOS\\nDock, System Preferences]\n    SetupMacOS2 --\u003e CleanupTemp[Clean Up Temporary Files]\n    CleanupTemp --\u003e SaveState3[Save State: completed]\n    SaveState3 --\u003e Completed[Setup Complete]\n    \n    AlreadyDone --\u003e Completed\n    \n    classDef stage fill:#f9f,stroke:#333,stroke-width:2px;\n    classDef state fill:#bbf,stroke:#33f,stroke-width:2px;\n    classDef action fill:#dfd,stroke:#080,stroke-width:1px;\n    \n    class Stage1,Stage2,Stage3 stage;\n    class CheckState,SaveState1,SaveState2,SaveState3 state;\n    class InstallPrereq,SetupCore1,SetupCore2,SetupMacOS1,SetupMacOS2,SetupSSH,CloneRepo,RunInstallers,CleanupTemp action;\n```\n\n### Setup Process Stages\n\n1. **Initial Setup**\n   - Downloads and applies basic configuration\n   - Installs essential tools (Xcode Command Line Tools, Homebrew)\n   - No SSH required at this stage\n\n2. **SSH Configuration**\n   - Sets up 1Password SSH Agent for GitHub authentication\n   - Prepares secure access for repository cloning\n\n3. **Complete Setup**\n   - Clones the repository via SSH for proper version control\n   - Installs all tools and applies full configuration\n   - Configures macOS preferences\n\n## Manual Setup Alternative\n\nIf you prefer more control, you can run the setup process manually:\n\n### Stage 1: Initial Setup (No SSH Required)\n\n```bash\ncd\ncurl -#L https://github.com/sotayamashita/dotfiles/tarball/main | tar -xzv --strip-components 1 --exclude={README.md}\n~/scripts/modules/core/symlinks.sh\n~/scripts/modules/core/brew.sh\nrm -rf ~/scripts\n```\n\nThis will:\n- Download the repository as a tarball to your home directory\n- Install essential tools\n- Apply basic configuration\n- Clean up temporary files\n\n### Stage 2: Complete Setup (SSH Required)\n\nAfter completing the initial setup:\n\n1. **Configure 1Password SSH Agent**:\n   - Install 1Password from Homebrew\n   - Enable SSH Agent in 1Password:\n     1. `open -a \"1Password\"`\n     2. Press \u003ckbd\u003e⌘ + ,\u003c/kbd\u003e to open Preferences\n     3. Navigate to Developer \u003e Use the SSH Agent and enable it\n\n   [Learn more about 1Password SSH Agent](https://developer.1password.com/docs/ssh/agent/)\n\n2. **Clone repository to permanent location**:\n   ```bash\n   git clone git@github.com:sotayamashita/dotfiles.git ~/Projects/dotfiles\n   cd ~/Projects/dotfiles\n   ```\n\n3. **Run setup scripts**:\n   ```bash\n   ./scripts/modules/core/symlinks.sh\n   ./scripts/modules/core/brew.sh\n   ./scripts/modules/macos/preferences.sh\n   ```\n\n   [Learn more about signing Git commits with SSH](https://developer.1password.com/docs/ssh/git-commit-signing/)\n\n## Repository Structure\n\n```\ndotfiles/\n├── .config/          # Configuration files\n├── installers/       # Individual tool installers\n├── bootstrap.sh      # Automated setup script\n└── scripts/          # Setup scripts\n    ├── lib/          # Common library functions\n    │   ├── utils.sh              # Utility functions\n    │   └── state.sh              # State management\n    ├── modules/      # Modular scripts by functionality\n    │   ├── core/                 # Core functionality\n    │   │   ├── symlinks.sh       # Symlink creation\n    │   │   └── brew.sh           # Homebrew package management\n    │   └── macos/                # macOS specific settings\n    │       ├── dock.sh           # Dock configuration\n    │       └── preferences.sh    # System preferences\n    └── installers/   # External tool installers\n```\n\n## Platform Support\n\nThis dotfiles repository is optimized for:\n\n- **macOS**: Full support with macOS-specific configurations\n\nThe bootstrap process automatically applies the appropriate configurations for your system.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsotayamashita%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsotayamashita%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsotayamashita%2Fdotfiles/lists"}