fix: autoDir for packages and flat directories
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user