I think I am doing something crazy.
I used nh home switch -f ./home-entry to activate my home-manager configuration (./home.nix), while using ./flake-compat.nix to get inputs from ./flake-compat.nix/flake.nix. NH seems to use the inputs from the flake.nix.
home-entry.nix is modified from the nix function <home-manager/home-manger/home-manager.nix>. In simple terms, when not using flake, home-manger switch simply uses nix-build to build the activationPackage property returned by the nix function. This nix function accepts home.nix (usually) as an argument. This nix function is a wrapper of <home-manager/modules>.
When flake is enabled, I noticed that homeManagerConfiguration is also a wrapper for <home-manager/modules>, but compared to the former, it passes the extraSpecialArgs to <home-manager/modules>, which can set additional arguments for home modules.
Unfortunately, it seems I have to use nh because it goes deeper into the underlying layer and requires you to manually pass the file (<home-manager/home-manager/home-manager.nix>).
