Open6

dotfilesを作るぞい

Beyond ToyamaBeyond Toyama

dotfielsを唐突に作りたくなったので調べていく
基本的にMacとWSL上で同じように動くのが一番いいがMac特有XCode系のコマンドは動かすのが難しいから分ける必要がありそう?

セットアップしたいやつ一覧

  • homebrew
  • iterm
  • nvim
  • zshrc

とりあえずこんなところ
必要になったら追加していこう
参考になりそうなやつ

https://dev.classmethod.jp/articles/joined-mac-dotfiles-customize/
http://vdeep.net/github-dotfiles

Makefileはあると良さそう
.gitignoreも適切に設定を追加する必要がありそう
シンボリックリンクを作成してホームディレクトリにある状態と同じようにしてあげると管理しやすそう

Beyond ToyamaBeyond Toyama

やってく

自分の場合はghqでリポジトリの一元管理をしているので~/src/github.com/happy663の直下にdotfilesディレクトリを作成する
また.binディレクトリも作成しておく

mkdir dotfiles
cd dotfiles
mkdir .bin

次にMakefileだが参考サイトの奴をとりあえずそのまま使う
Makefileのコマンド複数実行できたの初知り

# Do everything.
all: init link brew

# Set initial preference.
init:
	.bin/init.sh

# Link dotfiles.
link:
	.bin/link.sh

# Install macOS applications.
brew:
	.bin/brew.sh

スクリプト周りもそのまま使おうと思ったがzshなので少し変更
brewのインストールの後にpathの設定が必要だった気がするが必要になったら追記しよう

init.sh

#!/bin/zsh

if [ "$(uname)" != "Darwin" ] ; then
	echo "Not macOS!"
	exit 1
fi

# Set zsh
chsh -s /bin/zsh

# Install xcode
xcode-select --install > /dev/null

# Install brew
/bin/zsh -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" > /dev/null

シンボリックリンクを貼るスクリプト

link.sh

#!/bin/zsh
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

for dotfile in "${SCRIPT_DIR}"/.??* ; do
    [[ "$dotfile" == "${SCRIPT_DIR}/.git" ]] && continue

    ln -fnsv "$dotfile" "$HOME"
done

.zshrcをbinディレクトリに移動させてリンクを作成できるか試す

❯ make link                                                                                                                          ─╯
.bin/link.sh
make: .bin/link.sh: Permission denied
make: *** [link] Error 1

実行権限がなくてエラーが出たので付与

chmod +x link.sh

もう一回試す

❯ make link                                                                                                                          ─╯
.bin/link.sh
/Users/toyama/.zshrc -> /Users/toyama/src/github.com/dotfiles/.bin/.zshrc

良さそう

Beyond ToyamaBeyond Toyama

.zshrc以外のファイルも移動させていくぞと思ったが具体的に何を移動させようかな
大体上記で述べたやつ.configに入ってるから.configを移動させる

mv .config/ ~/src/github.com/dotfiles/.bin
Beyond ToyamaBeyond Toyama

brewの設定も移動させたい

brewの設定は以下で吐き出せるみたい

brew bundle dump --global

ホームディレクトリに.Brewファイルが作成されていたのでこれも.binに移動させておく

Beyond ToyamaBeyond Toyama

現状はこんな感じ

.
├── .bin
│   ├── .Brewfile
│   ├── .config
│   ├── .zshrc
│   ├── init.sh
│   └── link.sh
└── Makefile

ファイルを追加したのでmake linkでシンボリックリンクを作成しておく

Beyond ToyamaBeyond Toyama

brewインストールするためのスクリプトを追加

brew.sh
#!/bin/zsh

if [ "$(uname)" != "Darwin" ] ; then
	echo "Not macOS!"
	exit 1
fi

brew bundle --global