| 29 Sep 2025 |
Niclas Overby Ⓝ |  Download image.png | 15:43:15 |
Niclas Overby Ⓝ |  Download image.png | 15:43:32 |
Niclas Overby Ⓝ | withOverlays/lib.nix
# Overlay Flake lib as lib.noverby
(final: prev: {lib = prev.lib.extend (_: _: {noverby = prev.outputs.lib;});})
| 15:44:40 |
Niclas Overby Ⓝ | * withOverlays/lib.nix
# Overlay Flake lib as lib.noverby
(final: prev: {lib = prev.lib.extend (_: _: {noverby = prev.outputs.lib;});})
| 15:44:46 |
Niclas Overby Ⓝ | It does work, if I try to access it in pkgs:
{
pkgs,
...
}: {
# Nix
nix = {
settings = {
max-jobs = pkgs.lib.noverby.add 2 2;
| 15:48:59 |
Niclas Overby Ⓝ | * It does work, if I try to access it in pkgs: (That is only possible in a nixosModule)
{
pkgs,
...
}: {
# Nix
nix = {
settings = {
max-jobs = pkgs.lib.noverby.add 2 2;
| 15:51:50 |
Niclas Overby Ⓝ | * It does work, if I try to access it in pkgs: (That is possible in a nixosModule, and not in nixosConfigurations)
{
pkgs,
...
}: {
# Nix
nix = {
settings = {
max-jobs = pkgs.lib.noverby.add 2 2;
| 15:52:12 |
Niclas Overby Ⓝ | Other than this toy example, the thing I'm trying to do is to add helper functions like mkBaseSystem, mkTestSystem, 'mkCalibSystem', that can be used to generate nixosConfigrations. | 15:57:16 |
Niclas Overby Ⓝ | * Other than this toy example, the thing I'm trying to do is to add helper functions like mkBaseSystem, mkTestSystem, mkCalibSystem, that can be used to generate nixosConfigrations. | 15:57:30 |
accelbread | right, the overlays applies for lib in pkgs; the one for module args is set by the module system. not sure if tge module system allows modifying it | 16:08:13 |
accelbread | but _module.args.noverby would allow you to get { noverby, ... } from modules | 16:09:49 |
accelbread | ill check if itd be possible to modify the module lib (though might be an infinite recursion thing) | 16:10:36 |
accelbread | especially since lib is specialArgs not args | 16:11:09 |
accelbread | ah right, i'd been using self.lib in the past iirc | 16:12:35 |
Niclas Overby Ⓝ | * Other than this toy example, the thing I'm trying to do is to add helper functions like mkBaseSystem, mkTestSystem, mkCalibSystem, that can be used to generate nixosConfigurations. | 16:28:31 |
| 30 Sep 2025 |
Niclas Overby Ⓝ | How does that work? | 05:30:35 |
accelbread | you can set a flakes lib output, and then access it though inputs.self | 05:35:43 |
accelbread | though if you have a lot of flakes, it probably better to have a shared flake dep that exports a lib for everything else to use | 05:36:40 |
Niclas Overby Ⓝ | If you put lib functions into nix/lib, then I guess you cannot currently access module args? | 08:11:27 |
Niclas Overby Ⓝ | * If you put lib functions as standalone nix files into nix/lib, then I guess you cannot currently access module args? | 08:12:17 |
Niclas Overby Ⓝ | E.g | 08:14:31 |
Niclas Overby Ⓝ |  Download image.png | 08:14:32 |
Niclas Overby Ⓝ | You can only access module args, if you create a nix/lib.nix instead? | 08:21:26 |
Niclas Overby Ⓝ | * So you can only access module args, if you create a nix/lib.nix instead? | 11:26:10 |
accelbread | yeah, youd need nix/lib.nix or nix/lib/default.nix | 16:13:02 |
accelbread | lib is an attrset of anything at all so cant add optional args to anything but the root attrset | 16:14:40 |
| 2 Oct 2025 |
Niclas Overby Ⓝ | Did you come to a conclusion for this? | 09:28:05 |
Niclas Overby Ⓝ | Ended up using this, but it would be nice if there was a clean way to extend lib in module args:
_module.args = {
inherit (self.lib) mkSystem mkLocalStagingSystem mkLocalSystem;
};
| 09:43:12 |
Niclas Overby Ⓝ | Where are you supposed to add helper functions similar to mkShell? I noticed that nixpkgs puts it in pkgs/build-support/mkshell, rather than lib. But if I do that, it will break commands like nix flake show:
nix flake show
error: expected a derivation
I cannot put it under legacyPackages either, since Flakelight actually type checks it, and expects it to result in a derivation:
error: A definition for option `legacyPackages' is not of type `nullable function that evaluates to a(n) Nixpkgs package set'. Definition values:
- In `/nix/store/f199yb2qch3qa0wdq9cglg4wnr7cshfw-source/builtinModules/nixDir.nix':
{
mkPackageShell = <function, args: {inputs, lib, pkgs}>;
}
| 10:03:53 |
Niclas Overby Ⓝ | * Where are you supposed to add helper functions similar to mkShell? I noticed that nixpkgs puts it in pkgs/build-support/mkshell, rather than lib. But if I do that, it will break commands like nix flake show:
nix flake show
error: expected a derivation
I cannot put it under legacyPackages either, since Flakelight actually type checks it, and expects it to result in a derivation:
error: A definition for option `legacyPackages' is not of type `nullable function that evaluates to a(n) Nixpkgs package set'. Definition values:
- In `/nix/store/f199yb2qch3qa0wdq9cglg4wnr7cshfw-source/builtinModules/nixDir.nix':
{
mkPackageShell = <function, args: {inputs, lib, pkgs}>;
}
| 10:04:10 |