You can run the script to modify, say, all the ‘python*’ packages: ./pre-inst-env guile simplify-package-inputs.scm \ $(./pre-inst-env guix package -A '^python' | cut -f1,2 |tr '\t' '@') It runs in a minute and the resulting diff looks like this: 100 files changed, 4423 insertions(+), 5180 deletions(-) The script warns when it fails to convert a package or when a comment could not be preserved during conversion (it tries to preserve margin comments but it’s a bit of a hack since neither ‘read’ nor ‘pretty-print’ help with that): --8<---------------cut here---------------start------------->8--- gnu/packages/wxwidgets.scm:318:5: warning: python2-wxpython: input label 'wxwidgets' does not match package name, bailing out gnu/packages/wxwidgets.scm:315:5: warning: python2-wxpython: margin comment will be lost gnu/packages/web.scm:6503:7: warning: python2-clf: non-trivial input, bailing out gnu/packages/web.scm:6503:7: warning: python-clf: non-trivial input, bailing out gnu/packages/tryton.scm:594:5: warning: python-trytond-party: input label 'python-stnum' does not match package name, bailing out gnu/packages/tls.scm:612:5: warning: python-acme: margin comment will be lost gnu/packages/time.scm:435:5: warning: python-arrow: margin comment will be lost gnu/packages/sphinx.scm:133:21: warning: python2-sphinx: computed input list, bailing out --8<---------------cut here---------------end--------------->8--- I don’t have hard figures but I think the majority of packages are handled, which means we could do a big switch at once, or in a short amount of time (so we can review removed comments and fix them up). We could then forcefully convert some of the remaining cases, with the understanding that the derivation would be different but presumably valid; finally, there’d be the more complex cases that need to be manually dealt with. Thoughts? Thanks, Ludo’.