{
  self,
  nixpkgs,
  deploy-rs,
  ...
}:
let
  mkDeploy =
    hostName:
    let
      inherit (self.hosts.${hostName})
        type
        address
        system
        sshUser
        ;
      pkgs = import nixpkgs { inherit system; };
      deployPkgs = import nixpkgs {
        inherit system;
        overlays = [
          deploy-rs.overlays.default
          (_self: super: {
            deploy-rs = {
              inherit (pkgs) deploy-rs;
              inherit (super.deploy-rs) lib;
            };
          })
        ];
      };
      inherit (deployPkgs.deploy-rs.lib) activate;
    in
    {
      hostname = address;
      profiles.system = {
        user = "root";
        inherit sshUser;
        path = activate.${type} self."${type}Configurations".${hostName};
      };
    };
in
{
  nodes = {
    socrates = mkDeploy "socrates";
    plato = mkDeploy "plato";
    agent = mkDeploy "agent";
    form = mkDeploy "form";
    matter = mkDeploy "matter";
    purpose = mkDeploy "purpose";
    epicurus = mkDeploy "epicurus";
  };
}