Downstream modules assign settings.lang_packages.<lang> plainly, which
out-priorities mkOptionDefault and silently dropped the built-in
defaults (e.g. lintr, breaking R linting in downstream wrappers like the
project-template ed flake).
Move the built-in defaults into a separate settings.langPackageDefaults
option and compose defaults ++ lang_packages at the consumption sites
(catPkgs r/python/julia, quarto extraRPackages, neovide R host). A new
append-semantics check fails if defaults migrate back into lang_packages.
Also fix pre-existing inverted assertions in downstream-overrides check:
the override module sets cats.r = true, so assert presence, not absence.
- Extract mkWrapperConfig to share cats/settings between package and devshell
- Add python, R, julia, and markdown packages to devShells when their cats are enabled
- Reuse same package construction logic as specs/deps.nix for consistency
- Keep lang_packages overridable via lib.mkDefault for downstream flakes