Caching nixpkgs package definitions for nix run, shell and profile install

I think I see. I had set this:

registry.nixpkgs.flake = inputs.nixpkgs;

(and my nixpkgs input is the unstable branch)
because I thought that should synchronize the nixpkgs used in the CLI with the flake.lock in my configuration. But it looks like that made it actually not be pinned anymore?
When having this option set, in the output of nix registry list, nixpkgs points to a store path ending with a ?lastModified=...<some more parameters>. When removing the option, it just points to a nix store path without any parameters.
Would the latter mean that it is pinned then? And would it mean it is still on the same revision as the nixpkgs used in my flake?

Also, from my previous question about using unfree packages with the nix command, I have set:

nix.registry."nixpkgs-unfree" = {
  from = { id = "nixpkgs-unfree"; type = "indirect"; };
  flake = inputs.nixpkgs-unfree;
};

Here it seems that just setting:

registry.nixpkgs-unfree.flake = inputs.nixpkgs-unfree;

has the same effect. However, like with the regular nixpkgs, this makes nixpkgs-unfree point to a store path with parameters at the end when looking at the registry. Whenever I have used this to run/test/build packages using the nix command, it also often redownloaded the package definitions. So this means it also is not pinned to the flake.lock in my config?