Is it possible to apply a plugin to itself?

I have several projects in a monorepo setup, each a composite build that depends on a shared configuration in a custom plugin. This plugin, monorepo-settings, is applied to every settings.gradle.kts file and sets up things like repositories, build cache configuration, and version catalogues (which are therefore defined only once across the entire monorepo, in the plugin).

However, this plugin doesn’t depend on itself. Its own settings.gradle.kts doesn’t apply monorepo-settings, it is not available at the time the plugin itself is being configured. Thus there is some code duplication and a possible discrepancy between the plugin’s setup and the setup it defines for every other project, which is the issue I’d like to resolve.

Is there a way to apply monorepo-settings to itself? I understand it’s a chicken-and-egg problem where I can’t specify a recursive includeBuild for the plugin itself, but is there a way to bootstrap it via some other means? I’m primarily concerned about version catalogues, though this holds for the other pieces of shared configuration as well.

Additionally, I’d like to define another plugin, monorepo-build, for sharing configuration of root-level build scripts across monorepo projects (build.gradle.kts). Is it possible to use monorepo-build in its own build.gradle.kts?

As you correctly mentioned, this is a chicken-and-egg problem.
You cannot use what you build to build what you build.
The only thing that you could cleanly do is publishing that plugin somewhere and then use the previously published version in the plugin build.