निक्स पैकेजों का स्थानीय भंडार बनाने के लिए मुझे मिलने वाले सभी निर्देशों में मुख्य nixpkgs
भंडार का स्थानीय क्लोन बनाना और उसको जोड़ना शामिल है।
क्या कोई तरीका है जिससे मैं अपने स्थानीय ऐड-ऑन पैकेज वाले छोटे भंडार का निर्माण कर सकूं?
निक्स पैकेजों का स्थानीय भंडार बनाने के लिए मुझे मिलने वाले सभी निर्देशों में मुख्य nixpkgs
भंडार का स्थानीय क्लोन बनाना और उसको जोड़ना शामिल है।
क्या कोई तरीका है जिससे मैं अपने स्थानीय ऐड-ऑन पैकेज वाले छोटे भंडार का निर्माण कर सकूं?
जवाबों:
हां, केवल सिंगल पैकेज के लिए एक अभिव्यक्ति बनाएं। आप nixpkgs से निर्भरता प्राप्त कर सकते हैं pkgs = import <nixpkgs> {};
।
इस ब्लॉग पोस्ट में कुछ विवरण हैं: http://sandervanderburg.blogspot.no/2014/07/managing-pStreet-nix-packages-outside.html
जमीनी स्तर से अधिक विवरण के लिए निम्क्स-पिल श्रृंखला है: http://lethalman.blogspot.no/2014/07/nix-pill-1-why-you-should-give-it- try.html
लेकिन मुझे लगता है कि मूल दृष्टिकोण का अपना संस्करण बनाना है ~/.nix-defexpr/channels_root/nixos/pkgs/top-level/all-packages.nix
, mypkgs.nix
आयात करके डिफ़ॉल्ट "रेपो" से निर्भरता जोड़ना है<nixpkgs>
।
कर पैकेज स्थापित करें nix-env -f mypkgs.nix -i DERIVATION_NAME
लेकिन चूंकि निक्स एक पूर्ण विकसित भाषा पर आधारित है, इसलिए अनंत तरीके से आप ऐसा कर सकते हैं जो मुझे लगता है।
मैं किसी भी तरह से निक्स विशेषज्ञ नहीं हूं, इसलिए मुझे नहीं पता कि यह सबसे अच्छा तरीका है, लेकिन यह वही है जो मैं करता हूं। मैं में संकुल के लिए एक स्थानीय रेपो है $HOME/nix-local
, जो पैकेज फ़ाइलों की एक संख्या में शामिल हैं vault/default.nix
, blackbox/default.nix
और एक आदि config.nix
जो परिभाषित करता है फ़ाइल packageOverrides
उन्हें कॉल करने के लिए। तो कुछ इस तरह:
$ cat nix-local/config.nix
{
packageOverrides = pkgs: rec {
vault = pkgs.callPackage ./vault {};
blackbox = pkgs.callPackage ./blackbox {};
# ...
}
$ export NIXPKGS_CONFIG=$HOME/nix-local/config.nix
आप https://github.com/telent/nix-local पर पूरा रेपो देख सकते हैं