{
  description = "Homelab";

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

  outputs =
    inputs@{
      nixpkgs,
      disko,
      ...
    }:
    let
      nodes = [
        {
          name = "kube";
          architecture = "x86_64-linux";
        }
      ];
      systems = [ "x86_64-linux" ];
      forAllSystems =
        f:
        nixpkgs.lib.genAttrs systems (
          system:
          f {
            inherit system;
            pkgs = nixpkgs.legacyPackages.${system};
          }
        );
    in
    {
      nixosConfigurations = builtins.listToAttrs (
        map (node: {
          name = node.name;
          value = nixpkgs.lib.nixosSystem {
            system = node.architecture;
            specialArgs = {
              meta = {
                hostname = node.name;
              };
              inherit inputs;
            };
            modules = [
              {
                networking.firewall.enable = false;
                nix.settings.experimental-features = [
                  "nix-command"
                  "flakes"
                ];
              }
              disko.nixosModules.disko
              ../modules/keys.nix
              ./nodes/${node.name}/configuration.nix
              ./nodes/${node.name}/hardware-configuration.nix
            ];
          };
        }) nodes
      );
      devShells = forAllSystems (
        { system, pkgs }:
        {
          default = pkgs.mkShell {
            buildInputs = with pkgs; [
              openssl
              pkgconf
            ];
          };
        }
      );
    };
}
