nix/util/recursive-pkgs.nix
2025-07-21 17:05:02 +10:00

28 lines
570 B
Nix

{ lib }:
let
getFiles =
path:
builtins.filter (i: lib.hasSuffix ".nix" (builtins.toString i)) (
lib.filesystem.listFilesRecursive path
);
getPkgsAttrs =
path:
let
prefix = builtins.toString path;
in
map (
file:
let
name = lib.pipe file [
builtins.toString
(lib.removePrefix (prefix + "/"))
(lib.removeSuffix ".nix")
];
in
{
"${name}" = file;
}
) (getFiles path);
getAllPkgs = path: lib.mergeAttrsList (getPkgsAttrs path);
in
getAllPkgs