101 lines
3.7 KiB
Nix
101 lines
3.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
self,
|
|
...
|
|
}:
|
|
|
|
{
|
|
config = {
|
|
hardware.graphics = {
|
|
enable = true;
|
|
enable32Bit = true;
|
|
};
|
|
|
|
# Workaround for nvidia driver ghost display
|
|
boot.kernelParams = [ "nvidia_drm.fbdev=1" ];
|
|
|
|
services.xserver.videoDrivers = ["nvidia"];
|
|
hardware.nvidia = {
|
|
modesetting.enable = true;
|
|
powerManagement.enable = true;
|
|
open = false;
|
|
nvidiaSettings = true;
|
|
package = let
|
|
mkDriverArgs = {
|
|
version = "570.133.07";
|
|
sha256_64bit = "sha256-LUPmTFgb5e9VTemIixqpADfvbUX1QoTT2dztwI3E3CY=";
|
|
sha256_aarch64 = "sha256-yTovUno/1TkakemRlNpNB91U+V04ACTMwPEhDok7jI0=";
|
|
openSha256 = "sha256-9l8N83Spj0MccA8+8R1uqiXBS0Ag4JrLPjrU3TaXHnM=";
|
|
settingsSha256 = "sha256-XMk+FvTlGpMquM8aE8kgYK2PIEszUZD2+Zmj2OpYrzU=";
|
|
persistencedSha256 = "sha256-G1V7JtHQbfnSRfVjz/LE2fYTlh9okpCbE4dfX9oYSg8=";
|
|
};
|
|
in ( config.boot.kernelPackages.nvidiaPackages.mkDriver mkDriverArgs ).overrideAttrs (super: {
|
|
passthru = super.passthru or {} // {
|
|
urls = {
|
|
x86_64 = [
|
|
"https://download.nvidia.com/XFree86/Linux-x86_64/${mkDriverArgs.version}/NVIDIA-Linux-x86_64-${mkDriverArgs.version}.run"
|
|
"https://us.download.nvidia.com/XFree86/Linux-x86_64/${mkDriverArgs.version}/NVIDIA-Linux-x86_64-${mkDriverArgs.version}.run"
|
|
];
|
|
aarch64 = [
|
|
"https://us.download.nvidia.com/XFree86/aarch64/${mkDriverArgs.version}/NVIDIA-Linux-aarch64-${mkDriverArgs.version}.run"
|
|
"https://download.nvidia.com/XFree86/Linux-aarch64/${mkDriverArgs.version}/NVIDIA-Linux-aarch64-${mkDriverArgs.version}.run"
|
|
];
|
|
};
|
|
updateScript = pkgs.den-http-get-updater {
|
|
fileLocation = ( builtins.unsafeGetAttrPos "any" { any = null; } ).file;
|
|
previousVersion = mkDriverArgs.version;
|
|
versionUrl = "https://raw.githubusercontent.com/aaronp24/nvidia-versions/master/nvidia-versions.txt";
|
|
extraPackages = with pkgs; [
|
|
coreutils
|
|
gawk
|
|
gnugrep
|
|
];
|
|
contentParser = lib.concatStringsSep " | " [
|
|
"echo \"$newVersion\""
|
|
"grep current"
|
|
"awk '{print $3}'"
|
|
"sort -V"
|
|
"tail -n 1"
|
|
];
|
|
unpack = false;
|
|
prefetchList = lib.map (x: {
|
|
inherit (x) previousHash;
|
|
unpack = x.unpack or true;
|
|
prefetchUrlLocation = {
|
|
file = builtins.toString self + "/outputs.nix";
|
|
# TODO: don't use already existing NixOS configuration
|
|
attrpath = "nixosConfigurations.main.config.hardware.nvidia.package.${x.locationAttrpath}";
|
|
};
|
|
}) [
|
|
{
|
|
previousHash = mkDriverArgs.sha256_64bit;
|
|
locationAttrpath = "urls.x86_64";
|
|
unpack = false;
|
|
}
|
|
{
|
|
previousHash = mkDriverArgs.sha256_aarch64;
|
|
locationAttrpath = "urls.aarch64";
|
|
unpack = false;
|
|
}
|
|
{
|
|
previousHash = mkDriverArgs.openSha256;
|
|
locationAttrpath = "open.src.urls";
|
|
}
|
|
{
|
|
previousHash = mkDriverArgs.settingsSha256;
|
|
locationAttrpath = "settings.src.urls";
|
|
}
|
|
{
|
|
previousHash = mkDriverArgs.persistencedSha256;
|
|
locationAttrpath = "persistenced.src.urls";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
});
|
|
};
|
|
nixpkgs.config.nvidia.acceptLicense = true;
|
|
};
|
|
}
|