{
  inputs,
  lib,
  config,
  self,
  ...
}: {
  options.fleet.overlays = let
    overlayType = lib.mkOptionType {
      name = "nixpkgs-overlay";
      description = "nixpkgs overlay";
      check = lib.isFunction;
      merge = lib.mergeOneOption;
    };
  in
    lib.mkOption {
      description = "Nixpkgs overlays to apply at flake level (not in hosts)";
      type = lib.types.listOf overlayType;
      default = with inputs; [
        agenix.overlays.default
        comma.overlays.default
        nur.overlay
        deadnix.overlays.default
        statix.overlays.default
        nil.overlays.default
        alejandra.overlays.default
        colmena.overlays.default
        (final: _: {
          inherit (disko.packages.${final.system}) disko;
          inherit (self.packages.${final.system}) deploy;
          inherit (llm-workflow-engine.packages.${final.system}) llm-workflow-engine;
        })
      ];
    };

  config.perSystem = {
    system,
    lib,
    pkgs,
    ...
  }: {
    _module.args.pkgs =
      lib.foldl
      (legacyPackages: legacyPackages.extend)
      inputs.nixpkgsUnstable.legacyPackages.${system}
      config.fleet.overlays;

    packages =
      lib.mapAttrs'
      (name: value: {
        inherit name;
        value = pkgs.callPackage "${self}/packages/${name}" {
          pkgsStable = inputs.nixpkgsStable.legacyPackages.${system};
        };
      })
      (lib.filterAttrs
        (_: type: type == "directory")
        (builtins.readDir "${self}/packages"));
  };
}