!yUrHuDcxUngfTlDbiy:matrix.org

flakelight

38 Members
https://github.com/nix-community/flakelight12 Servers

Load older messages


SenderMessageTime
19 Sep 2025
@niclas:overby.meNiclas Overby ⓃMy motivation for using Flakelight is to reduce boilerplate from flakes and importing Nix files, so in that sense it does not work :)08:35:23
@niclas:overby.meNiclas Overby Ⓝ Another design decision, I'm curious about, is whether all directories should be treated as attribute sets.
E.g when creating withOverlays directory, it should actually result in a list rather than an attribute set.
08:38:37
@niclas:overby.meNiclas Overby Ⓝimage.png
Download image.png
08:38:39
@niclas:overby.meNiclas Overby ⓃThis layout will of course not work, since with-overlays should result in a list rather than an attribute set. Could it be possible to change Flakelight, so you can decide whether a directory should be treated as a list, rather than an attribute set?08:41:03
@niclas:overby.meNiclas Overby Ⓝ * Another design decision, I'm curious about, is whether all directories should be treated as attribute sets.
E.g when creating withOverlays directory, it expects a list rather than an attribute set.
10:55:55
@niclas:overby.meNiclas Overby Ⓝ* This layout will not work, since with-overlays should result in a list rather than an attribute set. Could it be possible to change Flakelight, so you can decide whether a directory should be treated as a list, rather than an attribute set?10:56:12
@accelbread:matrix.orgaccelbreadhmm, i'll have to look into it; not sure if the module system type has enough info17:32:31
@accelbread:matrix.orgaccelbreador could be another option like for which should be imported as paths17:34:34
@accelbread:matrix.orgaccelbreadmaybe i can extend the option module with some sort of "import type"17:36:27
@niclas:overby.meNiclas Overby Ⓝ
In reply to @accelbread:matrix.org
maybe i can extend the option module with some sort of "import type"
Yeah would be awesome!
20:16:28
@niclas:overby.meNiclas Overby Ⓝ *

This layout will not work, since with-overlays should result in a list rather than an attribute set.

Would it be possible to change Flakelight, so you can decide whether a directory should be treated as a list, rather than an attribute set?

20:17:30
20 Sep 2025
@accelbread:matrix.orgaccelbreadhttps://github.com/nix-community/flakelight/commit/0326f2bf133b7f83ded8044f11b609ee96e83082 nixDirAliases are now merged when loading07:51:50
@niclas:overby.meNiclas Overby Ⓝ Wow, thank you so much! 18:31:06
@accelbread:matrix.orgaccelbreadhttps://github.com/nix-community/flakelight/commit/3f5617f2ff25b9349e11312dd84bc9aaaebb7194 List-type options can now be loaded as well21:01:51
21 Sep 2025
@niclas:overby.meNiclas Overby ⓃGreat! It seems to work wonderfully, when importing overlays that does not need inputs. But how can you handle with overlays like this?07:24:54
@niclas:overby.meNiclas Overby Ⓝimage.png
Download image.png
07:24:55
@niclas:overby.meNiclas Overby Ⓝ *

Great! It seems to work wonderfully, when importing overlays that does not need inputs.

But how can you handle with overlays that require inputs like this?

13:24:12
@accelbread:matrix.orgaccelbread

hmm, at that point its a file expected to be an overlay. I don't know of a way to distinguish moduleArgs -> overlay from overlay. After one application, both are functions, and after two applications the overlay needs to use the params, so I need the real args.

I guess it can be deffered to overlay evaluation time like i did in bundlers. I could potentially make that work but even then, the preferred way to write that would be:

final: prev: (import prev.inputs.rust-overlay) final prev

that should already work.
I'll see if i can make the proposed y
syntax work though

17:00:10
@accelbread:matrix.orgaccelbread* hmm, at that point its a file expected to be an overlay. I don't know of a way to distinguish moduleArgs -> overlay from overlay. After one application, both are functions, and after two applications the overlay needs to use the params, so I need the real args. I guess it can be deffered to overlay evaluation time like i did in bundlers. I could potentially make that work but even then, the preferred way to write that would be: final: prev: (import prev.inputs.rust-overlay) final prev that should already work. I'll see if i can make the proposed syntax work though 17:02:22
@accelbread:matrix.orgaccelbread* hmm, at that point its a file expected to be an overlay. I don't know of a way to distinguish moduleArgs -> overlay from overlay. After one application, both are functions, and after two applications the overlay needs to use the params, so I need the real args. I guess it can be deffered to overlay evaluation time like i did in bundlers. I could potentially make that work but even then, the preferred way to write that would be: ```nix final: prev: (import prev.inputs.rust-overlay) final prev ``` that should already work. I'll see if i can make the proposed syntax work though17:02:42
22 Sep 2025
@niclas:overby.meNiclas Overby ⓃOh great, I didn't know you could do that. :) It would probably still be good to support the proposed syntax, as it is closer to how you usually setup overlays in the main flake.nix09:05:04
@niclas:overby.meNiclas Overby Ⓝ Is there any way to achieve this with nixDirAliases? (With or without setting the right side of the alias as a string) 09:09:31
@niclas:overby.meNiclas Overby Ⓝimage.png
Download image.png
09:09:33
@niclas:overby.meNiclas Overby ⓃI apologize for the frequent change requests! 😅 I'm currently porting numerous repositories to Flakelight, and since developers configure flakes in so many different ways, it's challenging to gradually adopt Flakelight without implementing some of these suggested changes.09:15:16
@niclas:overby.meNiclas Overby Ⓝ* I apologize for the frequent change requests! 😅 I'm currently porting numerous repositories to Flakelight, and since developers configure flakes in so many different ways, it's challenging to gradually adopt Flakelight without implementing some of these suggested changes. (Or moving files around in the repositories, which the developers are not too happy about.)09:33:31
@niclas:overby.meNiclas Overby Ⓝ

Yet another idea. Supporting wildcards in the alias like this:

nixDirAliases = {
  nixosModules = [ "nixos/modules/*"]
};

So you could support the layout:

13:33:00
@niclas:overby.meNiclas Overby Ⓝimage.png
Download image.png
13:33:01
23 Sep 2025
@accelbread:matrix.orgaccelbread

The right side can be a path, yes; problem is the left side which doesn't support nesting.
I was considering having it recurse, but even then not sure if that would work since the key is not a concrete option.

for that you could write (assuming the dirs are dirs you want to load as attrs):

devShells = {
  ansible = flakelight.importDir "ansible/nix";
  autotest = flakelight.importDir "autotest/nix";
  dbusmock = flakelight.importDir "dbus-mock/nix";
};

or as I'd more likely write:

devShells = lib.genAttrs [ "ansible" "autotest" "dbus-mock" ] (n: flakelight.importDir "${n}/nix";
03:30:37
@accelbread:matrix.orgaccelbread *

The right side can be a path, yes; problem is the left side which doesn't support nesting.
I was considering having it recurse, but even then not sure if that would work since the key is not a concrete option.

for that you could write (assuming the dirs are dirs you want to load as attrs):

devShells = {
  ansible = flakelight.importDir "ansible/nix";
  autotest = flakelight.importDir "autotest/nix";
  dbusmock = flakelight.importDir "dbus-mock/nix";
};

or as I'd more likely write:

devShells = lib.genAttrs [ "ansible" "autotest" "dbus-mock" ] (n: flakelight.importDir "${n}/nix");
03:32:02
@accelbread:matrix.orgaccelbread *

The right side can be a path, yes; problem is the left side which doesn't support nesting.
I was considering having it recurse, but even then not sure if that would work since the key is not a concrete option.

for that you could write (assuming the dirs are dirs you want to load as attrs):

devShells = {
  ansible = flakelight.importDir "ansible/nix";
  autotest = flakelight.importDir "autotest/nix";
  dbusmock = flakelight.importDir "dbus-mock/nix";
};

or as I'd more likely write:

devShells = lib.genAttrs
  [ "ansible" "autotest" "dbus-mock" ]
  (n: flakelight.importDir "${n}/nix");
03:33:36

Show newer messages


Back to Room ListRoom Version: 10