{ inputs, ... }: {
  generate = { type, system, host }:
    ({
      "nixos" = inputs.nixpkgs.lib.nixosSystem {
        system = system;
        modules = [
          inputs.sops-nix.nixosModules.sops
          ./modules/nixos
          ./systems/${host}
          inputs.home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = { inherit inputs; };
            home-manager.users.sora = {
              imports = [
                ./modules/home
                inputs.nix-colors.homeManagerModule
                inputs.hyprland.homeManagerModules.default
                ./systems/${host}/home.nix
              ];
            };
          }
        ];
      };
      "macos" = inputs.darwin.lib.darwinSystem {
        system = system;
        modules = [
          inputs.sops-nix.nixosModules.sops
          ./systems/${host}
          inputs.home-manager.darwinModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = { inherit inputs; };
            home-manager.users.sora = {
              imports = [
                inputs.nix-colors.homeManagerModule
                inputs.hyprland.homeManagerModules.default
                ./systems/${host}/home.nix
              ];
            };
          }
        ];
      };
      "home" = inputs.home-manager.lib.homeManagerConfiguration {
        modules = [ ./modules/home ./systems/${host}/home.nix ];
      };
      _ = throw "Unsupported system";
    }.${type});
}