2. نخستین بسته
با انتخاب کمکرسان ساخت مربوط به زبان برنامه و تنظیم چند صفت، یک برنامه را با Nixpkgs بستهبندی کنید.
هر بومسازگان زبانی، کمکرسان ساخت خاص خود را دارد. برای دیدن مجموعه کامل، را ببینید.
بستهبندی یک برنامه Go
buildGoModule برنامههای Go را که از ماژولهای Go استفاده میکنند میسازد.
بسته را در package.nix بنویسید:
# package.nix { buildGoModule, fetchFromGitHub, lib, }: buildGoModule (finalAttrs: { pname = "pet"; version = "0.3.4"; src = fetchFromGitHub { owner = "knqyf263"; repo = "pet"; tag = "v${finalAttrs.version}"; hash = "sha256-Gjw1dRrgM8D3G7v6WIM2+50r4HmTXvx0Xxme2fH9TlQ="; }; vendorHash = "sha256-6hCgv2/8UIRHw1kCe3nLkxF23zE/7t5RDwEjSzX3pBQ="; meta = { description = "Simple command-line snippet manager, written in Go"; homepage = "https://github.com/knqyf263/pet"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ kalbasit ]; }; })
buildGoModule به pname، version، src و vendorHash نیاز دارد.
نسخه Nixpkgs را ثابتسازی کرده و بسته را از default.nix فراخوانی کنید:
# default.nix
let
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz";
pkgs = import nixpkgs { };
in
pkgs.callPackage ./package.nix { } آن را بسازید:
$ nix-build ./default.nix
# or equivalent
$ nix-build آن را اجرا کنید:
$ ./result/bin/pet --help
pet - Simple command-line snippet manager. vendorHash وابستگیهای دریافتشده را ثابت میکند.
برای یافتن مقدار آن:
vendorHashرا روی یک رشته خالی""قرار دهید.nix-buildرا اجرا کنید.- مقدار صحیح را از خطا کپی کرده و در
vendorHashقرار دهید.
برای هر صفت (attribute) و موارد استفاده پیشرفته، مرجع Go را ببینید.