Skip to content

Latest commit

 

History

History
34 lines (23 loc) · 1.09 KB

MISC.org

File metadata and controls

34 lines (23 loc) · 1.09 KB

Miscellaneous

Useful Guile Snippets

Find packages that use a certain build system, eg the ruby-build-system:

$ ./pre-inst-env guile
scheme@(guile-user)> (use-modules (guix build-system ruby) (gnu packages) (guix packages))
scheme@(guile-user)> (fold-packages (lambda (package result) (if (eq? (package-build-system package) ruby-build-system) (cons (package-name package) result) result)) '())

Find the names of all service types:

(fold-service-types (lambda (s r) (cons (service-type-name s) r)) '())

Find all extensions for a service type:

For a given service type, eg connman-service-type, you can get its extensions:

(service-type-extensions connman-service-type)

These do not have names or much human-readable metadata, but the targets are service-types which have names, so that may be more helpful:

(map (compose service-type-name service-extension-target)
     (service-type-extensions connman-service-type))

This is much more readable.