Hi, On Fri, 09 Dec 2022 at 12:46, Peter Polidoro <pe...@polidoro.io> wrote:
> I am not sure if you are the same Simon Yes, I am. :-) Have we met? > but it made me wonder if > using guix extension could a nice way to solve these sorts of > problems. Well, I do not know, I mean it is not clear for me what I would like as an interface. > Could I have a set of guix extensions local to each project so > that I can run commands like: > > guix serial-shell PORT=/dev/ttyUSB0 > > Which would really run something like: > > guix time-machine -C .channels.scm -- shell --container > --expose=$(PORT) -- make PORT=$(PORT) serial-shell >From my understanding, there is 2 levels: + how do you call the Guix specific? + how do you implement this Guix specific? Because calling “guix serial-shell PORT=/dev/ttyUSB0” or “guix-serial-shell PORT=/dev/ttyUSB0” is almost identical. :-) So the true question is how to implement? If using Shell script containing something like, guix time-machine -C .channels.scm -- shell --container --expose=$(PORT) -- make PORT=$(PORT) serial-shell Well, the extension is just for fun; it would contain something like: (invoke "guix" "time-machine" …) So the extension is replacing the dash by one space. :-) Now, if instead of the command-line (guix time-machine …), you would like to use the Scheme API, yeah you can do it using an extension. >From my point of view, in this case, maybe an extension is a heavy solution when a quick script would just smooth the workflow. Somehow, for the difference, give a look at patch#58339 [1], + [PATH 1/2] uses “(apply system* …)” instead of “invoke” but that’s the same idea, + [PATH 2/2] uses the Scheme API, sure trivially. :-) 1: <http://issues.guix.gnu.org/msgid/20221006163609.2280960-1-zimon.touto...@gmail.com> HTH. Cheers, simon