MacBook Air 13inch (M1, 2020) Homebrew 環境構築

mac zsh homebrew

この夏、メディアサーバだった Mac mini (Early 2009) をついに撤去したため、その代替として。

今となってはWSLもあり、わざわざMacを選ぶ意味はだいぶなくなりましたが……。 気がついたらUMPCじゃない普通のラップトップが家になかったので、とりあえず話の種に1枚買いました。

もうほとんどの人にとって、最下位モデルでじゅうぶんなのでは。SSDの容量は用途次第ですが、16GBのメモリを要する人が果たしてどれだけいるのか。

方針

  • あくまで「端末」なのであまりにも凝ったことはしない
  • できる限りHomebrewだけでまかなう
  • できる限りarmのバイナリを使う
  • 無理なものだけx86_64で
  • 最終的にはx86_64を捨てるつもりで

インストール先は、

arm64
/opt/homebrew
x86_64
~/.local/homebrew

としてみます。x86がいらなくなったら .local のほうはまるごと消すことにします。

Homebrew インストール

arm64

% cd /opt
% sudo mkdir homebrew
% sudo chown $USER homebrew
% curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

x86_64

(ここでは既に Rosetta 2 が導入されて、archコマンドがあるものとする)

ターミナル自体をx86で動かす。

% exec arch -arch x86_64 "$SHELL"

% cd ~
% mkdir -p .local/homebrew
% curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C .local/homebrew

~/.zshrc

PATHの設定、補完関係、アーキテクチャの切り替えエイリアスなど。 果たしてHomebrewのキャッシュディレクトリは移しておくべきなのか。謎。

そういえばzshを初めて使う気がします。chpwd()とか、初見ではわからんばい。

export LSCOLORS=gxfxxxxxcxxxxxxxxxgxgx
zstyle ':completion:*' list-colors 'di=36' 'ln=35' 'ex=32'


alias ls='ls -FG'

chpwd() { ls }


setopt auto_cd
setopt magic_equal_subst


typeset -U path fpath cdpath
path=(
	/opt/homebrew/bin(N-/)
	~/.local/homebrew/bin(N-/)
	$path
)
fpath=(
	"$(brew --prefix)/share/zsh/site-functions"(N-/)
	$fpath
)
cdpath=(
	..
	~
	$cdpath
)

if (( $+commands[arch] )); then
	alias brew_x86='arch -arch x86_64 "$HOME/.local/homebrew/bin/brew"'
	alias switch2x86='exec arch -arch x86_64 "$SHELL" && source ~/.zshrc'
	alias switch2arm='exec arch -arch arm64e "$SHELL" && source ~/.zshrc'
fi

if [[ "$(uname -m)" == x86_64 ]]; then
	export HOMEBREW_CACHE="$HOME/.local/homebrew/cache"
else
	export HOMEBREW_CACHE=
fi


autoload -U compinit && compinit

Starship

とりあえずこれを書いている時点では、armで失敗するのを確認。

% switch2arm
% brew install starship

代わりにx86でインストール。

% switch2x86
% brew_x86 install starship

適宜、設定と使用の準備。

% switch2arm
% echo 'eval "$(starship init zsh)"' >> ~/.zshrc

% mkdir ~/.config
% touch ~/.config/starship.toml

x86で作業したらarmに戻すのを忘れずに。 こんな調子で、なんとかなる気がします。