NixOS + NVIDIA antiga: como sobreviver ao driver 595 (GTX 750 Ti / Maxwell)
Dica publicada em Linux / Hardware
NixOS + NVIDIA antiga: como sobreviver ao driver 595 (GTX 750 Ti / Maxwell)
Recentemente enfrentei um problema ao atualizar meu sistemaNixOS: 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:- A arquitetura Maxwell foi considerada "feature-complete"
- Drivers mais novos (como 595) não garantem mais suporte real
- O módulo carrega, mas não reconhece a GPU
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=";
};
};
}
{
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.
Observações importantes
1. GSP precisa ser desabilitadoGPUs antigas não possuem suporte a firmware GSP.
Sem isto:
gsp.enable = false;
o 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
- NVIDIA CUDA Deprecated Architectures
- Discussões sobre suporte Maxwell
- Documentação do NixOS (mkDriver)
- Pagina oficial dos drivers