NixOS / nixpkgs के लिए स्थानीय रिपॉजिटरी कैसे बनाऊं?


17

निक्स पैकेजों का स्थानीय भंडार बनाने के लिए मुझे मिलने वाले सभी निर्देशों में मुख्य nixpkgsभंडार का स्थानीय क्लोन बनाना और उसको जोड़ना शामिल है।

क्या कोई तरीका है जिससे मैं अपने स्थानीय ऐड-ऑन पैकेज वाले छोटे भंडार का निर्माण कर सकूं?

जवाबों:


6

हां, केवल सिंगल पैकेज के लिए एक अभिव्यक्ति बनाएं। आप nixpkgs से निर्भरता प्राप्त कर सकते हैं pkgs = import <nixpkgs> {};


5

इस ब्लॉग पोस्ट में कुछ विवरण हैं: 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

लेकिन चूंकि निक्स एक पूर्ण विकसित भाषा पर आधारित है, इसलिए अनंत तरीके से आप ऐसा कर सकते हैं जो मुझे लगता है।


1

मैं किसी भी तरह से निक्स विशेषज्ञ नहीं हूं, इसलिए मुझे नहीं पता कि यह सबसे अच्छा तरीका है, लेकिन यह वही है जो मैं करता हूं। मैं में संकुल के लिए एक स्थानीय रेपो है $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 पर पूरा रेपो देख सकते हैं


4
2017 के बाद से इसे पढ़ने वाले किसी भी व्यक्ति के लिए, इस रेपो को वर्तमान में बनाए नहीं रखा गया है और मैं आपको "ओवरले" पर जोरदार तरीके से पढ़ने का सुझाव दूंगा, पैकेजऑवरराइड्स क्या करने के लिए एक बहुत क्लीनर तरीका है
टेलेंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.