{
  description = "Nixos configuration for Xeovalyte";

  inputs = {
    nixpkgs.url = "nixpkgs/nixos-24.11";

    nixpkgs-unstable.url = "nixpkgs/nixos-unstable";

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

    nixos-hardware.url = "github:NixOS/nixos-hardware/master";

    nix-colors.url = "github:misterio77/nix-colors";

    stylix.url = "github:danth/stylix/release-24.11";

    nixpkgs.follows = "nixos-cosmic/nixpkgs-stable";

    nixos-cosmic = {
      url = "github:lilyinstarlight/nixos-cosmic";
    };
  };

  outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, home-manager, nix-colors, stylix, nixos-cosmic, ... }:
  let
    system = "x86_64-linux";
    overlay-unstable = final: prev: {
      unstable = import nixpkgs-unstable {
        config.allowUnfree = true;
        localSystem = { inherit system; };
      };
    };
  in 
  {
    nixosConfigurations = {
      ti-clt-lpt01 = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = { inherit inputs; };
        modules = [
          ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })

          inputs.nixos-hardware.nixosModules.framework-13-7040-amd

          ./hosts/ti-clt-lpt01
        ];
      };

      ch-clt-dsk01 = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = { inherit inputs; };
        modules = [
          ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })

          ./hosts/ch-clt-dsk01
        ];
      };

      ti-clt-tbl01 = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = { inherit inputs; };
        modules = [
          ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })

          inputs.nixos-hardware.nixosModules.microsoft-surface-go
          nixos-cosmic.nixosModules.default

          ./hosts/ti-clt-tbl01
        ];
      };

      ti-clt-dsk01 = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        specialArgs = { inherit inputs; };
        modules = [
          ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })

          ./hosts/ti-clt-dsk01
        ];
      };
    };

    homeConfigurations = {
      "xeovalyte@ti-clt-lpt01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs nix-colors; };
        modules = [
          ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })

          ./hosts/ti-clt-lpt01/home.nix
        ];
      };

      "kiiwy@ch-clt-dsk01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs nix-colors; };
        modules = [
          ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })

          ./hosts/ch-clt-dsk01/home.nix
        ];
      };

      "xeovalyte@ti-clt-tbl01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs nix-colors; };
        modules = [
          ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })
      
          ./hosts/ti-clt-tbl01/home.nix
        ];
      };

      "xeovalyte@ti-clt-dsk01" = home-manager.lib.homeManagerConfiguration {
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
        extraSpecialArgs = { inherit inputs nix-colors; };
        modules = [
          ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; })
        
          ./hosts/ti-clt-dsk01/home.nix
        ];
      };
    };
  };
}

