Use this workflow when a required command is unavailable:
- Try comma:
, <command>. - Try the project environment:
direnv exec . <command>. - Use
nix run nixpkgs#<package> -- <args>when a package is known. - Use
nix shell nixpkgs#<package> --command <command>when a package is known but a temporary shell is required.
Exceptions:
- Script with a missing interpreter: read its shebang and run it with
nix shell nixpkgs#<package> --command ./<script>. - Last resort:
docker run --rm -v "$PWD:/workspace" -w /workspace <image> <command>.
For GitHub-backed Nix fetches, use the nix-github-rate-limit skill.
Never install tools globally. Use Zsh for normal commands; if a user tool is only on Fish's PATH, resolve it with fish -lc 'command -v <tool>' and invoke the resulting path.