🗾

みんなが使えるMacOS用dotfiles「YAMATO」を作っている話

に公開

みんなが使えるMacOS用dotfilesを作っている話

はじめに

今回は私が「みんなが使えるMacOS用dotfiles」を目指して作っている「YAMATO」というプロジェクトについて紹介します

https://github.com/politive/yamato

作ろうと思ったきっかけ

個人のDotfilesの更新を放置しすぎた

  • ここ2年ほど、Dotfilesの更新を放置してしまっていました
  • その間にツールの乗り換えがいろいろありました
    • bash(自作プロンプト) -> zsh(starship prompt)
    • Docker Desktop -> docker(cli)+ Colima + lazydocker
    • asdf -> mise
  • 差分が大きく、PCを買い替えた際にも大変だなと思い、dotfilesを作り(直し)始めました

Omakubがリリースされていた

  • 先人たちのdotfilesたちを調べていたら、DHH氏がOmakubというUbuntuをいい感じにセットアップするスクリプトを作っていました
  • これに影響を受け、dotfiles以外の名前をつけていろんな人が使える dotfilesを新しく作ろうと思いました

https://omakub.org/

命名

Macのセットアップスクリプト=Macの最初の一歩というのを
日本の始まり=大和(やまと)になぞらえて命名しました。

yamato.png

作っていて困ったこと

問題:こだわりがない人しか使えない

  • 初期のYAMATOは自分のおすすめの設定を入れるだけのスクリプトでした
  • しかし、MacOSはいろんな人が使っていて、各ツールには好みがあります。
  • また、ツールによっては私のおすすめをインストールすることによって環境が壊れてしまう可能性もあります
    • 例:Docker Desktopの入っている環境にColima等のDocker deamon系のライブラリをインストールするなど(試していませんが予期せぬ動きをしそう)

対策:ツールをおまかせ・自分で選んでインストール双方できるようにした

  • omakaseオプションでおまかせ、interactiveやpresetオプションで対話やファイル指定によって自分でツールを選んでインストール可能にしました
  • 詳細は #オプションに書きました

現在の仕様

実行コマンド

curl -L https://raw.githubusercontent.com/politive/yamato/main/boot.sh | bash

オプション

  • おすすめセットアップ(--omakase
    • 私のおすすめをインストールします
    • yamato.ymlに設定値がまとまっています
  • 対話モード(--interactive
    • どのツールを入れるか、対話形式で選べます
  • プリセット(--preset <file>
    • YAMLファイルを指定して好きなツールを選択できます
    • yamato.yml をコピーして自分用の設定ファイルを作り、--preset で指定できます
  • ログの詳細表示(--verbose
    • デフォルトではインストール(brew install時など)のログを表示していないため、詳細なログを見たい場合に使います
  • ドライラン(--dryrun
    • 実際にはインストールせず、何が実行されるかだけを表示します

現時点での課題(今後やりたいこと)

  • 一部のツールしか {omakase, interactive, preset} オプションに対応していない
    • 対応済み: Docker系ライブラリ, ターミナルアプリ, ブラウザアプリ
    • 未対応: 上記以外
  • もっといろんなライブラリをオプションを使ってインストールできるようにしたい
    • みなさんがどんなツールを使っているか知りたいので、ぜひGitHub Issuesで教えてください!
  • みなさんが自作のスクリプトを追加できるようにしたい
      • source /path/to/overrides/exec.sh のように呼び出す処理を入れておく
      • overrides配下は好きにコミットしてもらう
    • フォークしてカスタムしやすいようにしたい
  • ディレクトリ構造をもう少し見やすいものにしたい

終わりに

YAMATOは始まったばかりのプロジェクトです。応援よろしくお願いします...!

Politive Tech Blog

Discussion