Your examples assume that the user wants to build everything with flakes etc, but the user might also just want to reuse upstream as environment and use relative paths.
Reasoning:
found no simple way to reference via relative path other flakes etc on system.
shell.nix + direnv is the most simple way to get a reproducible dev setup
flakes and other methods copy things to global nix store and user might not want copies of files lying around
I think this guide was meant to be a "best practice to start a project with nix today", but things get more and more complicated/complex as you go through the guide
Your examples assume that the user wants to build everything with flakes etc, but the user might also just want to reuse upstream as environment and use relative paths.
Reasoning:
Paths:
~/dev/zdev/shell.nix
~/dev/zi/shell.nix with shellHook example: