如何覆盖默认的稳定Nvidia驱动程序

时间:2018-12-20 08:05:25

标签: nixos

我正在尝试从我的data: [{ "x": "2018-12-23T11:00:09.311Z", "y": 107.54, "data": { "Toltip Info 1": "1,884,681,725", "Tooltip info 2": "158,039,757.99", "price":"107.54" } }] 覆盖稳定的nvidia软件包,将其从nvidia驱动程序configuration.nix覆盖到410,但是,使用下面的覆盖配置似乎不起作用。

我正在使用390选项启用驱动程序,并订阅了services.xserver.videoDrivers = [ "nvidia" ]频道。

configuration.nix:

unstable

我还尝试在以下行中将 nixpkgs.config = { allowUnfree = true; packageOverrides = super: let self = super.pkgs; in { linuxPackages = super.linuxPackages_latest.extend (self: super: { nvidiaPackages = super.nvidiaPackages // { stable = super.nvidiaPackages.stable_390; }; }); }; }; 更改为super

self

但这也没有任何影响。

1 个答案:

答案 0 :(得分:2)

根据我的判断,您将需要覆盖linux软件包和核心软件包集中的nvidia_x11。如果没有,我会遇到默认nvidia驱动程序的无声回退。

以下是一个比您尝试的粒度更细的示例。我的想法是,用于构建和在运行时加载的内核依赖项之间可能存在不匹配的情况,因此我换出了整个linuxPackage集。

当前(2019年1月10日),nvidia 410.7x已损坏(请参阅Issue 53708)。因此,我将配置固定在使用nvidia 410.6x的最后一次提交中。有关固定nixpkg的更多信息,请参见the wiki page。您仍然可以锁定master并将一个unstable名称空间添加到您的程序包集中,而不会干扰内核。

{ config, pkgs, nixpkgs, ... }:

let
  # get the last working revision with nvidia 410.x
  nixos-unstable-pinned = import (builtins.fetchTarball {
    name = "nixos-unstable_nvidia-410-66_2018-11-03";
    url = https://github.com/nixos/nixpkgs/archive/bf084e0ed7a625b50b1b0f42b98358dfa23326ee.tar.gz;
    sha256 = "0w05cw9s2pa07vqy21ack7g7983ig67lhwkdn24bzah3z49c2d8k";
  }) { };

  # We'll use this twice
  pinnedKernelPackages = nixos-unstable-pinned.linuxPackages_latest;

in

{
  # allow nvidia drivers to be loaded 
  nixpkgs.config.allowUnfree = true;

  nixpkgs.config.packageOverrides = pkgs: {
    # swap out all of the linux packages
    linuxPackages_latest = pinnedKernelPackages;

    # make sure x11 will use the correct package as well
    nvidia_x11 = nixos-unstable-pinned.nvidia_x11;
  };

  # line up your kernel packages at boot
  boot.kernelPackages = pinnedKernelPackages;
}

希望这会有所帮助!