fix: autoDir for packages and flat directories

This commit is contained in:
2026-03-02 15:30:34 +01:00
parent 2ae02f0441
commit d813060f1e

View File

@@ -1,10 +1,21 @@
lib:
# import package.nix from each subdirectory in dir as attribute set
# auto-discover nix modules from a directory
# - flat .nix files (excluding default.nix) are imported directly
# - subdirectories containing package.nix are imported via package.nix
dir:
let
readDir = builtins.readDir dir;
dirs = lib.attrNames (lib.filterAttrs (_: type: type == "directory") readDir);
packages = lib.filter (name: builtins.pathExists (dir + "/${name}/package.nix")) dirs;
files = lib.filterAttrs (
name: type: type == "regular" && lib.hasSuffix ".nix" name && name != "default.nix"
) readDir;
dirs = lib.filterAttrs (
name: type: type == "directory" && builtins.pathExists (dir + "/${name}/package.nix")
) readDir;
in
lib.genAttrs packages (name: import (dir + "/${name}/package.nix"))
lib.mapAttrs' (
name: _: lib.nameValuePair (lib.removeSuffix ".nix" name) (import (dir + "/${name}"))
) files
// lib.mapAttrs (name: _: import (dir + "/${name}/package.nix")) dirs