> See SRFI-37 in Guileā€™s manual. Yeah, I've already checked it, but it's very brief. I created a simple function to test command-line options, but I'm having the same problems. Here is the function: (define* (foo #:optional arg) (if arg (simple-format #t "Just ~a~%" arg) (simple-format #t "Nothing~%"))) The following version works: (option '("foo") #f #t (lambda (opt name arg result) (foo arg) (exit 0))) # ./pre-inst-env guix-package --foo=42 Just 42 # ./pre-inst-env guix-package --foo Nothing This one doesn't work at all: (option '("foo") #f #t (lambda (opt name arg result) (alist-cons 'foo arg result))) Actually, the above helped me to understand that we want '--roll-back' to behave differently than '--foo'. '--roll-back' shouldn't accept any options at all, but it should somehow get the argument of '--profile'. How can I do it? Nikita