{ lib, inputs, darwin-modules, home-modules ? [], myvars, system, genSpecialArgs, specialArgs ? (genSpecialArgs system), ... }: let inherit (inputs) nixpkgs-darwin home-manager nix-darwin; in nix-darwin.lib.darwinSystem { inherit system specialArgs; modules = darwin-modules ++ [ ({lib, ...}: { nixpkgs.pkgs = import nixpkgs-darwin { inherit system; # refer the `system` parameter form outer scope recursively # To use chrome, we need to allow the installation of non-free software config.allowUnfree = true; }; }) ] ++ ( lib.optionals ((lib.lists.length home-modules) > 0) [ home-manager.darwinModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.backupFileExtension = "home-manager.backup"; home-manager.extraSpecialArgs = specialArgs; home-manager.users."${myvars.username}".imports = home-modules; } ] ); }