{ lib, flake-parts-lib, moduleLocation, ... }: let inherit (lib) toString mapAttrs mkOption types; in { options = { flake = flake-parts-lib.mkSubmoduleOptions { homeConfigurations = mkOption { type = types.lazyAttrsOf types.deferredModule; default = { }; description = '' Instantiated Home Manager configurations. `homeConfigurations` is for specific installations. If you want to expose reusable configurations, add them to `homeModules` in the form of modules, so that you can reference them in this or another flake's `homeConfigurations`. ''; }; homeManagerModules = mkOption { type = types.lazyAttrsOf types.unspecified; default = { }; apply = mapAttrs (k: v: { _class = "homeManager"; _file = "${toString moduleLocation}#homeManagerModules.${k}"; imports = [ v ]; }); description = '' Home Manager modules. You may use this for reusable pieces of configuration, service modules, etc. ''; }; }; }; }