{
  config,
  pkgs,
  lib,
  ...
}: {
  # THE FOLLOWING CODE BLOCK IS FOR COPYING TO OTHER CONFIGURATIONS, NOT FOR THIS FILE

  nix.distributedBuilds = true;
  nix.buildMachines = [
    {
      hostName = "nixos-build-machine";
      system = "x86_64-linux";
      sshUser = "nixremote";
      sshKey = "/root/.ssh/nixremote";
      maxJobs = 4;
      speedFactor = 2;
      supportedFeatures = ["nixos-test" "benchmark" "big-parallel" "kvm"];
    }
  ];

  # Generate SSH key for remote building
  systemd.services.generate-nixremote-key = {
    description = "Generate SSH key for remote Nix builds";
    wantedBy = ["multi-user.target"];
    serviceConfig = {
      Type = "oneshot";
      RemainAfterExit = true;
    };
    script = ''
      if [ ! -f /root/.ssh/nixremote ]; then
        ${pkgs.openssh}/bin/ssh-keygen -t ed25519 -f /root/.ssh/nixremote -N "" -C "nix-remote-builder"
      fi
    '';
  };

  programs.ssh.extraConfig = ''
    Host nixos-build-machine
      HostName 10.1.1.3
      IdentitiesOnly yes
      IdentityFile /root/.ssh/nixremote
      User nixremote
      StrictHostKeyChecking accept-new
  '';

  # Manual step required: After rebuilding the client, copy /root/.ssh/nixremote.pub
  # from the client to the build machine's users.users.nixremote.openssh.authorizedKeys.keys list,
  # then rebuild the build machine.
  # i.e on the client: run "cat /root.ssh/nixremote.pub"
  # and copy the output to the build machine's configuration.nix
}
