{ inputs, ... }: with inputs; with nixpkgs.lib; {
  flake.nixosConfigurations = (lists.foldr (name: spec: spec // {
    ${name} = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs = inputs // { inherit inputs; };
      modules = [
        ../global
        ../home/profile.nix
        ../home/user.nix
        ../package
        ./constant.nix
        ./channel.nix
        impermanence.nixosModules.impermanence
        home-manager.nixosModules.home-manager
        catppuccin.nixosModules.catppuccin
        {
          home-manager.useGlobalPkgs = true;
          home-manager.useUserPackages = true;
        }
        lanzaboote.nixosModules.lanzaboote

        ./${name}
        { networking.hostName = name; }
      ];
    };
  }) { }) (pipe ./. [
    builtins.readDir
    (filterAttrs (n: ty: ty == "directory" && builtins.pathExists ./${n}/default.nix))
    (mapAttrsToList (n: _: n))
  ]);
}
