I started writing the macro that chooses between 'glibc/linux' and 'glibc/hurd' so I added #:export (glibc) at defined modules, renamed glibc to glibc/linux and then I added (define (glibc-for-target target) "Return the glibc for TARGET, glibc/linux for a linux host or glibc/hurd for a hurd host" (match target ("i686-pc-gnu" glibc/hurd) (_ glibc/linux))) (define-syntax glibc (identifier-syntax (glibc-for-target (%current-target-system)))) Is my approach right? Because I am getting the error gnu/packages/base.scm:772:3: In procedure #: gnu/packages/base.scm:772:3: In procedure struct-ref: Wrong type argument in position 1 (expecting struct): # when doing ./pre-inst-env guile -c '(use-modules (gnu packages base))' Will the recipes inside base.scm, that inherit from glibc, automatically inherit from the new one? Manolis