diff --git a/lact-daemon/Cargo.toml b/lact-daemon/Cargo.toml
index 33762863..0b47e88c 100644
--- a/lact-daemon/Cargo.toml
+++ b/lact-daemon/Cargo.toml
@@ -4,8 +4,9 @@ version = "0.7.3"
edition = "2021"
[features]
-default = []
+default = ["nvidia"]
bench = ["dep:divan"]
+nvidia = []
[dependencies]
lact-schema = { path = "../lact-schema" }
diff --git a/lact-daemon/build.rs b/lact-daemon/build.rs
index 566f12ae..f27e6d21 100644
--- a/lact-daemon/build.rs
+++ b/lact-daemon/build.rs
@@ -8,7 +8,10 @@ fn main() {
println!("cargo::rerun-if-changed=include/");
gen_intel_bindings();
+
+ #[cfg(feature = "nvidia")]
gen_nvidia_bindings();
+
gen_vulkan_constants();
}
@@ -26,6 +29,7 @@ fn gen_intel_bindings() {
.expect("Couldn't write bindings!");
}
+#[cfg(feature = "nvidia")]
fn gen_nvidia_bindings() {
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
diff --git a/lact-daemon/src/bindings.rs b/lact-daemon/src/bindings.rs
index 758d3bee..81719878 100644
--- a/lact-daemon/src/bindings.rs
+++ b/lact-daemon/src/bindings.rs
@@ -12,6 +12,7 @@ pub mod intel {
include!(concat!(env!("OUT_DIR"), "/intel_bindings.rs"));
}
+#[cfg(feature = "nvidia")]
pub mod nvidia {
include!(concat!(env!("OUT_DIR"), "/nvidia_bindings.rs"));
}
diff --git a/lact-daemon/src/server/gpu_controller.rs b/lact-daemon/src/server/gpu_controller.rs
index f9fbb74a..14b47c01 100644
--- a/lact-daemon/src/server/gpu_controller.rs
+++ b/lact-daemon/src/server/gpu_controller.rs
@@ -2,10 +2,14 @@
mod amd;
pub mod fan_control;
mod intel;
+
+#[cfg(feature = "nvidia")]
mod nvidia;
use amd::AmdGpuController;
use intel::IntelGpuController;
+
+#[cfg(feature = "nvidia")]
use nvidia::NvidiaGpuController;
pub const VENDOR_AMD: &str = "1002";
@@ -90,6 +94,9 @@ pub(crate) fn init_controller(
amd_drm: &LazyCell