Skip to content
5hal1nPublic

About

macOS (Apple Silicon) shell setup: fish + starship + peco + ghq, bootstrapped by a single install.sh

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

macOS (Apple Silicon) 向けのシェル環境一式。install.sh 一発で Homebrew パッケージの導入から 設定ファイルの配置まで完了する。

セットアップ

git clone https://github.com/5hal1n/dotfiles.git ~/dotfiles
~/dotfiles/install.sh

install.sh は Homebrew も自分で入れるので、素の macOS でもこの2行から始められる。

変更内容を先に見たいときは ~/dotfiles/install.sh --dry-run。 何度実行しても安全(冪等)で、既存の実ファイルは *.bak.<timestamp> に退避してからリンクを張る。

install.sh がやること:

  1. Homebrew の導入(無ければ)
  2. brew bundle で Brewfile を適用
  3. 設定ファイルを ~ 以下にシンボリックリンク
  4. ~/.gitconfig.local(git 識別情報)の雛形生成
  5. ~/ghq の作成
  6. 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 について

fzf はバイナリだけ入れているが、fish 統合(fzf --fish | source)は意図的に読み込んでいない。 fzf の統合は Ctrl-R / Ctrl-T を奪い、上記の peco 割り当てと衝突するため。 fzf は他ツールから呼ばれる用・単発利用に留めている。

略語(abbr)

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 login

gh auth setup-git を実行する必要はない。同等の設定が git/gitconfig に入っており、 そちらは実行パスを絶対パスで書いていないので Intel Mac でもそのまま動く。

メモ

  • 設定変更は ~/dotfiles 以下を直接編集する(~/.config/... はリンクなので実体は同じ)
  • 変更を反映するには新しいターミナルタブを開く。起動済みのセッションには反映されない
  • gh auth login は初回のみ手動で実行する
  • 公開リポジトリなので、マシン固有・非公開の設定は ~/.gitconfig.local 側に置く

About

macOS (Apple Silicon) shell setup: fish + starship + peco + ghq, bootstrapped by a single install.sh

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages