{
  lib,
  inputs,
  flake-parts-lib,
  self,
  ...
}: let
  inherit (self) outputs;
  inherit (inputs) deploy-rs;
  mkDeployNode = {
    hostName,
    unixName ? "deploy",
    system ? "x86_64-linux",
    sshName ? hostName,
  }: {
    "${hostName}" = {
      hostname = "${sshName}";
      sshUser = "${unixName}";
      interactiveSudo = true;
      profiles = {
        system = {
          user = "root";
          path =
            deploy-rs.lib."${system}".activate.nixos
            outputs.nixosConfigurations."${hostName}";
        };
      };
    };
  };
in {
  options = {
    flake = flake-parts-lib.mkSubmoduleOptions {
      deploy = lib.mkOption {
        type = lib.types.lazyAttrsOf lib.types.raw;
      };
    };
  };
  config = {
    flake.deploy.nodes =
      [
        "Cape"
        "Akun"
      ]
      |> map (
        hostName:
          mkDeployNode {
            inherit hostName;
          }
      )
      |> lib.foldr (a: b: a // b) {};
  };
}
