How to override 2 (two) packages in Nixos configuration.nix

后端 未结 1 647
轻奢々
轻奢々 2021-02-10 10:36

I have some package to override in my configuration.nix. So I write the code as follows:

nixpkgs.config = {
  allowUnfree = true;
  packageOverrides = {
    pkgs:         


        
1条回答
  •  不知归路
    2021-02-10 11:03

    The proper solution is:

    nixpkgs.config = {
    
      allowUnfree = true;
    
      packageOverrides = super: let self = super.pkgs; in {
    
        mumble = super.mumble.override { pulseSupport = true; };
    
        linuxPackages = super.linuxPackages // {
          e1000e = super.linuxPackages.e1000e.overrideDerivation (old: {
            name = "e1000e-3.3.3-${config.boot.kernelPackages.kernel.version}";
            src = fetchurl {
              url = "https://www.dropbox.com/s/pxx883hx9763ygn/e1000e-3.3.3.tar.gz?dl=0";
              sha256 = "1s2w54927fsxg0f037h31g3qkajgn5jd0x3yi1chxsyckrcr0x80";
            };
          });
        };
      };
    }
    

    The variable super refers to the Nixpkgs set before the overrides are applied and self refers to it after the overrides are applied. It's important to distinguish these two explicitly to avoid infinite recursions, etc.

    Also, note that your override

    linuxPackages.e1000e = pkgs.linuxPackages.e1000e.overrideDerivation ...

    replaces the linuxPackages attribute set with one that contains nothing but the (overriden) e1000e derivation. That's probably not what you want.

    0 讨论(0)
提交回复
热议问题