Summary Files Commits Branches @commit @diff @stats
path: root / autoconfig.nix
diff options
context:
space:
mode:
1 files changed, 17 insertions, 6 deletions
-rw-r--r--autoconfig.nix23
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