@@ -6,7 +6,7 @@ use axum::{
66 Json , Router ,
77} ;
88use mold_core:: { GenerateRequest , GpuInfo , ModelInfo , OutputFormat , ServerStatus } ;
9- use mold_inference:: { model_registry, InferenceEngine } ;
9+ use mold_inference:: model_registry;
1010
1111use crate :: state:: AppState ;
1212
@@ -28,8 +28,6 @@ async fn generate(
2828 return Err ( ( StatusCode :: UNPROCESSABLE_ENTITY , e) ) ;
2929 }
3030
31- let output_format = req. output_format ;
32-
3331 // Load on first request (holds lock only during load, not inference)
3432 {
3533 let mut engine = state. engine . lock ( ) . await ;
@@ -160,7 +158,20 @@ async fn server_status(State(state): State<AppState>) -> Json<ServerStatus> {
160158
161159/// Query GPU info via nvidia-smi. Returns None if not available or on non-NVIDIA hardware.
162160fn query_gpu_info ( ) -> Option < GpuInfo > {
163- let output = std:: process:: Command :: new ( "nvidia-smi" )
161+ // Try PATH first, then NixOS well-known location.
162+ let nvidia_smi = [ "nvidia-smi" , "/run/current-system/sw/bin/nvidia-smi" ]
163+ . iter ( )
164+ . find ( |p| {
165+ if p. starts_with ( '/' ) {
166+ std:: path:: Path :: new ( p) . exists ( )
167+ } else {
168+ true // let Command::new try PATH
169+ }
170+ } )
171+ . copied ( )
172+ . unwrap_or ( "nvidia-smi" ) ;
173+
174+ let output = std:: process:: Command :: new ( nvidia_smi)
164175 . args ( [
165176 "--query-gpu=name,memory.total,memory.used" ,
166177 "--format=csv,noheader,nounits" ,
0 commit comments