!wfudwzqQUiJYJnqfSY:nixos.org

NixOS Module System

155 Members
30 Servers

Load older messages


SenderMessageTime
16 May 2025
@h7x4:nani.wtfh7x4 I believe the attrs are merged before being typechecked. I suppose you could try adding a lib.trace inside the typecheck to verify? 20:32:31
@ss:someonex.netSomeoneSerge (UTC+U[-12,12])
trace: { below = "_"; }                                                                                                                                                                                              
trace: { marker_b = "bar"; }                                                                                                                                                                                         
trace: { above = "_"; }                                                                                                                                                                                              
trace: { below = "_"; }                                                                                                                                                                                              
{ foo = { above = "_"; below = "_"; marker_b = "bar"; }; } 

For modules:

    { foo = { above = "_"; }; }
    {
      foo.marker_b = "bar";
    }
    { foo = { below = "_"; }; }

20:37:22
@ss:someonex.netSomeoneSerge (UTC+U[-12,12]) *
trace: { below = "_"; }                                                                                                                                                                                              
trace: { marker_b = "bar"; }                                                                                                                                                                                         
trace: { above = "_"; }                                                                                                                                                                                              
trace: { below = "_"; }                                                                                                                                                                                              
{ foo = { above = "_"; below = "_"; marker_b = "bar"; }; } 

For modules:

    { foo = { above = "_"; }; }
    {
      foo.marker_b = "bar";
    }
    { foo = { below = "_"; }; }

20:37:32
@mattsturg:matrix.orgMatt Sturgeon

This won't support foo = { config,...}: { marker_b = "bar"; }.

Type checking is done before merging, but after resolving mkIf (etc) wrappers.

Type checking is used to determine which type to use for merging.

20:39:18
@h7x4:nani.wtfh7x4Aha, that makes sense 👍️20:41:25
@ss:someonex.netSomeoneSerge (UTC+U[-12,12]) Sounds like __result is least wrong? 20:50:51
@ss:someonex.netSomeoneSerge (UTC+U[-12,12]) * Sounds like __result is the least wrong? 20:50:55
@ss:someonex.netSomeoneSerge (UTC+U[-12,12]) H'm what if freeformTypes are different? attrsOf a and attrsOf b 20:53:42
@mattsturg:matrix.orgMatt SturgeonI believe the freeform type can be conditional on a marker option being defined without infinite recursion.20:58:27
@mattsturg:matrix.orgMatt SturgeonSo long as the marker options are explicitly defined, they are resolved before freeform definitions 20:59:14
@ss:someonex.netSomeoneSerge (UTC+U[-12,12])Not sure I should depend on this detail 😅20:59:19
@mattsturg:matrix.orgMatt Sturgeon* So long as the marker options are explicitly declared, they are resolved before freeform definitions 20:59:26
@mattsturg:matrix.orgMatt Sturgeon freeformType is itself an option (config._module.freeformType), so it's not really an implementation detail 21:00:17

There are no newer messages yet.


Back to Room ListRoom Version: 10