Nice, lib.packagesFromDirectoryRecursive
now supports nested scopes!
packagesFromDirectoryRecursive
transforms a directory tree of packages into a nested attribute set of derivations. You can use it to manage a package set in a similar way to by-name in nixpkgs (without the sharding part). The package files in tree must be suitable for callPackage
.
Subdirectories in the tree result in nested attribute sets. In the following example, packages d
, e
and f
will be in a nested attribute set called my-namespace
.
my-packages
├── a.nix
├── b.nix
├── c
│ ├── my-extra-feature.patch
│ ├── package.nix
│ └── support-definitions.nix
└── my-namespace
├── d.nix
├── e.nix
└── f
└── package.nix
Previously, this would only use one scope (my-packages
), so e
could only depend on d
as my-packages.d
. With the introduction of nested scopes, e
can refer to d
within the same scope directly.
PR: https://github.com/NixOS/nixpkgs/pull/392800
function doc on noogle (which isn't yet updated for the new behavior): https://noogle.dev/f/lib/packagesFromDirectoryRecursive
lib.packagesFromDirectoryRecursive: use explicit recursion, support nested scopes by katexochen · Pull Request #392800 · NixOS/nixpkgs
Supersedes #359984, as the author isn't responding. I squashed in the fixup commits (had to split them up as they wouldn't apply) and resolved merge conflicts with master. Original PR descr...