What's the difference between `extraArgs` and `specialArgs` for lib/eval-config.nix

In the lib/eval-config.nix, there’s extraArgs and specialArgs. They both seem to do the same thing. What’s the reason for having different ways of providing custom arguments to modules, and what do they do?


Looking at the history, specialArgs has apparently been re-introduced to allow defining module arguments that can be used as paths in imports option. Actually, it is even mentioned in the comment:

By the way, extraArgs is deprecated in favour _module.args option but the distinction is still the same.