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?

7 Likes

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.