zimoun writes: >> > --8<---------------cut here---------------start------------->8--- >> > (define (make-me-a-package option1 option2) >> > (package >> > …)) >> > --8<---------------cut here---------------end--------------->8--- >> >> The ellipsis is a bit vague here. What is this trying to do? > > What you wrote below. :-) ? > And my opinion is that you described is already possible (more or > less) using 'inherit'. Except the modification of the compiling > options (build-system). The crucial difference is the current approach with inherit /does not compose/. This is where USE flags stand strong because you can tell what happens when both flags X and Y are set, e.g. --8<---------------cut here---------------start------------->8--- (if (and X Y) ; Do something when we have both X and Y activated. ; Else maybe just X, or just Y, or none. ) --8<---------------cut here---------------end--------------->8--- >> The point of declaring the parameters in advance is that it allows the >> user to list all parameters used by a given package. > > I bet that the number of broken packages will increase. Probably. But if we keep the same standard for the default values of the parameters, we would keep the same level of quality. It should be OK. >> - To let the user choose which video player to use. This is a popular >> USE flag on Gentoo (maybe with a different name). > > What I do not understand is: people who used Gentoo and especially USE > flag are saying that it ends with a big mess with broken packages. > Therefore, why does Guix want to reproduce the mess? Because it is extremely powerful: in a simple declaration like "no-X + pulseaudio + python3 + gtk2" you can build /your entire system/, according to the flags you've set, in just one command. Cheers! -- Pierre Neidhardt https://ambrevar.xyz/