This was mostly a copy-paste error (the `watch_file` calls). As for the shell hooks, it looks like `nix-direnv` takes care of that automatically.
This was ignored when I added the initial commit.