let
  inherit (default.inputs.nixos) lib;

  default = (import ./lib/compat).defaultNix;

  ciSystems = [
    "aarch64-linux"
    "x86_64-linux"
  ];

  filterSystems =
    lib.filterAttrs
    (system: _: lib.elem system ciSystems);

  recurseIntoAttrsRecursive = lib.mapAttrs (
    _: v:
      if lib.isAttrs v
      then recurseIntoAttrsRecursive (lib.recurseIntoAttrs v)
      else v
  );

  systemOutputs =
    lib.filterAttrs
    (
      name: set:
        lib.isAttrs set
        && lib.any
        (system: set ? ${system} && name != "legacyPackages")
        ciSystems
    )
    default.outputs;

  ciDrvs = lib.mapAttrs (_: filterSystems) systemOutputs;
in
  (recurseIntoAttrsRecursive ciDrvs) // {shell = import ./shell.nix;}
