{ inputs, outputs, }: let inherit (inputs) darwin home-manager nixpkgs nixpkgs-darwin ; inherit (nixpkgs) lib; isDarwin = system: builtins.elem "darwin" (builtins.split "-" system); in rec { mkSystem = { system, modules ? [ ], }: lib.nixosSystem { inherit system modules; specialArgs = { inherit inputs outputs; }; }; mkDarwin = { system, modules ? [ ], }: darwin.lib.darwinSystem { inherit system modules; specialArgs = { inherit inputs outputs; }; }; mkHome = { system, modules ? [ ], }: home-manager.lib.homeManagerConfiguration { inherit modules; pkgs = pkgsFor.${system}; extraSpecialArgs = { inherit inputs outputs; isDarwin = isDarwin system; }; }; allSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; eachSystem = f: lib.genAttrs allSystems (system: f pkgsFor.${system}); pkgsFor = lib.genAttrs allSystems ( system: if isDarwin system then import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ outputs.overlays.additions outputs.overlays.modifications outputs.overlays.unstable-packages ]; } else import nixpkgs-darwin { inherit system; config.allowUnfree = true; overlays = [ outputs.overlays.additions outputs.overlays.modifications outputs.overlays.unstable-packages ]; } ); print = text: let json = builtins.toJSON text; in builtins.trace (builtins.fromJSON json) (builtins.fromJSON json); }