dream2nix/misc/benchmarks/builtins-derivation-modules-vs-pkg-func.nix

63 lines
1.6 KiB
Nix

{dream2nixSource ? ../..}: let
dream2nix = import dream2nixSource;
nixpkgs = import dream2nix.inputs.nixpkgs {};
lib = nixpkgs.lib;
_callModule = module:
nixpkgs.lib.evalModules {
specialArgs.dream2nix = dream2nix;
specialArgs.packageSets.nixpkgs = nixpkgs;
modules = [module dream2nix.modules.drv-parts.core];
};
# like callPackage for modules
callModule = module: (_callModule module).config.public;
numPkgs = lib.toInt (builtins.getEnv "NUM_PKGS");
numVars = lib.toInt (builtins.getEnv "NUM_VARS");
pkg-funcs = lib.genAttrs (map toString (lib.range 0 numPkgs)) (
num:
derivation (
{
name = "hello-${num}";
version = "2.12.1";
system = "x86_64-linux";
builder = "/bin/sh";
args = ["sh" "-c" "echo hello-${num} > $out"];
}
# generate env variables
// (
lib.genAttrs (map toString (lib.range 0 numVars)) (
num: "value-${num}"
)
)
)
);
modules = lib.genAttrs (map toString (lib.range 0 numPkgs)) (
num:
callModule {
imports = [
dream2nix.modules.drv-parts.builtins-derivation
];
name = "hello-${num}";
version = "2.12.1";
builtins-derivation = {
system = "x86_64-linux";
builder = "/bin/sh";
args = ["sh" "-c" "echo hello-${num} > $out"];
};
# generate env variables
env = lib.genAttrs (map toString (lib.range 0 numVars)) (
num: "value-${num}"
);
}
);
in {
inherit
pkg-funcs
modules
;
}