Assume you have two flakes A and B, and A takes nixpkgs as an input. Thus, A defines something like inputs.nixpkgs.url = nixos-unstable;. Now, assume B depends on A, so B defines inputs.a.url = "where-to-find-A".
When you evaluate B, then you pull in A’s dependencies as it is defined by A. So B now depends on nixos-unstable. However, maybe you don’t want to depend on unstable. You could of course just override the input nixpkgs to a paricular version. Or you say “the nixpkgs dependeny of A is the same as the nixpkgs as defined by B”. So you say, in B: inputs.a.nixpkgs.follows = "nixpkgs";.
So now, A’s nixpks is the same as B’s inputs.nixpkgs when you evaluate B and you didn’t need to touch A.
Assume you have two flakes A and B, and A takes
nixpkgs
as an input. Thus, A defines something likeinputs.nixpkgs.url = nixos-unstable;
. Now, assume B depends on A, so B definesinputs.a.url = "where-to-find-A"
.When you evaluate B, then you pull in A’s dependencies as it is defined by A. So B now depends on nixos-unstable. However, maybe you don’t want to depend on unstable. You could of course just override the input nixpkgs to a paricular version. Or you say “the nixpkgs dependeny of A is the same as the nixpkgs as defined by B”. So you say, in B:
inputs.a.nixpkgs.follows = "nixpkgs";
.So now, A’s nixpks is the same as B’s
inputs.nixpkgs
when you evaluate B and you didn’t need to touch A.