| 5 Jun 2026 |
zoƫ (@blokyk) | well, i'll try to figure out how to make it work with the non-merging merge; thanks! | 15:07:39 |
Matt Sturgeon | For a similar example, I had this abomination when trying to extend a submodule's merge function earlier today. | 15:07:46 |
Matt Sturgeon | (aside: maybe it'd make sense for submoduleWith to accept an apply function, similar to an option's apply?) | 15:08:31 |
llakala | i have this diff to lib/modules.nix, but somehow this is causing the manual to fail to build:
diff --git a/lib/modules.nix b/lib/modules.nix
index 8c397caf7012..6c70a3ed8587 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -305,7 +305,7 @@ let
recursiveUpdate freeformConfig declaredConfig;
checkUnmatched =
- if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [ ] then
+ if merged.unmatchedDefns != [ ] && config._module.check && config._module.freeformType == null then
let
firstDef = head merged.unmatchedDefns;
baseMsg =
| 15:22:01 |
llakala | anyone have an idea why? | 15:23:01 |
llakala | logs are here | 15:23:08 |
llakala | adding some tracing, putting _module.check first fixes the error - but it loses the stats gain | 15:26:44 |
Matt Sturgeon | * aside: maybe it'd make sense for submoduleWith to accept an apply function, similar to an option's apply? EDIT: https://github.com/NixOS/nixpkgs/pull/528474 | 15:32:53 |
hsjobeki | If i had to guess, if you evaluate unmatchedDefns that changes lazyness | 15:34:35 |
Matt Sturgeon | Pretty sure config._module.check is first on purpose, to short-circuit non-lazy eval | 15:34:36 |
hsjobeki | In the new line you evaluate unmachtedDefns eagerly, where it was "lazy" before | 15:35:23 |
llakala | yeah i concur - i guess that's non-lazy lists for you | 15:35:42 |
hsjobeki | Why did you want to change the order here? | 15:36:44 |
hsjobeki | The logik was if !config._module.check we can short circuit | 15:37:27 |
hsjobeki | * The logic was if !config._module.check we can short circuit | 15:37:30 |
hsjobeki | Same for freeformType | 15:37:42 |
llakala | reasoning was that it's almost always empty | 15:37:57 |
hsjobeki | We dont need to check unmatchedDefns if either of those is set. | 15:37:58 |
llakala | and for submodules it has a big stats difference | 15:38:07 |
llakala | {
"attrset": {
"lookups": "-3.82%",
"merges": "-2.8%",
"mergeCopies": "-0.53%"
},
"list": {
"concats": "-0.95%"
},
"parser": {
"expressions": null
},
"memory": {
"envs": "-1.79%",
"list": "-0.81%",
"sets": "-1.08%",
"symbols": null,
"values": "-1.48%",
"total": "-1.32%"
},
"speed": {
"primops": "-2.01%",
"functionCalls": "-1.85%",
"thunksMade": "-2.1%",
"thunksAvoided": "-1.69%"
}
}
| 15:38:18 |
llakala | * {
"attrset": {
"lookups": "-3.82%",
"merges": "-2.8%",
"mergeCopies": "-0.53%"
},
"list": {
"concats": "-0.95%"
},
"parser": {
"expressions": null
},
"memory": {
"envs": "-1.79%",
"list": "-0.81%",
"sets": "-1.08%",
"symbols": null,
"values": "-1.48%",
"total": "-1.32%"
},
"speed": {
"primops": "-2.01%",
"functionCalls": "-1.85%",
"thunksMade": "-2.1%",
"thunksAvoided": "-1.69%"
}
}
| 15:38:27 |
hsjobeki | Hm then it might be worth tracking down | 15:38:34 |
llakala | ~~a better fix would be to stop using submodules so much, but the record PR hasn't seen much movement~~ | 15:39:00 |
llakala | * ~a better fix would be to stop using submodules so much, but the record PR hasn't seen much movement~ | 15:39:05 |
llakala | ugh does matrix not have slashthrough | 15:39:13 |
hexa | it does | 15:39:35 |
hexa | double ~ | 15:39:40 |
llakala |  Download image.png | 15:39:42 |
llakala | tried that | 15:39:47 |
llakala | ~~test~~ | 15:39:57 |