Làm cách nào để tạo kho lưu trữ cục bộ cho NixOS / nixpkgs?


17

Tất cả các hướng dẫn tôi tìm thấy để tạo một kho lưu trữ cục bộ của các gói Nix liên quan đến việc tạo một bản sao cục bộ của nixpkgskho lưu trữ chính và thêm vào đó.

Có cách nào để tôi có thể tạo một kho lưu trữ nhỏ chỉ chứa các gói bổ trợ cục bộ không?

Câu trả lời:


6

Có, chỉ cần tạo một biểu thức cho gói duy nhất. Bạn có thể nhận được sự phụ thuộc từ nixpkgs bằng cách pkgs = import <nixpkgs> {};.


5

Bài đăng trên blog này có một số chi tiết: http://sandervanderburg.blogspot.no/2014/07/managing-private-nix-packages-outside.html

Để biết thêm chi tiết từ cấp thấp hơn, có loạt nix-Pill: http://lethalman.blogspot.no/2014/07/nix-pill-1-why-you-should-give-it- thử.html

Nhưng tôi nghĩ cách tiếp cận cơ bản là tạo phiên bản của riêng bạn ~/.nix-defexpr/channels_root/nixos/pkgs/top-level/all-packages.nix, giả sử mypkgs.nixthêm phụ thuộc từ "repo" mặc định bằng cách nhập <nixpkgs>.

Cài đặt gói bằng cách làm nix-env -f mypkgs.nix -i DERIVATION_NAME

Nhưng vì nix dựa trên một ngôn ngữ toàn diện, nên tôi đoán là vô cùng nhiều cách.


1

Tôi không có nghĩa là một chuyên gia Nix vì vậy tôi không biết đây có phải là cách tốt nhất không, nhưng đó là những gì tôi làm. Tôi có một repo cục bộ cho các gói trong $HOME/nix-localđó chứa một số tệp gói vault/default.nix, blackbox/default.nixv.v. và một config.nixtệp xác định packageOverridesđể gọi chúng. Vì vậy, một cái gì đó như:

$ cat nix-local/config.nix
{
  packageOverrides = pkgs: rec {
    vault = pkgs.callPackage ./vault {};
    blackbox = pkgs.callPackage ./blackbox {};
    # ...
}

$ export NIXPKGS_CONFIG=$HOME/nix-local/config.nix    

Bạn có thể xem toàn bộ repo tại https://github.com/telent/nix-local


4
Đối với bất kỳ ai đọc điều này kể từ khoảng năm 2017, repo này hiện không được duy trì và tôi thực sự khuyên bạn nên đọc "lớp phủ", một cách sạch sẽ hơn nhiều để làm những gì mà góiOverrides thường làm
telent
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.