Héllo, This is a reply to a previous conversation that was started last year http://lists.gnu.org/archive/html/guix-devel/2016-04/msg00724.html
To help you avoid the need to read the above long thread here is summary: 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 publish xote pull 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 In particular: - 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? Feedback welcome! PS: the "xote" name comes from quixote.