From d813060f1e21b2b959017095b7e7c14270b85ea9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Jane=C5=BEi=C4=8D?= Date: Mon, 2 Mar 2026 15:30:34 +0100 Subject: [PATCH] fix: autoDir for packages and flat directories --- lib/autoDir.nix | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/autoDir.nix b/lib/autoDir.nix index e6ec13b..9b5a50d 100644 --- a/lib/autoDir.nix +++ b/lib/autoDir.nix @@ -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