Enabled remote building
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s
				
			Also includes a fix where home directory didn't exist for the remotebuild user.
This commit is contained in:
		
							parent
							
								
									0830ab5d48
								
							
						
					
					
						commit
						14fb3774d3
					
				
					 2 changed files with 41 additions and 3 deletions
				
			
		| 
						 | 
					@ -25,7 +25,23 @@ in
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    useSelfhostedCache = mkEnableOption "use self-hosted nix cache (currently hosted on gospel)";
 | 
					    useSelfhostedCache = mkEnableOption "use self-hosted nix cache (currently hosted on gospel)";
 | 
				
			||||||
    remoteBuilder.enable = mkEnableOption "set up as a remote builder";
 | 
					
 | 
				
			||||||
 | 
					    remoteBuilder = {
 | 
				
			||||||
 | 
					      enable = mkEnableOption "set up as a remote builder";
 | 
				
			||||||
 | 
					      client = {
 | 
				
			||||||
 | 
					        enable = mkEnableOption "set up to use configured remote builders";
 | 
				
			||||||
 | 
					        sshKeyPath = mkOption {
 | 
				
			||||||
 | 
					          type = types.str;
 | 
				
			||||||
 | 
					          # NOTE: By default, only root user has read access.
 | 
				
			||||||
 | 
					          # This means only builds initiated by root will be able to make use
 | 
				
			||||||
 | 
					          # of distributed builds.
 | 
				
			||||||
 | 
					          # TODO: Allow my normal user to make use of distributed builds.
 | 
				
			||||||
 | 
					          default = "/etc/ssh/ssh_host_ed25519_key";
 | 
				
			||||||
 | 
					          description = "Path to ssh key to use to connect to remote builders";
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  config = mkIf cfg.enable (
 | 
					  config = mkIf cfg.enable (
 | 
				
			||||||
| 
						 | 
					@ -79,6 +95,7 @@ in
 | 
				
			||||||
        users.users.remotebuild = {
 | 
					        users.users.remotebuild = {
 | 
				
			||||||
          isNormalUser = true;
 | 
					          isNormalUser = true;
 | 
				
			||||||
          createHome = false;
 | 
					          createHome = false;
 | 
				
			||||||
 | 
					          home = "/var/empty";
 | 
				
			||||||
          group = "remotebuild";
 | 
					          group = "remotebuild";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          # All the keys from ./remote_client_keys should be trusted
 | 
					          # All the keys from ./remote_client_keys should be trusted
 | 
				
			||||||
| 
						 | 
					@ -96,6 +113,24 @@ in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        nix.settings.trusted-users = [ "remotebuild" ];
 | 
					        nix.settings.trusted-users = [ "remotebuild" ];
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
 | 
					      (lib.mkIf cfg.remoteBuilder.client.enable {
 | 
				
			||||||
 | 
					        nix.distributedBuilds = true;
 | 
				
			||||||
 | 
					        nix.settings.builders-use-substitutes = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        nix.buildMachines = [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            hostName = "gospel";
 | 
				
			||||||
 | 
					            sshUser = "remotebuild";
 | 
				
			||||||
 | 
					            sshKey = cfg.remoteBuilder.client.sshKeyPath;
 | 
				
			||||||
 | 
					            system = "x86_64-linux";
 | 
				
			||||||
 | 
					            supportedFeatures = [
 | 
				
			||||||
 | 
					              "nixos-test"
 | 
				
			||||||
 | 
					              "big-parallel"
 | 
				
			||||||
 | 
					              "kvm"
 | 
				
			||||||
 | 
					            ];
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,8 +7,11 @@
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  aa = {
 | 
					  aa = {
 | 
				
			||||||
    nix.enable = true;
 | 
					    nix = {
 | 
				
			||||||
    nix.useSelfhostedCache = true;
 | 
					      enable = true;
 | 
				
			||||||
 | 
					      useSelfhostedCache = true;
 | 
				
			||||||
 | 
					      remoteBuilder.client.enable = true;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    archetypes.workstation.enable = true;
 | 
					    archetypes.workstation.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue