ฉันจะสร้างที่เก็บโลคัลสำหรับ NixOS / nixpkgs ได้อย่างไร?


17

คำแนะนำทั้งหมดที่ฉันค้นหาเพื่อสร้างที่เก็บโลคัลของแพ็กเกจ Nix เกี่ยวข้องกับการสร้างโคลนโลคัลของที่nixpkgsเก็บหลักและเพิ่มลงในนั้น

มีวิธีที่ฉันสามารถสร้างพื้นที่เก็บข้อมูลขนาดเล็กเพียงแค่มีแพคเกจ Add-on ท้องถิ่นของฉัน?

คำตอบ:


6

ใช่เพียงแค่สร้างนิพจน์สำหรับแพ็คเกจเดียว คุณจะได้รับการอ้างอิงจาก nixpkgs pkgs = import <nixpkgs> {};โดย


5

โพสต์บล็อกนี้มีรายละเอียดบางอย่าง: http://sandervanderburg.blogspot.no/2014/07/managing-private-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

ฉันไม่เคยเป็นผู้เชี่ยวชาญระวังเลยฉันไม่รู้ว่านี่เป็นวิธีที่ดีที่สุดหรือเปล่า แต่นั่นคือสิ่งที่ฉันทำ ฉันมี repo ท้องถิ่นสำหรับแพคเกจใน$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    

คุณสามารถดู repo เต็มได้ที่https://github.com/telent/nix-local


4
ให้กับทุกคนที่อ่านข้อความนี้ตั้งแต่ประมาณปี 2017 repo นี้ไม่ได้รับการบำรุงรักษาในขณะนี้และฉันจะขอแนะนำให้คุณอ่านขึ้นบน "ซ้อนทับ" ซึ่งเป็นวิธีการทำความสะอาดมากที่จะทำในสิ่งที่ packageOverrides ใช้ในการทำ
Telent
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.