{ inputs, config, lib, username, ... }: let cfg = config.os.core.home-manager; in { imports = [ inputs.home-manager.nixosModules.home-manager ]; options.os.core.home-manager = { enable = lib.mkEnableOption "home Manager configuration"; users = lib.mkOption { default = {}; description = "Attribute set of users and their home-manager configurations"; type = lib.types.attrsOf (lib.types.submodule { options = { path = lib.mkOption { type = lib.types.path; description = "Path to the user's home.nix file"; }; }; }); }; }; config = lib.mkIf cfg.enable { home-manager = { extraSpecialArgs = { inherit inputs username; }; useGlobalPkgs = true; useUserPackages = true; backupFileExtension = "bak"; users = lib.mapAttrs (name: userCfg: { imports = [ userCfg.path ]; }) cfg.users; }; }; }