{
  inputs = {
    nixos-hardware.url = "github:NixOS/nixos-hardware/master";
    chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
    hyprland.url = "github:hyprwm/Hyprland";
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    nur.url = "github:nix-community/NUR";
    pipewire-screenaudio.url = "github:IceDBorn/pipewire-screenaudio";

    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    disko = {
      url = "github:nix-community/disko";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nix-vscode-extensions = {
      url = "github:nix-community/nix-vscode-extensions";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nix-index-database = {
      url = "github:Mic92/nix-index-database";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    alejandra = {
      url = "github:kamadorueda/alejandra/3.0.0";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = {
    self,
    alejandra,
    nix-index-database,
    nixpkgs,
    hyprland,
    chaotic,
    home-manager,
    nur,
    disko,
    nixos-hardware,
    nix-vscode-extensions,
    pipewire-screenaudio,
  } @ inputs: {
    nixosConfigurations = {
      gs66 = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = {inherit inputs;};
        modules = [
          chaotic.nixosModules.default # OUR DEFAULT MODULE
          {
            nixpkgs.config.permittedInsecurePackages = [
              "openssl-1.1.1u"
            ];
          }
          nur.nixosModules.nur
          nix-index-database.nixosModules.nix-index
          {
            environment.systemPackages = [alejandra.defaultPackage.x86_64-linux];
          }
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = {inherit inputs;};
          }
          hyprland.nixosModules.default
          {
            programs.hyprland.enable = true;
            programs.hyprland.nvidiaPatches = true;
            programs.hyprland.xwayland.enable = true;
          }
          ./hosts/gs66/configuration.nix
        ];
      };
      gaminix = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = {inherit inputs;};
        modules = [
          chaotic.nixosModules.default # OUR DEFAULT MODULE
          {
            nixpkgs.config.permittedInsecurePackages = [
              "openssl-1.1.1u"
            ];
          }
          nur.nixosModules.nur
          nix-index-database.nixosModules.nix-index
          {
            environment.systemPackages = [alejandra.defaultPackage.x86_64-linux];
          }
          home-manager.nixosModules.home-manager
          {
            home-manager.useGlobalPkgs = true;
            home-manager.useUserPackages = true;
            home-manager.extraSpecialArgs = {inherit inputs;};
          }
          hyprland.nixosModules.default
          {
            programs.hyprland.enable = true;
            programs.hyprland.nvidiaPatches = true;
            programs.hyprland.xwayland.enable = true;
          }
          ./hosts/gaminix/configuration.nix
        ];
      };
    };
  };
}
