| 1 Mar 2026 |
accelbread | Huh, overlays are applying properly. Its just the lib attr that isnt working | 10:52:18 |
accelbread | home-manager is doing something weird with lib | 10:52:35 |
accelbread | --- a/flake.nix
+++ b/flake.nix
@@ -24,7 +24,7 @@
];
withOverlays = [
- (self: super: { lib = super.lib.recursiveUpdate super.lib { lunik1.myTrue = true; }; })
+ (self: super: { lib = super.lib.extend (final: prev: { lunik1.myTrue = true; }); })
];
}
);
lunik1: with above change it works. Home manager uses extend to add stuff to lib. recursiveUpdate doesnt update the extend function so changes get lost with home-manager's extension
| 11:29:36 |
accelbread | I could put a safeguard in flakelight that fixes up extend on lib before passing to home-manager, hmm | 11:31:09 |
accelbread | though need to see if that could break stuff | 11:31:27 |
lunik1 | could just warn abut it for now if that's a concern? | 20:39:19 |
lunik1 | and thanks! | 20:39:26 |
lunik1 | A function that applies patches onto the nixpkgs library. Usage is discouraged for most scenarios.
🙃 | 20:43:23 |
lunik1 | Unfortunately, using extends does not seem to compose well. Setting withOverlays to
withOverlays = [
(self: super: { lib = super.lib.extend (self: super: { lunik1.myTrue = true; }); })
(self: super: { lib = super.lib.extend (self: super: { lunik1.myOtherTrue = true; }); })
];
means my configurations can no longer see myTrue. | 21:03:34 |
lunik1 | Unfortunately, using extends does not seem to compose well. Setting withOverlays to
withOverlays = [
(self: super: { lib = super.lib.extend (self: super: { lunik1.myTrue = true; }); })
(self: super: { lib = super.lib.extend (self: super: { lunik1.myOtherTrue = true; }); })
];
means my configurations can no longer see myTrue. | 21:03:42 |
| 2 Mar 2026 |
accelbread | yeah, extend is just applying an overlay, so the second one is replacing the whole lunik1 attr | 00:00:35 |
accelbread | you'd need to do the merging thing inside of the lib overlay | 00:01:35 |
accelbread | probably discouraged since nested overlays is annoying. but home-manager is using it | 00:02:59 |
accelbread | Not sure if warning would be possible; would need to detect lib was modified without extend | 00:03:29 |
lunik1 | is this just the wrong way to pass common functions to all my system/home configurations? | 16:40:19 |
| 3 Mar 2026 |
accelbread | yeah, modifying lib is a bit of a minefield so I usually add my own attr.
You could either add your own personal lib attr to packages, or use a module to make it a module argument for nixos/home configs | 03:26:41 |
| 4 Mar 2026 |
accelbread | by the way, I'll be at SCaLE if anyones there and wants to say hi | 09:08:07 |
| 8 Aug 2025 |
| 0x4A6F joined the room. | 07:02:20 |
| 14 Sep 2025 |
| Emma [it/its] joined the room. | 08:39:50 |
| 15 Sep 2025 |
| @bestlem:matrix.org left the room. | 10:22:07 |
| 18 Sep 2025 |
Niclas Overby Ⓝ |  Download image.png | 10:21:01 |
Niclas Overby Ⓝ | Hi accelbread ! Have you considered supporting something like this in Flakelight, so that input overlays can be moved to the withOverlays folder? | 10:22:56 |
Niclas Overby Ⓝ | And actually the same for lib, so you can use pkgs in lib | 10:25:48 |
Niclas Overby Ⓝ | * And actually the same for lib, so you can use pkgs in the lib folder | 10:27:02 |
accelbread | that should already work, right? | 14:36:21 |
Niclas Overby Ⓝ | It seems to cause an infinite recursion | 14:39:24 |
Niclas Overby Ⓝ |  Download image.png | 14:39:26 |
accelbread | Ah, I see. I'll take a look | 14:41:40 |
accelbread | interestingly, something like the following in nix/withOverlays/default.nix works:
final: prev: (prev.lib.composeManyExtensions [
prev.inputs.nixgl.overlays.default
prev.inputs.emacs-overlay.overlays.package
prev.inputs.self.overlays.overrides
prev.inputs.self.overlays.lix
]) final prev
So computing the module arguments is triggering evaluation of withOverlays... hmm
| 15:10:09 |
Niclas Overby Ⓝ | Does it make sense that this is supported?: (How does Flakelight know whether it is an overlay or a function to setup multiple overlays, like in my example ?)
withOverlays = overlay;
Shouldn't it only support?:
withOverlays = [overlay, ...];
| 15:18:28 |