macOS (Apple Silicon) 向けのシェル環境一式。install.sh 一発で Homebrew パッケージの導入から
設定ファイルの配置まで完了する。
git clone https://github.com/5hal1n/dotfiles.git ~/dotfiles
~/dotfiles/install.shinstall.sh は Homebrew も自分で入れるので、素の macOS でもこの2行から始められる。
変更内容を先に見たいときは ~/dotfiles/install.sh --dry-run。
何度実行しても安全(冪等)で、既存の実ファイルは *.bak.<timestamp> に退避してからリンクを張る。
install.sh がやること:
- Homebrew の導入(無ければ)
brew bundleでBrewfileを適用- 設定ファイルを
~以下にシンボリックリンク ~/.gitconfig.local(git 識別情報)の雛形生成~/ghqの作成- fish をログインシェルに設定(未設定なら。
/etc/shells追記に sudo が必要)
| リポジトリ内 | リンク先 |
|---|---|
config/fish/config.fish |
~/.config/fish/config.fish |
config/fish/conf.d/*.fish |
~/.config/fish/conf.d/ |
config/fish/functions/*.fish |
~/.config/fish/functions/ |
config/starship.toml |
~/.config/starship.toml |
git/gitconfig |
~/.gitconfig |
git/gitignore_global |
~/.gitignore_global |
user.name / user.email はこのリポジトリに含めていない。公開リポジトリなので、
~/.gitconfig.local(git 管理外)に切り出し、git/gitconfig の [include] から読み込んでいる。
新しいマシンでは install.sh が雛形を生成するので、そこを自分の値に書き換える:
$EDITOR ~/.gitconfig.localリンクはファイル単位で張っている。conf.d/ や functions/ をディレクトリごと張ると、
brew が vendor 側に置くファイルと衝突するため。
fish の conf.d/ は config.fish より先に、ファイル名順で読まれる。順序を明示するため
番号プレフィクスを付けている(00-env → 10-starship → 40-abbr)。
| キー | 動作 |
|---|---|
Ctrl-G |
ghq 管理下のリポジトリを peco で選んで cd |
Ctrl-R |
コマンド履歴を peco で検索してコマンドラインに差し込む |
Ctrl-R は複数行にまたがるコマンドも壊さない。peco の --null は出力時にエントリを
最初の改行までで切り捨てる(git commit -m "multi\nline" が git commit -m "multi になる)ため
使えない。代わりに改行を ↵ に置換して「1エントリ = 1表示行」を保証し、選択後に元へ戻している。
fzf はバイナリだけ入れているが、fish 統合(fzf --fish | source)は意図的に読み込んでいない。
fzf の統合は Ctrl-R / Ctrl-T を奪い、上記の peco 割り当てと衝突するため。
fzf は他ツールから呼ばれる用・単発利用に留めている。
ls / cat / grep などの既存コマンドは上書きしていない。追加した略記のみ:
g → git 、gs → git status -sb、gd → git diff、
gl → git log --oneline --graph --decorate -20、gco → git checkout、gb → git branch、
get → ghq get、repo → peco_ghq
Brewfile に1行足して brew bundle --file ~/dotfiles/Brewfile を再実行するだけ。
Brewfile の末尾に、モダン CLI(ripgrep / fd / bat / eza / jq / zoxide / git-delta)の候補を
コメントで残してある。行頭の # を外せば有効になる。
現在のマシンの状態を Brewfile に書き戻したいときは:
brew bundle dump --force --file ~/dotfiles/Brewfile(コメントは失われるので、差分を確認してからコミットすること)
starship の2行構成。ディレクトリ + git ブランチ + git 状態 + 言語バージョン + 実行時間。
Nerd Font 専用のグリフは使っていない。Ghostty は Nerd Font シンボルを内蔵しているが、
Terminal.app など他のターミナルで豆腐(□)になるのを避けるため。Ghostty 固定運用にするなら
config/starship.toml の [git_branch] に symbol = " " などを足してよい。
GitHub の認証は gh のトークンを git の credential helper 経由で使う(git/gitconfig に設定済み)。
新しいマシンでは一度だけ:
gh auth logingh auth setup-git を実行する必要はない。同等の設定が git/gitconfig に入っており、
そちらは実行パスを絶対パスで書いていないので Intel Mac でもそのまま動く。
- 設定変更は
~/dotfiles以下を直接編集する(~/.config/...はリンクなので実体は同じ) - 変更を反映するには新しいターミナルタブを開く。起動済みのセッションには反映されない
gh auth loginは初回のみ手動で実行する- 公開リポジトリなので、マシン固有・非公開の設定は
~/.gitconfig.local側に置く