22 lines
677 B
Nix
22 lines
677 B
Nix
lib:
|
|
|
|
# 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;
|
|
|
|
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.mapAttrs' (
|
|
name: _: lib.nameValuePair (lib.removeSuffix ".nix" name) (import (dir + "/${name}"))
|
|
) files
|
|
// lib.mapAttrs (name: _: import (dir + "/${name}/package.nix")) dirs
|