64
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

dotfilesの配置はGNU Stowを使おう!

Last updated at Posted at 2022-12-22

HRBrain Advent Calendar 2022、23日目の記事です。

はじめに

こんにちは。株式会社HRBrainでエンジニアリングマネージャーをしている山口です。

いろいろなウイスキーでハイボールを作って飲むYouTubeチャンネルを見ていたら、すっかりウイスキーに沼ってしまいました。是非コメントでオススメのウイスキーを教えてください。

本記事では、GNU Stowを使ったdotfiles管理について紹介します。

ヌーのイラスト

dotfilesって何?

dotfilesとは、ドット(.)から始まる設定ファイルのこと。ホームディレクトリでls -laを実行すると表示されるアレです。

ls -laの実行結果

基本的には自動的に作成されるものが多いですが、.ssh/config .zshrcなどは自分好みに編集しますよね。

マシン交換時に毎回設定するのも面倒なので、自分用リポジトリを持っている人も多いのではないでしょうか。

GNU Stowって何?

GNU Stowとは、シンボリックリンクファームマネージャーです。

システム上にあるソフトウェアやパッケージを、別のディレクトリにインストールされているように見せるシンボリックリンク、これを簡単に管理できます。

今回はこのStowを利用して、dotfilesを任意の場所に配置しようって魂胆です。

やってみよう

dotfilesを集める

まずは管理したいdotfilesを1つに集めます。パッケージ名などでディレクトリを分けておくと良いです。

dotfiles
├── code
│   ├── keybindings.json
│   └── settings.json
├── git
│   └── git
│       ├── config
│       └── ignore
├── ssh
│   └── config
├── tig
│   └── .tigrc
└── zsh
    ├── .zpreztorc
    ├── .zprofile
    └── .zshrc

Visual Studio Code・Git・SSH・tig・zshの設定を置くとしたら、こんな感じでしょうか。

Stowを実行する

dotfilesをまとめることができたら、あとはもうStowを実行するだけです。

stow -R -v -d ./dotfiles -t ~ ssh tig zsh
stow -R -v -d ./dotfiles -t ~/.config git
stow -R -v -d ./dotfiles -t ~/Library/Application\ Support/Code/User code

-dで指定したディレクトリ内にあるパッケージへのシンボリックリンクが、-tで指定したディレクトリに作成されます。

stowの実行結果

良い感じ!

もうこれで、マシンを入れ替える度に、たくさんのdotfilesをcplnでいちいち配置しなくてもいいですね!

実際に自分が使っているリポジトリを公開しているので、もし良かったら参考にしてください。

最後に

HRBrainでは引き続き仲間を募集しております。最新の募集状況などは下記からご確認ください。

64
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?