> Yes, use the wonderful ‘define-record-type*’ from (guix utils). This is > what we use for ‘package’, etc. See > , > for details. I attached the draft. (I remember about other issues.) But it doesn't work. These lines rise an error: + (cons (gnu-package-descriptor + (inherit (first state)) + ((eval (match-field str) + (interaction-environment)) str)) (There may be other problems. For instance, it should remove fields' names from 'str' before creating a record.) What do you think about the 'eval' idea? It's used to avoid unnecessary repetition. I'll try to pinpoint the cause later. Though, it will save a lot of time if you tell that the whole idea is bad. Or if you already know the cause of the problem. Also, is it possible to create a default value for a field (like #f)?