I had give a similar example at
https://codeberg.org/guix/guix/pulls/6955#issuecomment-11367397

Unfortunately, since I didn't elaborate futhur, it wasn't taken
seriously at that time.

For me, typing a few more characters, like (record-field-name
<parent-record>) isn't such a bad thing. But introducing such syntax
sugar will increas the understanding cost of Guxi record (especially
this part is not very well-documented), and (possibly) break 3rd-party
code.

Tomas Volf <[email protected]> writes:

> Tomas Volf <[email protected]> writes:
>
>> Ludovic Courtès <[email protected]> writes:
>>>
>>> Could you try your config/channels/code with this new feature and see if
>>> you stumble upon any issue?
>>
>> I am building right now, and will see whether everything works.
>
> So, update, one system failed to build.  So much for my careful review
> of the configuration. :/
>
> --8<---------------cut here---------------start------------->8---
> (define %system
>   (let* ((os (vpsfree-system #:name fact/name))
>          (services
>           (append
>            (list
>             (simple-service 'f-allow-http-s nftables-service-type
>                             (nftables-extension
>                              (rule "tcp dport { 80, 443 } accept"))))
>            more-services
>            (operating-system-user-services os))))
>     (operating-system
>       (inherit os)
>
>       (users (cons (user-account (name "test")
>                                  (group "test")
>                                  (uid 1111))
>                    (operating-system-users os)))
>
>       (groups (cons (user-group (name "test")
>                                 (id 1111))
>                     (operating-system-groups os)))
>
>       (services services))))
> --8<---------------cut here---------------end--------------->8---
>
> With the descriptive error of
>
>     guix system: error: service 'ssh-daemon' requires 'networking', which is 
> not provided by any service
>
> Fixed by renaming `services' to `%services'.
>
> Oh, but now I see that other systems did build (not sure why), but will
> suffer some issues due to pattern of
>
>     (define (do-stuff-with-system os ..)
>       (let ((services ...))
>         (operating-system
>           (inherit os)
>           (services services))))
>
> that I use all over and overlooked initially.  Which now means something
> else.  Well, I will try the upgrade again next weekend, this time with
> more care.
>
> It is bit sad this was not introduced as `inherit*' instead of changing
> the meaning of `inherit'.
>
> Tomas

-- 
Retrieve my PGP public key:
执行下列命令以获取我的 PGP 公有密钥:

  gpg --recv-keys B3EBC086AB0EBC0F45E0B4D433DB374BCEE4D9DC

Zihao / 閱卜錄
Date: Mon, 23 Mar 2026 03:02:25 +0800

Attachment: signature.asc
Description: PGP signature

Reply via email to