Hi Mathieu! Cool stuff! It's very interesting to see how others do things. I have a basic Scheme question about what you did, though. Mathieu Othacehe writes: > (define (drv-package store package) > (lambda () > `((#:job-name . ,(string-append > (package-name package) > "-" > (package-version package) > "-job")) > (#:derivation . ,(derivation-file-name > (parameterize ((%graft? #f)) > (package-derivation store package #:graft? #f))))))) It looks like drv-package is a procedure which returns a procedure. Is that correct? > (define (drv-list store arguments) > (let* ((manifest > (load* "/home/mathieu/conf/guix/manifest.scm" > (make-user-module > '((guix profiles) (gnu))))) > (packages > (map manifest-entry-item > (manifest-entries manifest)))) > (parameterize ((%graft? #f)) > (map (lambda (package) > (drv-package store package)) > (delete-duplicates! packages))))) > > > The drv-list procedure loads the file manifest.scm which content is > detailed below. The list produced by drv-list looks like : > > (((#:job-name . "acpi-1.7-job") (#:derivation > . "/gnu/store/r9s5x0ksj02hsw4n3acdxab8ggjp4z7y-acpi-1.7.drv")) ...) If drv-package is a procedure that returns a procedure, then it seems to me like the the list produced by drv-list should look like a list of procedures, but that isn't what you wrote. What am I misunderstanding? -- Chris