This adds a --do-not-upgrade option to 'guix package'. One issue is that if you write: guix package -u --do-not-upgrade icecat then this will be interpreted as: guix package -u icecat --do-not-upgrade The reason is that -u is specified as taking an optional argument, and it will take one even if it comes after some other options. We could fix this by specifying that -u/--upgrade does _not_ take an optional argument, instead relying on the 'arg-handler' logic to interpret arguments. The downside is that this would no longer be allowed: guix package --upgrade= instead it would have to be written without the '=', like this: guix package --upgrade What do you think? Anyway, here is my current patch which still has the issue described above, so you must write "guix package -u . --do-not-upgrade icecat". Mark