สมมติว่าฉันค้นหาสำหรับแพคเกจการติดตั้งโดยใช้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
อย่างไร
-P
ตัวเลือกที่ไม่ได้ทำงานกับ--installed
ที่สามารถมองเห็นได้ด้วยnix-env -q --installed -P | grep terminus
ซึ่งพิมพ์แทนterminus-font
terminus_font
วิธีแก้ปัญหาคือการใช้nix-env -qaP | grep terminus-font
แต่มันหมายความว่าคุณไม่สามารถถ่ายโอนข้อมูลการส่งออกของเข้าไปในnix-env -q --installed
configuration.nix