{
  flake.modules.nixos.nix-distributed-builds =
    {
      inputs,
      config,
      lib,
      ...
    }:
    let
      inherit (lib.attrsets) attrsToList;
      inherit (builtins) filter;
    in
    {
      nix.distributedBuilds = true;
      nix.buildMachines =
        inputs.self.nixosConfigurations
        |> attrsToList
        |> filter ({ name, value }: name != config.networking.hostName && value.config.users.users ? build)
        |> map (
          { name, value }:
          {
            hostName = name;
            maxJobs = 25; # This is handled by remote anyway so not sure what difference it makes..
            protocol = "ssh-ng";
            sshUser = "build";
            sshKey = "/root/.ssh/id";
            supportedFeatures = [
              "benchmark"
              "big-parallel"
              "kvm"
              "nixos-test"
            ];
            system = value.config.nixpkgs.hostPlatform.system;
          }
        );

    };

  flake.modules.nixos.nix-distributed-builder =
    { config, lib, ... }:
    let
      inherit (config.flake) keys;
      inherit (lib.lists) singleton;
    in
    {
      users.users.build = {
        description = "Build";
        isNormalUser = true;
        createHome = false;
        openssh.authorizedKeys.keys = keys.all;
        extraGroups = singleton "build";
      };

    };
}