{config}: let
  inherit (config) lib;

  doubles = lib.systems.doubles.all;

  packages = builtins.removeAttrs config.packages ["cross"];
in {
  includes = [
    ./foundation
    ./aux/a.nix
    ./aux/b.nix
  ];

  options = {
    packages = lib.options.create {
      description = "The package set.";
      type = lib.types.submodule {
        freeform = lib.types.packages;

        options.cross = lib.attrs.generate doubles (
          system:
            lib.options.create {
              description = "The cross-compiled package set for the ${system} target.";
              type = lib.types.packages;
              default = {};
            }
        );
      };
    };

    preferences.packages = {
      version = lib.options.create {
        description = "The preferred package version when using aliases.";
        type = lib.types.enum [
          "latest"
          "stable"
        ];
        default.value = "latest";
      };
    };
  };

  config.packages.cross = lib.attrs.generate doubles (
    system:
      builtins.mapAttrs (
        namespace:
          builtins.mapAttrs (
            name: alias: let
              setHost = package:
                package;
              # if package != {}
              # then
              #   (package.extend (
              #     {config}: {
              #       config = {
              #         platform = {
              #           host = lib.modules.overrides.force system;
              #           target = lib.modules.overrides.default system;
              #         };

              #         deps = {
              #           build = {
              #             only = setHost package.deps.build.only;
              #             build = setHost package.deps.build.build;
              #             host = setHost package.deps.build.host;
              #             target = setHost package.deps.build.target;
              #           };
              #           host = {
              #             only = setHost package.deps.host.only;
              #             host = setHost package.deps.host.host;
              #             target = setHost package.deps.host.target;
              #           };
              #           target = {
              #             only = setHost package.deps.target.only;
              #             target = setHost package.deps.target.target;
              #           };
              #         };
              #       };
              #     }
              #   ))
              #   .config
              # else package;

              updated =
                alias
                // {
                  versions = builtins.mapAttrs (version: package: setHost package) alias.versions;
                };
            in
              updated
          )
      )
      packages
  );
}