{ config, lib, pkgs, ... }: with builtins; let userModules = let userDir = readDir ./.; filter = name: kind: name != "default.nix" && kind != "directory"; in lib.filterAttrs filter userDir; import' = name: lib.mkIf config.c3d2.users.${name} (import (./. + "/${name}.nix") { inherit config lib pkgs; }); userNames = let f = replaceStrings [ ".nix" ] [ "" ]; in map f (attrNames userModules); in { options.c3d2.users = let f = name: { inherit name; value = lib.mkOption { type = lib.types.bool; default = false; }; }; in listToAttrs (map f userNames); config = lib.mkMerge (map import' userNames); }