🔥

dotfilesの管理を楽にする話

2021/02/03に公開

筆者のdotfilesリポジトリ

https://github.com/tkomatsu/dotfiles

使い方

command line toolが入っていない場合は、Xcodeをインストールするか以下のコマンドを実行してください。

xcode-select install

GitHubのリポジトリをクローンして、makeをするだけで環境が揃うようになります。

cd $HOME
git clone git@github.com:tkomatsu/dotfiles.git
make -C dotfiles

CLIのツールはもちろんのこと、Mac App Storeからダウンロードしたものも含めて管理できます。

install.sh

dotfiles

ホームディレクトリ直下に置いてある.始まりのファイルを管理します。
私が作成しているのは以下のファイルです。

  • .gitconfig
  • .vimrc
  • .zshrc
for file in .vimrc .zshrc .gitconfig .gitignore
do
	[ ! -e $file ] && ln -s dotfiles/$file .
done

ホームディレクトリにdotfiles内の対象ファイルのシンボリックリンクを作成しています。
すでに作成したドットファイルがホームディレクトリにある場合は、それらを管理したいリポジトリ(今回であればdotfiles内)に移動してシンボリックリンクを作成してください。

Homebrew

HomebrewではstarshipやgitなどのCLIのツールからMac App Storeで配布されているものまでを管理しています。
Brewfileを使うことで簡単に管理することができます。

echo "installing Homebrew ..."
which brew >/dev/null 2>&1 || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
cd $THIS_DIR

echo "run brew doctor ..."
which brew >/dev/null 2>&1 && brew doctor

echo "run brew update ..."
which brew >/dev/null 2>&1 && brew update

echo "ok. run brew upgrade ..."
brew upgrade

brew bundle

brew cleanup

Install

Homebrewがインストールされていなければ、インストールします。

which brew >/dev/null 2>&1 || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

パッケージの管理

brewで管理したいものはBrewfileで管理をします。
brew bundleを実行することでBrewfileの中身のインストールが実行されます。

Brewfileの書き方

フォーミュラとして追加する時。(brew tap)

tap "homebrew/bundle"

brew installで入れるもの。主にCLIのツール。

brew "anyenv"

brew install --caskで入れるもの。主にGUIのツール。
ChromeなどのブラウザやZoomなどはこれで入れる。

cask "google-chrome"

Mac App Storeからインストールできるもの。
IDはAppのURLに記載されているものを記載。
RunCatであれば、URLがhttps://apps.apple.com/jp/app/runcat/id1429033973?mt=12であり、id?mtの間の部分がIDになります。

mas "RunCat", id: 1429033973"

Vimのプラグイン

私はVimのプラグインはVundleで管理しています。
install.shではVundleのインストールだけ行います。

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

その他

anyenvなどのバージョン管理ツールやGitHub CLIの設定を追加しています。

# install rbenv pyenv nodenv
anyenv install rbenv
anyenv install pyenv
anyenv install nodenv
exec $SHELL -l

# config
mkdir -p $HOME/.config/gh & ln -s $HOME/dotfiles/gh/config.yml $HOME/.config/gh/config.yml

最後に

環境構築を簡単にしようと思っていたら、楽しくて沼にハマりました。
みなさんもハマりましょう!!

Discussion