Rostislav Svoboda schreef op za 23-04-2022 om 17:11 [+0200]: > The lists `inputs`, `native-inputs` and `propagated-inputs` are lists > of association lists that map input labels to file names. E.g.: > > (native-inputs >      `(("autoconf" ,autoconf) >        ("openjdk16:jdk" ,openjdk16 "jdk") >        ("pkg-config" ,pkg-config) >        ("unzip" ,unzip) >        ("which" ,which) >        ("zip" ,zip))) Nitpick: 'autoconf', 'openjdk16', ..., are package objects, not file names. > The `replace` just replaces the file name for a given input label (see > guix/packages.scm, line 1099): > > (define (replace-input name replacement inputs) >   "Replace input NAME by REPLACEMENT within INPUTS." >   (map (lambda (input) >          (match input >            (((? string? label) _ . outputs) >             (if (string=? label name) >                 (match replacement        ;does REPLACEMENT specify an output? >                   ((_ _) (cons label replacement)) >                   (_     (cons* label replacement outputs))) >                 input)))) >        inputs)) Replacing 'file name' by 'package object', isn't that what we need here? FWIW, 'replace' could be extended to also support modifying the output, but that extra functionality doesn't appear to have any use yet. Greetings, Maxime.