23 Sep 2025 |
Niclas Overby Ⓝ | * I guess the developer's idea is to use the directories to categorize modules.
Your suggestion with using default.nix is the thing I want to minimize and ideally avoid. It is hard to read for users without any Nix experience (I really try to keep the Nix files simple, so they are primarily declarative), and again it is boilerplate, that ideally it could be fully avoided with e.g. the wildcard feature.
| 12:12:51 |
Niclas Overby Ⓝ | * If I could define a function in lib, and access it when setting nixDirAliases, then that could of course work.
But IMHO it would be better, if there was a way to achieve it directly with nixDirAliases like with the wildcard or something else.
| 12:13:49 |
24 Sep 2025 |
Niclas Overby Ⓝ | * I guess the developer's idea is to use the directories to categorize modules.
Your suggestion with using default.nix is the thing I want to minimize and ideally avoid. It is hard to read for users without any Nix experience (I really try to keep the Nix files simple, so they are primarily declarative), and again it is boilerplate, that ideally could be avoided with e.g. the wildcard feature.
| 11:30:28 |
25 Sep 2025 |
accelbread | hmm i'm thinking wildcard should be a lib function somwhere
i dont see one in builtins or nixpkgs lib | 05:25:50 |
accelbread | maybe it would work to have a common nix lib provide a lib glob function?
though using nixDirAliases.nixosModules = lib.pipe ./nixos/modules [ builtins.readDir lib.attrNames (map (d: "nixos/modules/${d}"))] would be less code than pulling in a lib if thats all thats in it | 05:29:41 |
accelbread | could put it in a function like subdirs = path: map (d: "${path}/${d}") (lib.attrNames (builtins.readDir (./. + path))) | 05:33:45 |
Niclas Overby Ⓝ | How can you access lib here?:
nixDirAliases = {
nixosModules = lib.subdirs "nixos/modules"
};
| 13:10:21 |
Niclas Overby Ⓝ | * The idea is to have something that is easy to read for non-Nix native developers.
Compare this:
nixDirAliases = {
nixosModules = [ "nixos/modules/*" ]
};
To this:
nixDirAliases = {
nixosModules = lib.pipe ./nixos/modules [ builtins.readDir lib.attrNames (map (d: "nixos/modules/${d}"))]
};
For how easy it is to read for someone, who has never programmed a ml-like language.
| 13:19:31 |
29 Sep 2025 |
Niclas Overby Ⓝ | Redacted or Malformed Event | 13:05:08 |
Niclas Overby Ⓝ | Redacted or Malformed Event | 13:05:11 |
Niclas Overby Ⓝ | * Is withOverlays not applied in nixosConfigurations?
I have added the function lib.noverby.add to withOverlay , but the function cannot be accessed?
nixosConfigurations/gravitas.nix:
| 13:05:47 |
Niclas Overby Ⓝ | * Is withOverlays not applied in nixosConfigurations?
I have added the function lib.noverby.add to withOverlay , but the function cannot be accessed?
devices/gravitas.nix: (nixosConfigrations has an alias to devices)
| 13:06:28 |
Niclas Overby Ⓝ | Redacted or Malformed Event | 13:06:53 |
Niclas Overby Ⓝ | Redacted or Malformed Event | 13:08:33 |
Niclas Overby Ⓝ | * I can access lib.noverby.add in nixosModules | 13:08:41 |
Niclas Overby Ⓝ | Is it possible to add functions to ModuleArgs.lib ?
I need it to create helper functions for setting up nixosConfigrations . It seems like it cannot be added using withOverlays , is there another approach?
| 13:39:48 |
accelbread | that lib is nixpkgs' so needs withOverlays | 15:33:48 |
accelbread | you could add a new moduleArg for your helpers | 15:34:33 |
accelbread | flakelight puts its helpers in the flakelight module arg and adds it to lib with withOverlays | 15:35:43 |
Niclas Overby Ⓝ | It does not seem to work: | 15:43:14 |
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 |