| 25 Oct 2025 |
accelbread | also perf things might depend on which nix is in use; I'm using Lix 2.93.3 at the moment | 19:33:04 |
accelbread | I havent tested this, but heres what i'd do for integrating git-hooks.nix:
{ src, lib, config, ... }: {
options.git-hooks = {
type = lib.types.attrs;
default = { };
};
config = {
withOverlays = [
(final: prev: {
pre-commit-check = final.inputs.git-hooks.lib.${final.system}.run
({ inherit src; } // config.git-hooks);
})
];
checks = pkgs: { inherit (pkgs) pre-commit-hook; };
devShell = { pre-commit-check, ... }: {
inherit (pre-commit-check) shellHook;
packages = pre-commit-check.enabledPackages;
};
};
}
| 20:16:31 |
accelbread | can put that as nix/flakelightModules/git-hooks.nix or w/e and import the module in your flakelight config. (or if you have many repos, put this in your common config one)
Then in a flake you can use it as such:
{
inputs = {
flakelight.url = "github:nix-community/flakelight";
git-hooks.url = "github:cachix/git-hooks.nix";
};
outputs = { flakelight, ... }@inputs: flakelight ./. {
inherit (inputs);
# Pull it from file, outputs.flaklightModules.git-hooks,
# inputs.shared-flake.flakelightModules.git-hooks, or w/e
imports = [ ./git-hooks.nix ];
git-hooks.hooks = {
alejandra.enable = true;
statix.enable = true;
ruff-format.enable = true;
}
};
}
| 20:22:34 |
accelbread | You'd even be able to autoload it as nix/git-hooks.nix:
{
hooks = {
alejandra.enable = true;
statix.enable = true;
ruff-format.enable = true;
};
}
| 20:23:55 |
accelbread | * I havent tested this, but heres what i'd do for integrating git-hooks.nix:
{ src, lib, config, ... }: {
options.git-hooks = {
type = lib.types.attrs;
default = { };
};
config = {
withOverlays = [
(final: prev: {
pre-commit-check = final.inputs.git-hooks.lib.${final.system}.run
({ inherit src; } // config.git-hooks);
})
];
checks = pkgs: { inherit (pkgs) pre-commit-hook; };
devShell = { pre-commit-check, ... }: {
inherit (pre-commit-check) shellHook;
packages = pre-commit-check.enabledPackages;
};
};
}
(note that it also doesnt go through outputs which requires resolving stuff...)
| 20:25:15 |
accelbread | * I havent tested this, but heres what i'd do for integrating git-hooks.nix:
{ src, lib, config, ... }: {
options.git-hooks = {
type = lib.types.attrs;
default = { };
};
config = {
withOverlays = [
(final: prev: {
pre-commit-check = final.inputs.git-hooks.lib.${final.system}.run
({ inherit src; } // config.git-hooks);
})
];
checks = pkgs: { inherit (pkgs) pre-commit-check; };
devShell = { pre-commit-check, ... }: {
inherit (pre-commit-check) shellHook;
packages = pre-commit-check.enabledPackages;
};
};
}
(note that it also doesnt go through outputs which requires resolving stuff...)
| 20:29:16 |
| 27 Oct 2025 |
Niclas Overby Ⓝ | Here is my script:
#!/usr/bin/env nu
# Generate a flamegraph from a nix flake evaluation
# Usage: script.nu <flake-path>
def main [flake_path: string] {
print $"Evaluating flake: ($flake_path)"
# Create temporary directory for profile data
let tmp_dir = (mktemp -d)
let profile_path = ($tmp_dir | path join "nix.profile")
# Run nix eval with profiler output
nix eval --impure --no-eval-cache $flake_path --option eval-profiler flamegraph --option eval-profile-file $profile_path
# Generate flamegraph SVG from profile data
open $profile_path | inferno-flamegraph | save -f flamegraph.svg
print "Flamegraph saved to flamegraph.svg"
}
| 09:52:32 |
Niclas Overby Ⓝ | * Here is my script:
#!/usr/bin/env nu
# Generate a flamegraph from a nix flake evaluation
# Usage: script.nu <flake-path>
def main [flake_path: string] {
print $"Evaluating flake: ($flake_path)"
# Create temporary directory for profile data
let tmp_dir = (mktemp -d)
let profile_path = ($tmp_dir | path join "nix.profile")
# Run nix eval with profiler output
nix eval --impure --no-eval-cache $flake_path --option eval-profiler flamegraph --option eval-profile-file $profile_path
# Generate flamegraph SVG from profile data
open $profile_path | inferno-flamegraph | save -f flamegraph.svg
print "Flamegraph saved to flamegraph.svg"
}
| 09:52:40 |
Niclas Overby Ⓝ | * Here is my Nushell script:
#!/usr/bin/env nu
# Generate a flamegraph from a nix flake evaluation
# Usage: script.nu <flake-path>
def main [flake_path: string] {
print $"Evaluating flake: ($flake_path)"
# Create temporary directory for profile data
let tmp_dir = (mktemp -d)
let profile_path = ($tmp_dir | path join "nix.profile")
# Run nix eval with profiler output
nix eval --impure --no-eval-cache $flake_path --option eval-profiler flamegraph --option eval-profile-file $profile_path
# Generate flamegraph SVG from profile data
open $profile_path | inferno-flamegraph | save -f flamegraph.svg
print "Flamegraph saved to flamegraph.svg"
}
| 09:52:50 |
Niclas Overby Ⓝ | Yeah, I ended up moving pre-commit-check-run to a package, and refer to it from pkgs | 10:05:59 |
accelbread | makes sense. withOverlays does same thing if you dont want to export it from the flake | 18:04:47 |
| 4 Nov 2025 |
lunik1 | Helo! Been a while. I'm having trouble building a Nix configuration since https://github.com/nix-community/flakelight/commit/5afd70555737c62786b69a64980e7bb1c1947956
I have a main nix config flake here https://gitlab.com/lunik1/nix-config but another system config that exists in a separate, private repository but also using flakelight. In that private configuration's flake.nix I have
checks = nix-config.checks;
where nix-config is my main config as an input, but since the above commit evaluation has been failing with
error: The option `checks.<function body>' was accessed but has no value defined. Try setting the option.
| 14:19:10 |
lunik1 | I'll try and put together an MWE, but might be a couple of days | 14:19:53 |
lunik1 | Hello! Been a while. I'm having trouble building a Nix configuration since https://github.com/nix-community/flakelight/commit/5afd70555737c62786b69a64980e7bb1c1947956
I have a main nix config flake here https://gitlab.com/lunik1/nix-config but another system config that exists in a separate, private repository but also using flakelight. In that private configuration's flake.nix I have
checks = nix-config.checks;
where nix-config is my main config as an input, but since the above commit evaluation has been failing with
error: The option `checks.<function body>' was accessed but has no value defined. Try setting the option.
| 14:23:59 |
| 5 Nov 2025 |
accelbread | i'll take a look | 01:26:12 |
| 19 Nov 2025 |
lunik1 | well took me longer than I expected, but I have half a MWE here: https://github.com/lunik1/flakelight-bug-mwe
I've noticed the error stops if I set flakelight.builtinFormatters to true | 01:26:13 |
| 20 Nov 2025 |
accelbread | thanks, ill try it out tomorrow | 06:08:37 |
| 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 |