fix: autoDir for packages and flat directories
This commit is contained in:
@@ -1,10 +1,21 @@
|
|||||||
lib:
|
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:
|
dir:
|
||||||
let
|
let
|
||||||
readDir = builtins.readDir dir;
|
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
|
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