@@ -22,6 +22,10 @@ flowey_request! {
2222 GetOpenvmmDeps ( OpenvmmDepsArch , WriteVar <PathBuf >) ,
2323 /// Get the Nix store path for protoc
2424 GetProtoc ( WriteVar <PathBuf >) ,
25+ /// Get the Nix store path for openhcl_kernel package root
26+ GetOpenhclKernelPackage ( WriteVar <PathBuf >) ,
27+ /// Get the Nix store path for UEFI firmware (MSVM.fd)
28+ GetUefiMuMsvm ( WriteVar <PathBuf >) ,
2529 }
2630}
2731
@@ -38,6 +42,9 @@ impl FlowNode for Node {
3842 let mut openvmm_deps_requests: BTreeMap < OpenvmmDepsArch , Vec < WriteVar < PathBuf > > > =
3943 BTreeMap :: new ( ) ;
4044 let mut protoc_requests = Vec :: new ( ) ;
45+ let mut openhcl_kernel_vmlinux_requests = Vec :: new ( ) ;
46+ let mut openhcl_kernel_modules_requests = Vec :: new ( ) ;
47+ let mut uefi_mu_msvm_requests = Vec :: new ( ) ;
4148
4249 // Parse all requests and group by type
4350 for req in requests {
@@ -46,17 +53,28 @@ impl FlowNode for Node {
4653 openvmm_deps_requests. entry ( arch) . or_default ( ) . push ( var) ;
4754 }
4855 Request :: GetProtoc ( var) => protoc_requests. push ( var) ,
56+ Request :: GetOpenhclKernelVmlinux ( var) => openhcl_kernel_vmlinux_requests. push ( var) ,
57+ Request :: GetOpenhclKernelModules ( var) => openhcl_kernel_modules_requests. push ( var) ,
58+ Request :: GetUefiMuMsvm ( var) => uefi_mu_msvm_requests. push ( var) ,
4959 }
5060 }
5161
5262 // Only emit step if there are actual requests
53- if openvmm_deps_requests. is_empty ( ) && protoc_requests. is_empty ( ) {
63+ if openvmm_deps_requests. is_empty ( )
64+ && protoc_requests. is_empty ( )
65+ && openhcl_kernel_vmlinux_requests. is_empty ( )
66+ && openhcl_kernel_modules_requests. is_empty ( )
67+ && uefi_mu_msvm_requests. is_empty ( )
68+ {
5469 return Ok ( ( ) ) ;
5570 }
5671
5772 ctx. emit_rust_step ( "resolve nix dependency paths" , |ctx| {
5873 let openvmm_deps_requests = openvmm_deps_requests. claim ( ctx) ;
5974 let protoc_requests = protoc_requests. claim ( ctx) ;
75+ let openhcl_kernel_vmlinux_requests = openhcl_kernel_vmlinux_requests. claim ( ctx) ;
76+ let openhcl_kernel_modules_requests = openhcl_kernel_modules_requests. claim ( ctx) ;
77+ let uefi_mu_msvm_requests = uefi_mu_msvm_requests. claim ( ctx) ;
6078
6179 move |rt| {
6280 // Read Nix environment variables
@@ -87,6 +105,48 @@ impl FlowNode for Node {
87105 rt. write_all ( protoc_requests, & protoc_path) ;
88106 }
89107
108+ // Read and write openhcl_kernel vmlinux path if requested
109+ if !openhcl_kernel_vmlinux_requests. is_empty ( ) {
110+ let kernel_vmlinux = std:: env:: var ( "NIX_OPENHCL_KERNEL_VMLINUX" ) . context (
111+ "NIX_OPENHCL_KERNEL_VMLINUX not set - ensure shell.nix exports this variable" ,
112+ ) ?;
113+ let kernel_vmlinux_path = PathBuf :: from ( & kernel_vmlinux) ;
114+
115+ log:: info!(
116+ "Resolved Nix openhcl_kernel vmlinux: {}" ,
117+ kernel_vmlinux_path. display( )
118+ ) ;
119+ rt. write_all ( openhcl_kernel_vmlinux_requests, & kernel_vmlinux_path) ;
120+ }
121+
122+ // Read and write openhcl_kernel modules path if requested
123+ if !openhcl_kernel_modules_requests. is_empty ( ) {
124+ let kernel_modules = std:: env:: var ( "NIX_OPENHCL_KERNEL_MODULES" ) . context (
125+ "NIX_OPENHCL_KERNEL_MODULES not set - ensure shell.nix exports this variable" ,
126+ ) ?;
127+ let kernel_modules_path = PathBuf :: from ( & kernel_modules) ;
128+
129+ log:: info!(
130+ "Resolved Nix openhcl_kernel modules: {}" ,
131+ kernel_modules_path. display( )
132+ ) ;
133+ rt. write_all ( openhcl_kernel_modules_requests, & kernel_modules_path) ;
134+ }
135+
136+ // Read and write UEFI firmware path if requested
137+ if !uefi_mu_msvm_requests. is_empty ( ) {
138+ let uefi_mu_msvm = std:: env:: var ( "NIX_UEFI_MU_MSVM" ) . context (
139+ "NIX_UEFI_MU_MSVM not set - ensure shell.nix exports this variable" ,
140+ ) ?;
141+ let uefi_mu_msvm_path = PathBuf :: from ( & uefi_mu_msvm) ;
142+
143+ log:: info!(
144+ "Resolved Nix UEFI firmware: {}" ,
145+ uefi_mu_msvm_path. display( )
146+ ) ;
147+ rt. write_all ( uefi_mu_msvm_requests, & uefi_mu_msvm_path) ;
148+ }
149+
90150 Ok ( ( ) )
91151 }
92152 } ) ;
0 commit comments