Recipe ingredients are how we build configurations with
grlx. They can be thought of as the building blocks for completing various file, service, or management operations. Recipes rely on dependency injection via a provider system to provide extensible backends for various tasks. This also allows for users to develop go plugins to extend ingredient providers.