Make nix-modules available when defining user environments.

A new user specific configuration file is introduced.
It is located in "~/.nixuser/configuration.nix".
The idea is to have a declarative approach for defining the user environment
at some point. The configuration file acts as the input of a module evaluation
system, similar to "/etc/nixos/configuration.nix" for the NixOS configuration.

A new file "nixos/modules/nixuser-module-list.nix" is added.
The file lists modules that are made available both for system configuration
and for user configuration.
The file is imported by "nixos/modules/module-list.nix" and is used in
"pkgs/top-level/all-packages.nix".
Can you detail what is the purpose of the makeProfile function, is that to agregate all options definitions and merge the vimrc attribute?

How is that different from having multiple NixOS modules, where each module declare its own set of options and define the vimrc content?  Then the vimrc content can be written down system-wide / user-wide.