s's-nook:

dotfilesの育成 in 2025【mise, sheldon, raycastなど】

はじめに

PCをリプレイス機会があったのでdotfilesを整理しました。

ある程度調査をして、自分が使いこなせる範囲の最低限整えるためのdotfilesといった感じです。
「rust製のツールで揃えてとにかく早い環境を作る」みたいないなこだわりも特にありません。

リポジトリは以下になります。
https://github.com/nyankiti/dotfiles

2023時点からの変化

mise

あらゆる言語を管理できるツールを利用たことがなかったのでこれを機に入門しました。 グローバルに用いる実行環境については全てmiseへ集約できるようにしました。

それぞれの言語で個別でPATHを通していたものが以下で集約され、.zshrcがとてもすっきりしました。

eval "$(mise activate zsh)"
export PATH="$HOME/.local/share/mise/shims:$PATH"

zinit => Sheldon

Sheldon が早い & toml ファイルで設定を管理できると噂を聞いていたのでこれを機に入門しました。

zinitが不安なのでsheldonへ移行したらzshの起動が50msと更に速くなった 等を見ると遅延読み込みの設定を書いていました。興味のある人はこちらも試すと良いと思います。

自分は上記の遅延読み込みを入れると kube-ps1 の$PROMPTのカスタマイズが初回から読み込めないという問題があったので利用しませんでした。

shell = "zsh"

# pure テーマ
[plugins.pure]
github = "sindresorhus/pure"
use = ["async.zsh", "pure.zsh"]

# 構文ハイライト
[plugins.zsh-syntax-highlighting]
github = "zsh-users/zsh-syntax-highlighting"

# 補完
[plugins.zsh-completions]
github = "zsh-users/zsh-completions"

# オートサジェスト
[plugins.zsh-autosuggestions]
github = "zsh-users/zsh-autosuggestions"

pureは最初に入れたzsh themeで思い入れがあるのかずっと利用しています。

alfred, clipy => raycast

raycastは1年以上使っていましたが、dotfilesに落とし込めていなかったので追加しました。 raycastの設定のエクスポート/インポートができるようで、詳細は以下を参照ください。通常の設定に加えてスニペットなどの情報も引き継げるようです。

Raycast v1.22.0 - Export & import preferences and data
This release of Raycast adds the ability to export and import preferences and data, a new search menu item feature, and improvements to snippets and file search.
www.raycast.com
Raycast v1.22.0 - Export & import preferences and data

個人的にはraycastはalfredの完全上位互換と捉えており、とても重宝しています。

peco => fzf

pecoで特に不満はなかったのですが、色々とfzfの方が優れている気はしていたので乗り換えました。 といっても現状以下のコマンド履歴検索を利用している程度です。もっと色々カスタマイズできるはずなので、これから色々試していきたいです。

function history_search_with_fzf() {
    local selected_command
    selected_command=$(history -n 1 | tac | awk '!a[$0]++' | fzf --height 40% --layout=reverse --border --inline-info)
    if [ -n "$selected_command" ]; then
        BUFFER=$selected_command
        CURSOR=$#BUFFER
        zle reset-prompt
    fi
}
zle -N history_search_with_fzf
bindkey '^R' history_search_with_fzf

利用例↓ alt text

.gitconfig

.gitconfigによる以下の設定をdotfilesに追加。git pullした時の merge strategyの指定がないぞと言われるあのワーニングへの対策です

[include]
  path = ~/dotfiles/git/user.conf
[color]
	ui = true
[core]
	autocrlf = false
	ignorecase = false
	quotepath = false
	safecrlf = true
[init]
	defaultBranch = main
[pull]
	rebase = false
[push]
	default = current
    autoSetupRemote = true
[merge]
  ff = false

GitHub Actionsで再現性の担保

macos-latest環境にてsetup.shsource .zshrcが正常終了することをGitHub Actionsで担保しました。

jobs:
  check:
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup.sh
        run: bash setup.sh
        shell: zsh {0}
        env:
          SHELL: /usr/bin/zsh
      - name: Source .zshrc
        run: source zsh/.zshrc
        shell: zsh {0}
        env:
          SHELL: /usr/bin/zsh

最後に

mise, sheldon, fzfは初めて触ることもあり、結局1日くらい格闘していました。
Cursor, Warp等の生成AI周りのツールの環境整備もdotfilesに落とし込みたかったのですが、今回は定番どころを押さえていくだけで時間がすごいかかったのでまた別の機会にしたいと思います。

今回メインで参考にさせていただいた記事です🙏