2016-05-15 43 views
0

添加Linux的配置我現在有這在我的nixpkgs.config如何configuration.nix

packageOverrides = pkgs: rec { 
    netbeans81 = pkgs.stdenv.lib.overrideDerivation pkgs.netbeans (oldAttrs: { 
    name = "netbeans-8.1"; 
    src = pkgs.fetchurl { 
     url = http://download.netbeans.org/netbeans/8.1/final/zip/netbeans-8.1-201510222201.zip; 
     md5 = "361ce18421761a057bad5cb6cf7b58f4"; 
    }; 
    }); 
}; 

,我想增加一個內核配置。我加了這個

packageOverrides = pkgs: { 
    stdenv = pkgs.stdenv // { 
     platform = pkgs.stdenv.platform // { 
      kernelExtraConfig = "SND_HDA_PREALLOC_SIZE 4096"; 
     }; 
    }; 
}; 

但是沒有工作。問題是packageOverrides已經定義好了。

如何添加內核配置和我的netbeans覆蓋?

+0

你的問題更好的名稱可能是「如何加入configuration.nix多個‘packageOverrides’定義」 – Gilly

回答

1

在nix語言中,大括號({})表示屬性集(不像C++等中的範圍)。您可以在一個屬性集中包含多個項目(屬性集像Python中的字符串)。另外,nix是一種功能性語言,這意味着沒有任何狀態。這反過來又意味着您無法在相同範圍內重新定義變量。用阿姆的話來說,「你只有一槍」。

試試這個:

packageOverrides = pkgs: rec { 

    netbeans81 = pkgs.stdenv.lib.overrideDerivation pkgs.netbeans (oldAttrs: { 
    name = "netbeans-8.1"; 
    src = pkgs.fetchurl { 
     url = http://download.netbeans.org/netbeans/8.1/final/zip/netbeans-8.1-201510222201.zip; 
     md5 = "361ce18421761a057bad5cb6cf7b58f4"; 
    }; 
    }); 

    stdenv = pkgs.stdenv // { 
    platform = pkgs.stdenv.platform // { 
     kernelExtraConfig = "SND_HDA_PREALLOC_SIZE 4096"; 
    }; 
    }; 

}; 
+1

這正是我結束了做閱讀一些尼克斯的藥丸後, 。 –

+0

是的,Nix丸很棒。其他訪問者的鏈接是http://lethalman.blogspot.com.au/2014/07/nix-pill-1-why-you-should-give-it-try.html – Gilly