{ inputs, ... }: { generate = { host }: let syscfg = import ./systems/${host}/cfg.nix; nameValuePair = name: value: { inherit name value; }; in ({ "nixos" = inputs.nixpkgs.lib.nixosSystem { system = syscfg.syscfg.system; modules = [ ./modules/shared/syscfg ./modules/shared/sops ./modules/nixos syscfg ./systems/${host} inputs.sops-nix.nixosModules.sops inputs.home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit inputs; }; home-manager.users = builtins.listToAttrs (map (userConfig: nameValuePair userConfig.username { imports = [ ./modules/shared/syscfg ./modules/shared/colors ./modules/home syscfg { usercfg = userConfig; } inputs.nix-colors.homeManagerModule inputs.hyprland.homeManagerModules.default ]; }) syscfg.syscfg.users); } ]; }; "macos" = inputs.darwin.lib.darwinSystem { system = syscfg.system; modules = [ ./modules/shared/syscfg ./modules/shared/sops syscfg ./systems/${host} inputs.sops-nix.nixosModules.sops inputs.home-manager.darwinModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit inputs; }; home-manager.users = builtins.listToAttrs (map (userConfig: nameValuePair userConfig.username { imports = [ inputs.nix-colors.homeManagerModule inputs.hyprland.homeManagerModules ]; }) syscfg.syscfg.users); } ]; }; "home" = inputs.home-manager.lib.homeManagerConfiguration { modules = [ ./modules/home ]; }; _ = throw "Unsupported system"; }.${syscfg.syscfg.type}); }