@@ -358,13 +358,24 @@ sub evalJobs {
358358 my @cmd ;
359359
360360 if (defined $flakeRef ) {
361- my $nix_expr =
362- " let " .
363- " flake = builtins.getFlake (toString \" $flakeRef \" ); " .
364- " in " .
365- " flake.hydraJobs " .
366- " or flake.checks " .
367- " or (throw \" flake '$flakeRef ' does not provide any Hydra jobs or checks\" )" ;
361+ my $nix_expr ;
362+ my ($ref , $attr ) = split ' #' , $flakeRef , 2;
363+ if (defined $attr ) {
364+ $nix_expr =
365+ " let " .
366+ " flake = builtins.getFlake (toString \" $ref \" ); " .
367+ " in " .
368+ " flake.${attr} " .
369+ " or (throw \" flake '$ref ' does not provide attribute '$attr '\" )" ;
370+ } else {
371+ $nix_expr =
372+ " let " .
373+ " flake = builtins.getFlake (toString \" $flakeRef \" ); " .
374+ " in " .
375+ " flake.hydraJobs " .
376+ " or flake.checks " .
377+ " or (throw \" flake '$flakeRef ' does not provide any Hydra jobs or checks\" )" ;
378+ }
368379
369380 @cmd = (" nix-eval-jobs" ,
370381 # Disable the eval cache to prevent SQLite database contention.
@@ -713,12 +724,13 @@ sub checkJobsetWrapped {
713724
714725 my $flakeRef = $jobset -> flake;
715726 if (defined $flakeRef ) {
727+ my ($ref , $attr ) = split ' #' , $flakeRef , 2;
716728 (my $res , my $json , my $stderr ) = captureStdoutStderr(
717- 600, " nix" , " flake" , " metadata" , " --refresh" , " --json" , " --" , $flakeRef );
729+ 600, " nix" , " flake" , " metadata" , " --refresh" , " --json" , " --" , $ref );
718730 die " 'nix flake metadata' returned " . ($res & 127 ? " signal $res " : " exit code " . ($res >> 8))
719731 . " :\n " . ($stderr ? decode(" utf-8" , $stderr ) : " (no output)\n " )
720732 if $res ;
721- $flakeRef = decode_json($json )-> {' url' };
733+ $ref = decode_json($json )-> {' url' };
722734 }
723735
724736 Net::Statsd::increment(" hydra.evaluator.checkouts" );
0 commit comments