Hello, Am Tue, Jun 30, 2026 at 02:23:13PM +0100 schrieb Arun Isaac: > > You mention that arbitrary Scheme code is difficult to edit, but the > > simple example with a list of packages should be easy. Or let me > > formulate a thesis: Everything that is possible to do with a not very > > expressive declarative style, should be possible to do by > > automatically editing a Scheme file, maybe starting from a template > > (using "(substitute* ...", for instance). > Like I explain with examples in a previous email, short of using an LLM, > it is not possible to edit arbitrary Scheme code reliably.
I fully agree with this. My argument would be that if everything is supposed to go through the command line, then we could work with very limited types of expressions - instead of using not very expressive Yaml, we could use a not very expressive subset of Scheme. For instance, start with a template file, or a script that creates an initial Scheme file for something (a package collection installed into the home profile; or a combination of channels.scm and manifest.scm; or whatever you have in mind as a concrete problem to be solved) much like the installer creates a system configuration file. And then a command line argument could transform such files. It assumes that people never hand edit these files created by a machine, so that they remain in a rather rigid format. > > Are people's needs not already covered by the imperative style? > > guix package -i SOME_PACKAGE > > ? > I never use this command. Manifest files and guix shell is how I do most > of my work. Well, that was not the question, I know you can easily write Scheme; I just wondered whether these people's needs could be covered by the existing command line tools. For the example you give, manifest files could clearly by created and edited by a command line tool as outlined above; and "guix shell" already is a command line tool. Maybe we need a concrete "workflow", an example of what people would like to do on the command line, and which they cannot do right now? Andreas
