NixOS + NVIDIA antiga: como sobreviver ao driver 595 (GTX 750 Ti / Maxwell)

Originalmente publicado no vivaolinux.com.br

Recentemente enfrentei um problema ao atualizar meu sistema NixOS: após atualizar os flakes, o driver da NVIDIA foi atualizado automaticamente da versão 580.142 para 595.58.03, e minha GPU (GTX 750 Ti, arquitetura Maxwell) simplesmente parou de funcionar.

Ao tentar carregar o módulo manualmente:

modprobe nvidia

Recebi o erro:

modprobe: ERROR: could not insert 'nvidia': No such device

Apesar disso, o sistema ainda apresentava vídeo normalmente usando framebuffer em baixa resolução.

Causa do problema

A causa não é um erro de configuração, mas sim uma mudança recente da NVIDIA:

Ou seja, o driver existe, mas não contém mais suporte efetivo ao hardware.

Solução

A solução é usar a versão mais recente ainda compatível com a GPU que no meu caso é a 580.142.

No NixOS, isso pode ser feito usando a função mkDriver.

{ config, pkgs, ... }:

{
  services.xserver.videoDrivers = [ "nvidia" ];
  hardware.graphics.enable = true;
  nixpkgs.config.nvidia.acceptLicense = true;
  hardware.nvidia = {
    modesetting.enable = true;
    powerManagement.enable = true;
    open = false;
    nvidiaSettings = true;
    # GPUs antigas não usam GSP
    gsp.enable = false;
    nvidiaPersistenced = true;
    package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
      version = "580.142";
      sha256_64bit = "sha256-IJFfzz/+icNVDPk7YKBKKFRTFQ2S4kaOGRGkNiBEdWM=";
      settingsSha256 = "sha256-BnrIlj5AvXTfqg/qcBt2OS9bTDDZd3uhf5jqOtTMTQM=";
      persistencedSha256 = "sha256-il403KPFAnDbB+dITnBGljhpsUPjZwmLjGt8iPKuBqw=";
    };
  };
}

De acordo com o site oficial, a última versão suportada de fato é a 580.142.

Captura de tela mostrando que a última versão do driver para a placa da Nvidia é de fato a versão 580.142

Observações importantes

1. GSP precisa ser desabilitado

GPUs antigas não possuem suporte a firmware GSP.

Sem isto:

gsp.enable = false;

a build falha com:

This version of NVIDIA driver does not provide a GSP firmware

2. Como descobrir os hashes

Use:

pkgs.lib.fakeSha256

e deixe o Nix falhar. Ele mostrará o hash correto para substituir.

Conclusão

Se você possui uma GPU mais antiga (como a GTX 750 Ti), atualizar o NixOS pode quebrar o driver NVIDIA sem aviso claro.

A solução não é usar um driver “legacy” antigo, mas sim fixar a versão mais recente ainda compatível com o seu hardware. No caso da arquitetura Maxwell, isso está na faixa da série 580.

A Nvidia falou que ainda vai dar três anos de atualizações de segurança para essas GPUs, mas não vai haver novas versões. Temos até 2028 para usar essas placas.

Referências