diff options
1 files changed, 17 insertions, 6 deletions
| -rw-r--r-- | autoconfig.nix | 23 |
diff --git a/autoconfig.nix b/autoconfig.nix index 0851514..5da9c3a 100644 --- a/autoconfig.nix +++ b/autoconfig.nix @@ -10,12 +10,23 @@ in { inherit (import ./machines/${dir}/sysidentity.nix) sysidentity; package-modules = - lib.mapAttrsToList - (_: module: module) - (lib.filterAttrs - (name: _: - (lib.hasInfix "_" name) -> (lib.hasPrefix (sysidentity.type + "_") name)) - (import ./packages)); + let + listget = attrname: + if sysidentity ? ${attrname} + then map + (v: ./modules + ("/" + v + (if lib.hasSuffix ".nix" v then "" else ".nix"))) + sysidentity.${attrname} + else []; + havelist = listget "have"; + droplist = listget "drop"; + modulelist = + if (sysidentity ? defaultempty) && sysidentity.defaultempty + then [] + else lib.mapAttrsToList + (name: _: ./modules + ("/" + name)) + (lib.filterAttrs (_: type: type == "regular") (builtins.readDir ./modules)); + in + lib.subtractLists droplist (havelist ++ modulelist); inputs-overlays = lib.mapAttrs |
