a) We need to do something regarding guix cli
b) We need to move commands inside "guix package"
b prime) we do not need to move commands inside "guix package" because it's more to type.
c) We need to turn "guix package" options into separate sub-commands
d) We need to handle the fact that some commands operate on store items, derivations, etc.
e) We need to avoid having 20 or something commands in the first level (*)
f) We need separate commands/cli for user and devs
f bis) We need a single "guix" full featured guix command
g) We need a "guix install" alias
h) Do we need to keep the ability add/remove packages in a single txn (* to this I reply we should improve the profile generation manipulation with for instance something like git rebase -i)
i) we must use flags/options/switches to nuance how a given command should be executed
k) we should empower the user aka. one must understand how things works via the cli
So I summed things in the following cli mockup:
xote container attach NAME
xote container init NAME SPEC
xote container start NAME
xote helper download URL
xote helper hash FILE
xote package archive export [-r] PACKAGE
xote package archive import
xote package build PACKAGE
xote package challenge PACKAGE
xote package edit PACKAGE
xote package graph PACKAGE
xote package import IMPORTER ARGS
xote package lint PACKAGE
xote package pack PACKAGE
xote package size PACKAGE
xote package search PACKAGE
xote profile delete-generations
xote profile enter
xote profile init
xote profile install
xote profile leave
xote profile list-generations
xote profile list-installed
xote profile manifest
xote profile rebase
xote profile refresh
xote profile remove
xote profile rollback
xote profile switch-generations
xote store gc
xote system build
xote system container
xote system disk-image
xote system extension-graph
xote system init
xote system reconfigure
xote system refresh
xote system rollback
xote system shepherd-graph
xote system switch-generation
xote system vm
xote system vm-image
- guix environement is gone, because it can be replaced with guix profile
- I think the cli should reflect the underlying inner working but also the usage. For instance, one might argue that containers are just systems (or profiles) but for the user it makes a great difference to have the commands spread as several multiple commands instead of a single command that does everything required.
- There is surely missing commands in the "store" section, input welcome!
- There is two single commands without subcommands called "pull" and "publish". I am not sure where to put them.
Also, I did not look into it too much, but when I try to import guix inside a guile REPL I can't. So my current work is in a fork of guix repository. Is it possible to create a guix project without it being in the guix repository?
PS: the "xote" name comes from quixote.