nixos-hardware/framework/16-inch/amd-ai-300-series
Jörg Thalheim fd83b9479c framework-16-amd-ai-300-series: add nvidia submodule
Add a dedicated submodule for Framework Laptop 16 AMD AI 300 Series with
NVIDIA dGPU (RTX 5070). This provides hybrid graphics configuration with
PRIME offload, allowing the AMD iGPU to run by default for better battery
life while making the NVIDIA dGPU available on demand via nvidia-offload.

Exposed as nixosModules.framework-16-amd-ai-300-series-nvidia

Co-authored-by: Daniel Schaefer <dhs@frame.work>
2025-11-28 11:57:31 +01:00
..
nvidia framework-16-amd-ai-300-series: add nvidia submodule 2025-11-28 11:57:31 +01:00
default.nix Add Framework Laptop 16 AMD AI 300 Series 2025-08-27 00:50:53 +08:00
README.md framework-16-amd-ai-300-series: add nvidia submodule 2025-11-28 11:57:31 +01:00

Framework Laptop 16 AMD AI 300 Series

NVIDIA dGPU Module

If you have an NVIDIA dGPU module (GeForce RTX 5070 or similar), use the nvidia submodule:

{
  imports = [
    nixos-hardware.nixosModules.framework-16-amd-ai-300-series-nvidia
  ];
}

This enables hybrid graphics with PRIME offload: the AMD iGPU runs by default for better battery life, and the NVIDIA dGPU can be used on demand with nvidia-offload <command>.

IMPORTANT: You MUST override the PCI bus IDs for your specific system. The default values are examples only and will likely not match your hardware. Due to Framework 16's modular design, bus IDs vary depending on installed expansion cards and NVMe drives:

{
  hardware.nvidia.prime = {
    amdgpuBusId = "PCI:195:0:0";   # Adjust to your system
    nvidiaBusId = "PCI:194:0:0";   # Adjust to your system
  };
}

Find your bus IDs with:

$ lspci | grep -E "VGA|3D|Display"
c2:00.0 VGA compatible controller: NVIDIA Corporation ...
c3:00.0 Display controller: Advanced Micro Devices ...

Convert the hex bus ID to decimal (e.g., c2:00.0PCI:194:0:0, c3:00.0PCI:195:0:0).

See also NVIDIA on the NixOS Wiki.

Updating Firmware

Everything is updateable through fwupd, so it's enabled by default.

To get the latest firmware, run:

$ fwupdmgr refresh
$ fwupdmgr update