blog.anqou.net
rss
author
tags

nix-direnv で flake.nix 以外のファイルの編集でも dev shell を更新する

nix-direnv を使って .envrc に以下のように書くと:

use flake

flake.nix に定義した dev shell の環境が手元に展開されてコマンドなどが使えるようになる上に、 flake.nix を編集すると nix 式の再評価が自動的に走って dev shell の環境も新しくなってくれて便利です。一応 dev shell は nix develop でも使えるようになりますが、これで立ち上がるシェルはなにかと不便なので、 dev shell を常用する場合はほぼ必須の機能です。

ところで dev shell の内容を決めるのは必ずしも flake.nix だけではありません。例えば opam-nix を使う場合、 *.opam ファイルの中身から dev shell にインストールするべきライブラリの内容が決まります。そのため、 flake.nix だけではなく *.opam ファイルの編集にも dev shell が追従して欲しくなります。

そのような場合は watch_file が便利です[1]。以下のように use flake の前に配置し、監視するべきファイルを追加で指定できます:

watch_file hoge.opam
use flake

注釈

  1. watch_file を知ったのはかなり最近です。それまでは touch flake.nix を手動で打つことでしのいでいました。