Hi all,

Tomas Volf <[email protected]> writes:

One could argue that when looking at

    (let ((services (modify-services ...)))
      (operating-system
        (inherit %base-os)
        (services services)))

it is obvious what it *should* do (and what it looks like it is doing). Yet here we are. So while this change definitely satisfies the latter
part of the goal, I still question alignment to the former.


I ran into almost this exact same situation[1], and found that I couldn’t reconfigure after a recent pull. The fix itself was simple[2], but understanding the problem was not. I’ve heard from another user in the same sort of situation, though apparently their situation involves more complex fixes than mine -- they’re still unable to reconfigure.

It would be very good if the new code *at least* emitted a warning when shadowing an existing binding. This would have made my situation (and the fix) much more obvious.

Alternately, the parent record’s fields could get a prefix when bound, ex. `parent/services' to access the `services' field of the record being inherited from. This would significantly reduce the probability of conflicting bindings, as well as more clearly indicating the source of the value.

 -- Ian

[1]: https://codeberg.org/guix/guix/issues/7391
[2]: https://codeberg.org/ieure/atomized-guix/commit/8e9735bcdf906127aa932b3a5c4faaf295babe43

Reply via email to