!yUrHuDcxUngfTlDbiy:matrix.org

flakelight

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

Load older messages


SenderMessageTime
8 Oct 2025
@niclas:overby.meNiclas Overby Ⓝ *

Is there a reason, that the ./. argument is separate from the following attributeset?

Why this:

  outputs = inputs:
    inputs.flakelight ./. {
      inherit inputs;

And not this:

  outputs = inputs:
    inputs.flakelight {
      inherit inputs;
      src = ./.;

I guess the first is a little shorter, but are there any other reason?

11:43:46
@accelbread:matrix.orgaccelbreadRedacted or Malformed Event15:19:14
@accelbread:matrix.orgaccelbreadI had attempted that syntax initially but it led to a bunch of infinite recursions15:23:32
@accelbread:matrix.orgaccelbreadalso I couldn't make the flake root a default value of src15:24:22
@accelbread:matrix.orgaccelbread its used for src, nixDir, default package description pulled from flake description, loading default inputs fron your flake.lock, preparing the file tree for flake checks, the formatting check, enabling editorconfig support 15:31:40
@zxfsee:matrix.orgzxfsee joined the room.22:31:33
9 Oct 2025
@niclas:overby.meNiclas Overby ⓃIf it is possible, would you change how lib is exposed?09:01:30
@niclas:overby.meNiclas Overby Ⓝ

Yeah, it only seems to work with nixDir and flakelight.editorconfig disabled:

{
  inputs = flakelight.url = "github:accelbread/flakelight";

  outputs =
    inputs@{
      flakelight,
      self,
      ...
    }:

    flakelight self {
      inherit inputs;

      nixDir = null;
      flakelight.editorconfig = false;

      packages.hello = pkgs: pkgs.hello;
    };
}
11:36:07
@niclas:overby.meNiclas Overby Ⓝ *

Yeah, it only seems to work with nixDir and flakelight.editorconfig disabled:

{
  inputs.flakelight.url = "github:accelbread/flakelight";

  outputs =
    inputs@{
      flakelight,
      self,
      ...
    }:

    flakelight self {
      inherit inputs;

      nixDir = null;
      flakelight.editorconfig = false;

      packages.hello = pkgs: pkgs.hello;
    };
}
12:21:26
10 Oct 2025
@accelbread:matrix.orgaccelbreadyea, too easy to make self depend on itself if you use its path04:09:47
13 Oct 2025
@accelbread:matrix.orgaccelbreadyeah I don't think applying modifications to lib makes sense. If enabled, then the value of lib would be different when resolving imports vs config03:17:22
@accelbread:matrix.orgaccelbreadI think it'd be confusing to have lib be different values during different parts of evaluation03:17:56
@niclas:overby.meNiclas Overby Ⓝ

Fair, but it would be nice if Flakelight has a opinionated way to add helper functions, that will be made available everywhere like with packages.

It does not have to be by modifying lib, but I'm not sure what the alternative could be.

09:25:49
22 Oct 2025
@niclas:overby.meNiclas Overby Ⓝ

I have noticed that devShells evaluates all nixosConfigurations, if you refer to checks from outputs:

# devShell.nix
pkgs: pkgs.mkShell {
  packages = [
    outputs.checks.${pkgs.system}.pre-commit-check.enabledPackages
  ];
}
# checks.nix
{
  checks.pre-commit-check = {
    inputs,
    system,
    ...
  }:
    inputs.git-hooks.lib.${system}.run {
      src = ./.;
      hooks = {
        alejandra.enable = true;
        statix.enable = true;
        ruff-format.enable = true;
      };
    };
}
10:54:30
@niclas:overby.meNiclas Overby Ⓝ *

I have noticed that devShells evaluates all nixosConfigurations, if you refer to checks from outputs:

# devShell.nix
pkgs: pkgs.mkShell {
  packages = [
    outputs.checks.${pkgs.system}.pre-commit-check.enabledPackages
  ];
}
# checks.nix
{
  checks.pre-commit-check = {
    inputs,
    system,
    ...
  }:
    inputs.git-hooks.lib.${system}.run {
      src = ./.;
      hooks = {
        alejandra.enable = true;
        statix.enable = true;
        ruff-format.enable = true;
      };
    };
}
10:54:38
@niclas:overby.meNiclas Overby Ⓝflamegraph.svg
Download flamegraph.svg
10:55:30
@niclas:overby.meNiclas Overby ⓃI have made a flamegraph to demonstrate it10:55:44
@niclas:overby.meNiclas Overby Ⓝ

The offending code is in builtinModules/nixosConfigurations.nix:

      checks = foldl recursiveUpdate { } (mapAttrsToList
        (n: v: {
          # Wrapping the drv is needed as computing its name is expensive
          # If not wrapped, it slows down `nix flake show` significantly
          ${v.config.nixpkgs.system}."nixos-${n}" = v.pkgs.runCommand
            "check-nixos-${n}"
            { } "echo ${v.config.system.build.toplevel} > $out";
        })
11:19:10
@niclas:overby.meNiclas Overby Ⓝ *

The offending code is in builtinModules/nixosConfigurations.nix:

      checks = foldl recursiveUpdate { } (mapAttrsToList
        (n: v: {
          # Wrapping the drv is needed as computing its name is expensive
          # If not wrapped, it slows down `nix flake show` significantly
          ${v.config.nixpkgs.system}."nixos-${n}" = v.pkgs.runCommand
            "check-nixos-${n}"
            { } "echo ${v.config.system.build.toplevel} > $out";
        })
        configs);
11:19:36
@accelbread:matrix.orgaccelbreadhmm, i'll take a look16:13:07
@accelbread:matrix.orgaccelbreadmight need to use genAttrs16:14:12
@accelbread:matrix.orgaccelbreadDo you have a flake that reproduces this?17:01:39
@accelbread:matrix.orgaccelbreadI couldn't reproduce the issue with my nixos config at the moment. I pushed 5afd705 which cleans up the logic and slightly reduces the use of the nixos config in evaluating attrs; that may help, but unsure18:13:46
@accelbread:matrix.orgaccelbreadv.config.nixpkgs.system should be the only thing needed from each config, and evaluating just that should be fast18:14:58
@accelbread:matrix.orgaccelbread * <nixos value>.config.nixpkgs.system should be the only thing needed from each config, and evaluating just that should be fast 18:16:20
@accelbread:matrix.orgaccelbread * <nixos value>.config.nixpkgs.system should be the only thing needed from each config, and evaluating just that should be fast; rest should be lazy under evaluating the runCommand script 18:17:02
@accelbread:matrix.orgaccelbreadthough overall, for something like pre-commit, would be better to write a flakelightModule that adds options for the precommit config, generates the preconfig packages, and sets the devShell/checks using those18:27:25
@accelbread:matrix.orgaccelbreadwould make it more reusable and encapsulated18:28:05
@accelbread:matrix.orgaccelbreadupstream repo has flake-parts module; maybe they'd accept a flakelight module18:31:42
23 Oct 2025
@niclas:overby.meNiclas Overby ⓃThe graph looks different, but it still takes substantial longer time to init the devshell, because it loads all the nixosConfigurations. There are quite a lot of nixosConfigrations in the project, which might contribute to why it is slow in my project compared to yours.09:34:44

Show newer messages


Back to Room ListRoom Version: 10