| 25 Oct 2025 |
Niclas Overby Ⓝ | Would you still like this? | 13:54:52 |
accelbread | that would help yes | 16:46:19 |
accelbread | In reply to @niclas:overby.me I'm still not sure why the check is needed in the first place? It seems to be a performance footgun with projects with many nixosConfigurations. if you have a nixos configuration, you wouldn't want nix flake check to pass if it didn't build right? same as why other packages are added to checks. though to evaluate what checks are available under checks.${systems} it needs to know the systems of the nixosConfigurations | 16:49:47 |
accelbread | i could add a config to not do that but trying to figure if i can make the calculation cheaper | 16:50:50 |
accelbread | how are you generating the graphs btw? | 17:40:16 |
accelbread | seems passing system to nixosSystem is deprecated, so pushed some updates to use the buildSystem/targetSystem replacements instead | 19:31:57 |
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 |