I was having a similar issue, so I dug into this issue a bit, and it turns out that you *can* select an output from file-append, but the syntax is a bit wonky:
---[snip]--- (let ((fa (file-append pkg "/path"))) $~$#fa:output) ---[snip]--- I’ve tried to remove the let: ---[snip]--- $~$#(file-append pkg "/path"):output ---[snip]--- But this confuses the reader, an it things ‘:output’ is a variable. Not too surprising, but it does make the Guix configuration files more awkward, since now you have to ‘define’ the file-append operations at the top level so you can refer to them with the syntax above. I would prefer to have something like any of the following (in order of preference): ---[snip]--- (file-append pkg:output "/path") (file-append (list pkg "output") "/path") (file-append $~$#pkg:output "/path") ---[snip]--- The reason being that it’s awkward to select the output after the file-append due to syntax, and it’s less intuitive than trying to select the output directly from the package inside the file-append (and it seems I’m not alone in this). I’ve been through the code, so to some degree I realize why things are being done the way they are, but that doesn’t change my current preferences. I prefer the list over the gexp/ungexp because we already use lists to select outputs in other parts of the config declarations, and the gexp/ungexp stuff is harder to understand from the point-of-view of a user, rather than package author. It’s also not present in the majority of configs, I’d wager. Before I found the “correct” way to do things, I did cobble together some code that allowed the (list pkg "output") form to work, and would be happy to submit it upstream. It’s not perfect, since it ignores the ‘output’ argument in the gexp expander in favor of the stored output in the file-append, but I don’t think that’s an actual issue in practice. -bjc