The output of builtins.getFlake (and the flake inputs provided to a flake’s outputs function) has some extra attrs merged into it for convenience. nix repl is only loading the true outputs (which you can see under (builtins.getFlake <whatever>).outputs).
nix build and nix eval also only operate on the true outputs. I personally have my flake export its own inputs as an output, just for convenience.
inputs isn’t a package, so putting it under packages definitely isn’t right, especially since packages is system-spaced, and inputs isn’t a system string (which is what that error is about, I believe).
I just put it directly in the outputs attrset. It’s not part of the standard flake schema, but nothing forces you to fit everything into the schema. The nix CLI just won’t be able to do much with an output that doesn’t follow the schema. It still works with nix eval and such, though, so it’s fine for debugging purposes.