คำถามติดแท็ก nix

4
จะค้นหาชื่อของแพ็คเกจ Nix เพื่อติดตั้งใน configuration.nix ได้อย่างไร?
สมมติว่าฉันค้นหาสำหรับแพคเกจการติดตั้งโดยใช้nix-env's --queryการดำเนินงาน: $ nix-env -qa 'aspell.*en' aspell-dict-en-7.1-0 ฉันเขียนชื่อแพ็คเกจนี้ในไฟล์กำหนดค่า/etc/nixos/configuration.nixหลักของ NixOS : environment.systemPackages = with pkgs; [ aspell-dict-en ]; แต่ถ้าฉันเรียกใช้sudo nixos-rebuild switchคำสั่ง NixOS เพื่ออัปเดตการกำหนดค่าและติดตั้งแพ็กเกจทั้งระบบที่ระบุโดยประกาศมันจะยกเลิกข้อผิดพลาด: error: undefined variable ‘aspell-dict-en’ at /etc/nixos/configuration.nix:44:5 ฉันรู้ว่าสำหรับแพ็คเกจจำนวนมากถึงแม้ว่าจะไม่ได้ทั้งหมดชื่อที่nix-envส่งคืนและชื่อที่ควรระบุในenvironment.systemPackagesตัวเลือกการกำหนดค่าจะแตกต่างกัน แต่ฉันไม่เข้าใจตรรกะ ฉันจะติดตั้งแพ็กเกจที่พบได้nix-envอย่างไร
21 nixos  nix 

3
ฉันจะสร้างที่เก็บโลคัลสำหรับ NixOS / nixpkgs ได้อย่างไร?
คำแนะนำทั้งหมดที่ฉันค้นหาเพื่อสร้างที่เก็บโลคัลของแพ็กเกจ Nix เกี่ยวข้องกับการสร้างโคลนโลคัลของที่nixpkgsเก็บหลักและเพิ่มลงในนั้น มีวิธีที่ฉันสามารถสร้างพื้นที่เก็บข้อมูลขนาดเล็กเพียงแค่มีแพคเกจ Add-on ท้องถิ่นของฉัน?

1
วิธีแยก /etc/nixos/configuration.nix เป็นโมดูลแยกกันได้อย่างไร
สมมติว่าฉันมีไฟล์กำหนดค่า NixOSง่ายมาก: { config, pkgs, ... }: { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ]; # SOME STUFF environment.systemPackages = with pkgs; [ emacs gitFull ]; # SOME STUFF } ฉันรู้ว่า NixOS ใช้ระบบโมดูลและโมดูลเป็น.nixไฟล์ ทุก.nixไฟล์ควรมีนิพจน์ห้ามที่ถูกต้อง(เช่นฟังก์ชั่นหรือชุด) นี่หมายความว่าไฟล์กำหนดค่า NixOS /etc/nixos/configuration.nixเป็นโมดูลซึ่งมีนิพจน์ Nix ฉันก็รู้ว่าเพื่อให้นิพจน์ห้ามในโมดูลอื่นมองเห็นโมดูลที่ฉันทำงานด้วยฉันสามารถใช้importฟังก์ชั่นในตัว ฉันต้องการที่จะแยกการประกาศของแพคเกจระบบ (รายการที่มีemacsและgitFull) packages.nixออกเป็นไฟล์ ฉันจะแบ่งไฟล์คอนฟิกูเรชัน NixOS …
14 nixos  nix 

2
จะค้นหาไฟล์ที่ไม่ได้ติดตั้งในแพ็คเกจบน NixOS ได้อย่างไร?
ผมใช้แพคเกจผู้จัดการห้ามบนNixOS libgtk-x11-2.0.so.0สมมติว่าผมต้องการที่จะติดตั้งแพคเกจที่ให้แฟ้ม ฉันจะหาแพ็คเกจที่ให้ไฟล์นี้คล้ายกับการกระจาย GNU / Linux อื่น ๆ ได้อย่างไร ขณะนี้ฉันต้อง google ไฟล์และหาแพคเกจที่มันอาจเป็นและหาแพคเกจที่สอดคล้องกันบนที่เก็บห้าม แต่ฉันต้องการวิธีการสำนวนมากขึ้น

1
คุณจะติดตั้งแพ็คเกจแบบใช้ครั้งเดียวใน NixOS ได้อย่างไร
ฉันมีกล่อง NixOS ที่ฉันเก็บไว้ในnixos-16.03ช่อง ฉันต้องการให้เครื่องอยู่ในสถานะที่เสถียรเป็นส่วนใหญ่และดังนั้นฉันจึงต้องการหลีกเลี่ยงการเปลี่ยนไปใช้nixos-unstableช่อง อย่างไรก็ตามฉันต้องติดตั้งแพ็คเกจรุ่นใหม่กว่าที่มีอยู่ในช่องนั้น ( nodejs-6_xในอินสแตนซ์นี้) ในคู่มือมีส่วนที่อธิบายการติดตั้ง One-Clickซึ่งดูเหมือนในตอนแรกเหมือนกับสิ่งที่ฉันต้องการ อย่างไรก็ตามเซิร์ฟเวอร์ Hydra ที่http://hydra.nixos.orgดูเหมือนจะไม่สามารถให้บริการ.nixpkgไฟล์ใด ๆที่nix-install-packageเครื่องมือใช้อธิบายไว้ในส่วนนั้น วิกิยังบันทึกกระบวนการที่สามารถปรับแต่งแพ็กเกจได้ (หน้านี้เรียกว่าModifying Packages ) ซึ่งฉันคิดว่าสามารถใช้เพื่อจุดประสงค์ของฉันได้แม้ว่ามันจะดูเหมือนว่าฉันกำลังต่อสู้กับเครื่องมือแทนที่จะใช้มัน ฉันถามเกี่ยวกับเรื่องนี้ใน IRC ด้วย (ขอบคุณM-Ralithสำหรับการตอบคำถามที่ไม่รู้ของฉันอย่างอดทน!) แต่ฉันก็ไม่เข้าใจเลยว่าจะใช้มันอย่างไร คำแนะนำคือ "แทนที่ src และเวอร์ชันใน nixpkgs config ของคุณ" ซึ่งดูเหมือนว่าฉันสามารถเขียนนิพจน์ใน.nixpkgs/configuration.nixและแทนที่คุณสมบัติเหล่านั้นสำหรับแพ็คเกจในช่องที่สมัครรับข้อมูลของฉัน ( nixos-16.03) เมื่อฉันถามเกี่ยวกับแพคเกจที่ไม่มีอยู่ในช่องทางคำแนะนำคือ "เพื่อระบุแพคเกจทั้งหมดแทนที่จะเขียนทับ src และเวอร์ชั่น" ซึ่งฉันใช้หมายความว่าฉันจะต้องทำซ้ำนิพจน์ทั้งนิพจน์สำหรับแพ็คเกจ ฉันสนใจใน.nix-env สำหรับแพ็คเกจที่มีอยู่ในช่องอื่นที่ฉันต้องการติดตั้ง แต่อยู่ในช่องปัจจุบันของฉันจะมีวิธีที่ดีกว่านี้ไหม? nix-build <url> | nix-env -iมันเกือบจะรู้สึกเหมือนฉันควรจะสามารถที่จะทำสิ่งที่ชอบ สิ่งที่เหมาะสมที่สุดคือการติดตั้งตัวเลือกนี้ออกไป แต่ไม่มีการกำหนดค่าที่อาจป้องกันไม่ให้อัปเกรดภายหลังในกรณีที่ช่องสัญญาณปัจจุบันของฉันถูกติดตาม
9 nixos  nix  nixpkgs 

3
ห้าม: ทดสอบการข้ามหน่วยเมื่อติดตั้งแพ็คเกจ Haskell
ฉันใช้ Nix เพื่อติดตั้งแพ็คเกจใต้บ้านของฉัน (ดังนั้นจึงไม่มีแพ็คเกจไบนารี) บนโฮสต์ที่ใช้ร่วมกันที่มีทรัพยากร จำกัด ฉันพยายามติดตั้ง git-annex เมื่อสร้างหนึ่งในการพึ่งพาของมัน haskell-lens การทดสอบยูนิตจะใช้หน่วยความจำมากจนถูกฆ่าและการติดตั้งล้มเหลว มีวิธีข้ามการทดสอบหน่วยเพื่อรับแพคเกจติดตั้งหรือไม่ ฉันดูผู้สร้างพันธมิตรและhaskell-packages.nixดูเหมือนว่าคุณสามารถปิดการทดสอบโดยตั้งค่าenableCheckPhaseเป็นเท็จ ฉันลองสิ่งต่อไปนี้~/.nixpkgs/config.nixแต่การทดสอบยังคงทำงานอยู่: { packageOverrides = pkgs: with pkgs; { # ...other customizations... haskellPackages = haskellPackages.override { extension = self : super : { self.lens = self.disableTest self.lens; }; }; }; }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.