{"id":51070894,"url":"https://github.com/shin-sforzando/dotfiles","last_synced_at":"2026-06-23T10:33:07.840Z","repository":{"id":332891391,"uuid":"1126734631","full_name":"shin-sforzando/dotfiles","owner":"shin-sforzando","description":"My dotfiles managed by chezmoi","archived":false,"fork":false,"pushed_at":"2026-06-01T17:19:05.000Z","size":975,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T15:32:43.161Z","etag":null,"topics":["chezmoi","dotfiles","sheldon"],"latest_commit_sha":null,"homepage":"","language":"Go Template","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shin-sforzando.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-02T13:35:55.000Z","updated_at":"2026-06-01T17:19:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/shin-sforzando/dotfiles","commit_stats":null,"previous_names":["shin-sforzando/dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shin-sforzando/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shin-sforzando%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shin-sforzando%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shin-sforzando%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shin-sforzando%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shin-sforzando","download_url":"https://codeload.github.com/shin-sforzando/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shin-sforzando%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34686725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"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":["chezmoi","dotfiles","sheldon"],"created_at":"2026-06-23T10:33:07.005Z","updated_at":"2026-06-23T10:33:07.833Z","avatar_url":"https://github.com/shin-sforzando.png","language":"Go Template","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotfiles\n\n\u003c!-- Badges --\u003e\n\n[![Last Commit](https://img.shields.io/github/last-commit/shin-sforzando/dotfiles)](https://github.com/shin-sforzando/dotfiles/graphs/commit-activity)\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)\n[![managed with chezmoi](https://img.shields.io/badge/managed%20with-chezmoi-blue)](https://www.chezmoi.io/)\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgrey)](https://github.com/shin-sforzando/dotfiles)\n\n\u003c!-- Synopsis --\u003e\n\nMy dotfiles managed by [chezmoi](https://www.chezmoi.io/) + [Sheldon](https://sheldon.cli.rs/).\n\n\u003c!-- TOC --\u003e\n\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Quick Start](#quick-start)\n  - [New Machine Setup](#new-machine-setup)\n    - [Install Homebrew](#install-homebrew)\n    - [Init with chezmoi](#init-with-chezmoi)\n  - [Manual Steps](#manual-steps)\n- [Daily Usage](#daily-usage)\n  - [Update dotfiles](#update-dotfiles)\n  - [Update Sheldon plugins](#update-sheldon-plugins)\n  - [Add custom aliases](#add-custom-aliases)\n  - [Edit Brewfile](#edit-brewfile)\n- [Key Components](#key-components)\n  - [Managed Configurations](#managed-configurations)\n  - [Sheldon Plugins](#sheldon-plugins)\n  - [Starship Prompt](#starship-prompt)\n  - [Neovim](#neovim)\n- [Troubleshooting](#troubleshooting)\n- [References](#references)\n- [Misc](#misc)\n\n## Features\n\n- **Cross-platform**: macOS (Apple Silicon) and MX Linux\n- **Fast**: Sheldon-based plugin management\n- **Modern**: Starship prompt, lazy.nvim, and latest CLI tools\n- **Automated**: One-command setup via Homebrew / Linuxbrew\n\n## Prerequisites\n\nBefore starting, ensure you have:\n\n- **Operating System**: macOS (Apple Silicon) or MX Linux\n- **Shell**: Zsh (macOS default; install on Linux if needed)\n- **Tools**: Git, curl\n- **Network**: Internet connection for package installation\n- **Permissions**: Sudo access for shell and package manager setup\n\n## Quick Start\n\n### New Machine Setup\n\n\u003e [!NOTE]\n\u003e Please perform the following steps in Zsh.\n\u003e macOS now defaults to Zsh, but Linux does not necessarily default to Zsh.\n\n#### Install Homebrew\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n```\n\n#### Init with chezmoi\n\n```bash\nsh -c \"$(curl -fsLS get.chezmoi.io)\" -- init --apply shin-sforzando\n```\n\nThis will:\n\n1. Install chezmoi\n2. Clone this repository to `~/.local/share/chezmoi/`\n3. Install Homebrew (macOS) or Linuxbrew (Linux)\n4. Install all packages from Brewfile (macOS-only packages are skipped on Linux via `OS.mac?`)\n5. Set up Rust, Node.js, and other tools\n6. Apply all dotfiles to your home directory\n\n### Manual Steps\n\nAfter automated setup, complete these manual steps:\n\n```bash\n# 1. Set default shell\n# macOS:\nsudo chsh -s $(brew --prefix)/bin/zsh\n# Linux:\nchsh -s $(which zsh)\n\n# 2. Set up GPG key\ngpg --keyserver hkps://keys.openpgp.org --search-keys shin@sforzando.co.jp\ngpg --edit-key KEYID\n\u003e trust\n\n# 3. Log in to Atuin for shell history sync\natuin login --key \"$(op read \"op://Personal/Atuin Key/key\")\"\natuin sync\n\n# 4. Set up Tailscale SSH\n# macOS: if a GUI Tailscale.app was installed, uninstall it first (and remove\n#        its System Extension) so OSS tailscaled (from Brewfile) owns the TUN.\n#        The macOS services script auto-runs `brew services start tailscale`.\n# Advertise Tailscale SSH (browser auth; re-mention existing non-default flags):\nsudo tailscale up --ssh\n# Tip: set the SSH rule (autogroup:member -\u003e autogroup:self) to action:accept\n#      in the admin console to skip the periodic check-mode re-auth.\n# Pitfalls: see TROUBLESHOOTING.md \"Tailscale / SSH\".\n```\n\n\u003e [!NOTE]\n\u003e The encryption key is stored in 1Password (\"Atuin Key\" item) and retrieved via the `op` CLI.\n\u003e On the first machine, save your key to 1Password with: `atuin key | op item create --category Password --title \"Atuin Key\" --field \"key[concealed]=$(cat)\"`\n\n## Daily Usage\n\n### Update dotfiles\n\n\u003e [!NOTE]\n\u003e Auto-commit and auto-push are enabled via chezmoi's `git.autoCommit` and `git.autoPush` settings.\n\u003e Changes made via `chezmoi add`, `chezmoi edit`, or `chezmoi apply` are automatically committed and pushed to the remote repository.\n\u003e This ensures your dotfiles are always backed up and synchronized across machines.\n\n```bash\n# Edit a file\nchezmoi edit ~/.zshrc\n\n# Preview changes\nchezmoi diff\n\n# Apply changes\nchezmoi apply\n```\n\n### Update Sheldon plugins\n\n\u003e [!NOTE]\n\u003e Sheldon plugins are automatically updated when `plugins.toml` changes via `run_onchange` script.\n\n### Add custom aliases\n\nCustom aliases are organized in separate files for maintainability:\n\n```bash\n# Edit or create a new alias file\nchezmoi edit ~/.config/zsh/aliases/brew.zsh\n\n# Apply changes\nchezmoi apply\n```\n\nAll `*.zsh` files in `~/.config/zsh/aliases/` are automatically loaded by `.zshrc`.\n\n### Edit Brewfile\n\n\u003e [!IMPORTANT]\n\u003e `Brewfile` is NOT copied to `~/` to avoid accidental edits.\n\u003e It only exists in the chezmoi source directory.\n\nBrewfile is a Ruby DSL. Platform-specific packages are guarded by `OS.mac?` / `OS.linux?`:\n\n- **Common**: CLI tools shared across macOS and Linux (e.g. `bat`, `fzf`, `ripgrep`)\n- **`if OS.mac?`**: macOS-only formulae (`m-cli`, `mas`, `terminal-notifier`), casks, and App Store apps\n- **`if OS.linux?`**: Linux-only formulae (`libnotify`)\n\n```bash\n# Edit Brewfile\ncd ~/.local/share/chezmoi\nvim Brewfile\n\n# Install/update packages\nbrew bundle --file=~/.local/share/chezmoi/Brewfile\n```\n\n## Key Components\n\n### Managed Configurations\n\nThis repository manages configurations for the following applications:\n\n| Tool         | Description                             | Config Path                                |\n| ------------ | --------------------------------------- | ------------------------------------------ |\n| **Ghostty**  | GPU-accelerated terminal emulator       | `~/.config/ghostty/`                       |\n| **Helix**    | Post-modern modal text editor           | `~/.config/helix/`                         |\n| **Neovim**   | Vim-fork with lazy.nvim plugin manager  | `~/.config/nvim/`                          |\n| **Zed**      | High-performance, AI-native code editor | `~/.config/zed/`                           |\n| **Zellij**   | Terminal workspace and multiplexer      | `~/.config/zellij/`                        |\n| **Yazi**     | Blazing fast terminal file manager      | `~/.config/yazi/` (auto-installs packages) |\n| **direnv**   | Per-directory environment variables     | `~/.config/direnv/`                        |\n| **ov**       | Feature-rich terminal pager             | `~/.config/ov/`                            |\n| **Starship** | Cross-shell prompt                      | `~/.config/starship.toml`                  |\n| **Sheldon**  | Fast Zsh plugin manager                 | `~/.config/sheldon/`                       |\n| **topgrade** | System update manager                   | `~/.config/topgrade.toml`                  |\n| **Atuin**    | Shell history sync (E2E encrypted)      | `~/.config/atuin/`                         |\n| **SSH**      | Tailscale SSH host aliases (keyless)    | `~/.ssh/config`                            |\n\n\u003e [!NOTE]\n\u003e Yazi plugins are automatically installed/updated via `run_onchange` script when `package.toml` changes.\n\u003e\n\u003e SSH uses [Tailscale SSH](https://tailscale.com/kb/1193/tailscale-ssh) (keyless, by\n\u003e Tailscale node identity). `HostName` entries use Tailscale IPs (100.x) instead of\n\u003e MagicDNS names — see [Troubleshooting](./TROUBLESHOOTING.md#tailscale--ssh) for why.\n\n### Sheldon Plugins\n\nOnly 5 essential plugins for fast startup:\n\n- `zsh-autosuggestions` - Fish-like autosuggestions\n- `zsh-completions` - Additional completion definitions\n- `zsh-history-substring-search` - History search (up/down arrows)\n- `zsh-you-should-use` - Reminds you to use existing aliases\n- `zsh-syntax-highlighting` - Fish-like syntax highlighting\n\n### Starship Prompt\n\nFast, customizable prompt with Git status, language versions, and more.\n\nTo customize: `chezmoi edit ~/.config/starship.toml`\n\n### Neovim\n\nMinimal configuration using lazy.nvim:\n\n- Basic editor settings (line numbers, indentation, etc.)\n- Clipboard integration\n- Kanagawa color scheme\n- Telescope fuzzy finder (`\u003cleader\u003eff` for files, `\u003cleader\u003efg` for grep)\n- Treesitter for better syntax highlighting and indentation\n- Claude Code integration (`\u003cleader\u003eac` to toggle, `\u003cleader\u003eas` to send selection)\n- Easy to extend with additional plugins\n\n## Troubleshooting\n\nFor comprehensive troubleshooting, see **[TROUBLESHOOTING.md](./TROUBLESHOOTING.md)**.\n\n**Quick fixes:**\n\n- **Shell doesn't recognize commands**: `source ~/.zshrc` or restart terminal\n- **Plugins not loading**: `sheldon lock --update` and `exec zsh`\n- **chezmoi not applying changes**: `chezmoi diff` then `chezmoi apply --force`\n- **PATH not working**: Check `~/.zprofile` exists and run `exec zsh`\n- **GPG/SSH issues**: `gpgconf --kill gpg-agent` then `exec zsh`\n\n**Common issues:**\n\n- [Initial setup problems](./TROUBLESHOOTING.md#初期セットアップ)\n- [Shell and prompt issues](./TROUBLESHOOTING.md#シェルプロンプト)\n- [chezmoi-specific problems](./TROUBLESHOOTING.md#chezmoi)\n- [GPG/SSH/YubiKey setup](./TROUBLESHOOTING.md#gpgsshyubikey)\n\n## References\n\n- [chezmoi](https://www.chezmoi.io) - Manage your dotfiles across multiple machines\n- [Sheldon](https://sheldon.cli.rs) - Fast, configurable shell plugin manager\n- [Starship](https://starship.rs) - Cross-shell prompt\n- [Ghostty](https://ghostty.org) - GPU-accelerated terminal emulator\n- [Helix](https://helix-editor.com) - Post-modern modal text editor\n- [Neovim](https://neovim.io) - Hyperextensible Vim-based text editor\n- [lazy.nvim](https://lazy.folke.io) - Modern plugin manager for Neovim\n- [Zed](https://zed.dev) - High-performance, multiplayer code editor\n- [Zellij](https://zellij.dev) - Terminal workspace and multiplexer\n- [Yazi](https://yazi-rs.github.io) - Blazing fast terminal file manager\n- [direnv](https://direnv.net) - Unclutter your .profile\n- [ov](https://noborus.github.io/ov/) - Feature-rich terminal pager\n- [topgrade](https://github.com/topgrade-rs/topgrade) - Upgrade all the things\n- [Atuin](https://atuin.sh) - Magical shell history sync\n\n## Misc\n\nThis repository is [Commitizen](https://commitizen.github.io/cz-cli/) friendly, following [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshin-sforzando%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshin-sforzando%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshin-sforzando%2Fdotfiles/lists"}