この記事は ryota2357 Advent Calendar 2024 の 5 日目の記事です。
少し前にこんなものを書きました。
Nix が全て解決してくれました。nix-direnv を使えばディレクトリ入った時だけ LS とかのツールを有効にできます。
僕は次がやりたいと言っていました。
指定したlsをバージョン指定でインストール
1コマンドで更新の存在チェック
遅延インストール機能
1つ目のバージョン指定は不要なことに気がつきました。結局は lock がしたいだけだったので flake.lock で十分でした。(バージョン指定したければ devenv を使えば良さそう)
2つ目の更新チェックに関しては、nix flake update で更新して、やっぱり更新したくなければ flake.lock を戻せばいいだけ。僕の場合、「更新チェック→更新」の流れが多いです。更新あるけどしない方が珍しいので、こっちの運用の方が合っていました。
遅延インストールとは少し違うけど、グローバルにツールを入れることなく、必要な時にインストールされるので目的は達成できています。
ついでにこんなことも言っていました。
インストールされたLSはMasonと同じ感じでNeovimに閉じたものにしたい。
Neovim には閉じなかったけど、ディレクトリに閉じれました。ディレクトリに閉じる方が、フォーマッタ・リンターとかのコマンドラインからも使うものも閉じれるので、nix-direnv が上位互換だと感じています。
Nix は素晴らしい。