{
  description = "A very basic flake";
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
    disko = {
      url = "github:nix-community/disko/latest";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    home-manager = {
      url = "github:nix-community/home-manager/release-25.11";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs =
    {
      disko,
      home-manager,
      nixpkgs,
      ...
    }:
    let
      system = "x86_64-linux";

      serverModules = [
        disko.nixosModules.disko
      ];

      commonModules = [
        disko.nixosModules.disko
        home-manager.nixosModules.home-manager
        {
          home-manager.useGlobalPkgs = true;
          home-manager.useUserPackages = true;
          home-manager.users.ifrahim = import ./home.nix;
        }
      ];
    in
    {
      nixosConfigurations = {

        # Black Server Configuration
        black = nixpkgs.lib.nixosSystem {
          inherit system;
          modules = serverModules ++ [ ./servers/black/configuration.nix ];
        };

        # Laptop Configuration
        laptop = nixpkgs.lib.nixosSystem {
          inherit system;
          modules = commonModules ++ [ ./laptop/configuration.nix ];
        };

        nvidia = nixpkgs.lib.nixosSystem {
          inherit system;
          modules = commonModules ++ [
            ./nvidia/nvidia.nix
            ./desktop/configuration.nix
          ];
        };
      };
    };
}
