🦬

GNU StowでDotfilesを管理するのが簡単だよ

2023/11/27に公開

先日ホームディレクトリにあるzsh用コンフィグファイルなどの隠しファイル、通称DotfilesをGitHubでバックアップ&管理し始めたのですが、つい先ほど.configディレクトリも管理できるようになったので簡単に共有します。

注意

  • 筆者はmacOSを使用しています。
  • 記事を書く練習と学習用メモを見られる前提で書く練習に最適と思い投稿しています。お目汚し申し訳ございません。

シンボリックリンクを作るのにGNU Stow が簡単

まずはディレクトリ構成図をご覧ください。

ディレクトリ構成図
~/Dotfiles main* ⇡ ❯ tree -L 3 -a -I ".git"                                                                   19:21:33
.
├── .gitignore
├── README.md
├── config
│   └── .config
│       ├── chezmoi
│       ├── iterm2
│       ├── karabiner
│       ├── kitty
│       ├── linearmouse
│       ├── lvim
│       ├── menus
│       ├── neofetch
│       ├── nvim
│       ├── planetscale
│       ├── raycast
│       ├── skhd
│       ├── tmux
│       └── yabai
├── others
│   ├── .bash_history
│   ├── .gitconfig
│   ├── .iterm2_shell_integration.zsh
│   ├── .lesshst
│   ├── .p10k.zsh
│   ├── .viminfo
│   └── .zshenv
├── tmux.png
└── zsh
    ├── .p10k.zsh
    ├── .zcompdump
    ├── .zprofile
    ├── .zsh_history
    ├── .zshenv
    ├── .zshrc
    └── plugins

20 directories, 16 files

GNU Stowを使うとこれらディレクトリ・ファイルのシンボリックリンクを簡単にホームディレクトリに配置できます。Homebrewを使ってインストールできます。コマンド詳細はstow --helpでご確認ください。

stow -d ~/Dotfiles -t ~ config others

このコマンドで、Dotfilesディレクトリから、configおよびothersディレクトリそれぞれの中の全てのディレクトリまたはファイルのシンボリックリンクを作成してホームディレクトリに配置します。config内には.config ディレクトリがあるので、.config内のディレクトリが散らばることもありません。

ここで、zsh内のファイルは.zshenv内で、~/Dotfiles/zshにPATHを通しています。そのため、.zshなんちゃらで溢れることもありません。

SHELL_SESSIONS_DISABLE=1
export ZDOTDIR="${HOME}/Dotfiles/zsh"

これだけです。ご覧のようにchezmoi をインストールした痕跡がありますが、シンボリックリンクとGNU Stowが便利すぎて使わなくなってしまいました。

まとめと余談

これより簡単なのないよ、って話です。もっといい案がございましたらコメントをいただけると幸いです。皆さんもぜひGNU Stowをダウンロードしてみてください。

筆者はLunarvimを使っているのですが、今のところluaファイルの設定をミスって壊れてもgit resetはおろかstashにもbranchにもお世話になっていません。バックアップ要員です。

ご覧いただき、ありがとうございました。

Discussion