/ nix / script / exe / vfio-list.hs
vfio-list.hs
 1  {-# LANGUAGE OverloadedStrings #-}
 2  
 3  {- |
 4  List all NVIDIA GPUs with IOMMU group and driver info.
 5  
 6  Usage: vfio-list
 7  
 8  Shows PCI address, description, IOMMU group, and current driver
 9  for each NVIDIA GPU in the system.
10  -}
11  module Main where
12  
13  import Aleph.Script hiding (FilePath)
14  import qualified Aleph.Script.Vfio as Vfio
15  import Control.Monad (forM_)
16  import qualified Data.List as L
17  
18  main :: IO ()
19  main = script $ do
20      echo "═══════════════════════════════════════════════════════════"
21      echo " Available NVIDIA GPUs"
22      echo "═══════════════════════════════════════════════════════════"
23  
24      gpus <- Vfio.listNvidiaGpus
25  
26      if L.null gpus
27          then echo "\n  No NVIDIA GPUs found.\n"
28          else forM_ gpus $ \gpu -> do
29              echo ""
30              echo $ "  " <> Vfio.pciAddr gpu
31              case Vfio.pciDesc gpu of
32                  Just desc -> echo $ "    " <> desc
33                  Nothing -> pure ()
34              echo $ "    IOMMU Group: " <> fromMaybe "N/A" (Vfio.pciIommu gpu)
35              echo $ "    Driver: " <> fromMaybe "none" (Vfio.pciDriver gpu)
36  
37      echo ""