eGPU (GTX 1060 6GB) working great on NixOS on the 12th gen framework

Hey, sharing a nice eGPU success story. I stuck the GTX 1060 from my old desktop into an eGPU enclosure (a cheap TH3G4P3) and then just followed the Nvidia NixOS wiki page to get it working. I used Nvidia Prime’s “sync” mode to ensure the eGPU gets priority over the iGPU, so the config ended up looking like this:

{
  # Enable OpenGL
  hardware.opengl = {
    enable = true;
    driSupport = true;
    driSupport32Bit = true;
  };

  # Load nvidia driver for Xorg and Wayland
  services.xserver.videoDrivers = ["nvidia"];

  hardware.nvidia = {
    # Modesetting is required.
    modesetting.enable = true;

    # Nvidia power management. Experimental, and can cause sleep/suspend to fail.
    powerManagement.enable = false;
    # Fine-grained power management. Turns off GPU when not in use.
    # Experimental and only works on modern Nvidia GPUs (Turing or newer).
    powerManagement.finegrained = false;

    # Use the NVidia open source kernel module (not to be confused with the
    # independent third-party "nouveau" open source driver).
    # Support is limited to the Turing and later architectures. Full list of
    # supported GPUs is at:
    # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
    # Only available from driver 515.43.04+
    # Currently alpha-quality/buggy, so false is currently the recommended setting.
    open = false;

    # Enable the Nvidia settings menu,
    # accessible via `nvidia-settings`.
    nvidiaSettings = true;

    # Optionally, you may need to select the appropriate driver version for your specific GPU.
    package = config.boot.kernelPackages.nvidiaPackages.stable;

    # Use Nvidia Prime to choose which GPU (iGPU or eGPU) to use.
    prime = {
        sync.enable = true;
        allowExternalGpu = true;

        # Make sure to use the correct Bus ID values for your system!
        nvidiaBusId = "PCI:127:0:0";
        intelBusId = "PCI:0:2:0";
    };
  };
}

The only issue so far is that connecting an external monitor to the GPU results in some really horrible input latency. Connecting an external monitor to the laptop instead is smooth as butter though :+1:

Got Baldur’s Gate 3 running well at 1440p on low settings on this humble 1240p + GTX 1060 6GB setup now!

4 Likes

thanks! How do I find these?

You can do lspci -k and then convert from hex to decimal.

Thanks for sharing!
Any updates related to connecting external monitors to the gpu?

Hey @Filip_Cvejic, nope no update but i havent really tried recently 'cause ive been getting good enough performance and low enough latency connecting the monitor over thunderbolt.

I’m on Arch, not Nix, but had some issues with external monitors not being recognized / driven once the proprietary Nvidia-dkms driver took over in the boot process. BIOS, rEFInd, etc mirrored to the external monitor fine , but not after that on the boot not runtime. Looks like that bug is fixed for me in 555.58.02. Not sure what’s current in Nix world, but try that driver version or later if using Nvidia proprietary…