Idris
نصب Idris
سادهترین راه برای به دست آوردن یک نسخه کارآمد idris، نصب صفت (attribute) idris است:
$ nix-env -f "<nixpkgs>" -iA idris با این حال، این کار تنها کتابخانههای prelude و base را فراهم میکند. برای نصب idris به همراه کتابخانههای اضافی، میتوانید از تابع idrisPackages.with-packages استفاده کنید؛ به عنوان مثال در یک اورلی در ~/.config/nixpkgs/overlays/my-idris.nix:
self: super: {
myIdris =
with self.idrisPackages;
with-packages [
contrib
pruviloj
];
} و سپس:
$ # On NixOS
$ nix-env -iA nixos.myIdris
$ # On non-NixOS
$ nix-env -iA nixpkgs.myIdris برای مشاهده همه بستههای موجود Idris:
$ # On NixOS
$ nix-env -qaPA nixos.idrisPackages
$ # On non-NixOS
$ nix-env -qaPA nixpkgs.idrisPackages به همین ترتیب، ورود به یک nix-shell:
$ nix-shell -p 'idrisPackages.with-packages (with idrisPackages; [ contrib pruviloj ])' راهاندازی Idris با پشتیبانی از کتابخانهها
برای دسترسی به این کتابخانهها در idris، آن را به ازای هر کتابخانه با آرگومان -p <library name> فراخوانی کنید:
$ nix-shell -p 'idrisPackages.with-packages (with idrisPackages; [ contrib pruviloj ])'
[nix-shell:~]$ idris -p contrib -p pruviloj فهرستی از تمام بستههای موجود که باینری Idris به آنها دسترسی دارد، از طریق --listlibs در دسترس است:
$ idris --listlibs
00prelude-idx.ibc
pruviloj
base
contrib
prelude
00pruviloj-idx.ibc
00base-idx.ibc
00contrib-idx.ibc ساخت یک پروژه Idris با Nix
بهعنوان مثالی از نحوهٔ ایجاد یک عبارت نیکس (Nix expression) برای یک بسته Idris، در ادامه عبارت مربوط به idrisPackages.yaml آورده شده است:
{
lib,
build-idris-package,
fetchFromGitHub,
contrib,
lightyear,
}:
build-idris-package {
name = "yaml";
version = "2018-01-25";
# This is the .ipkg file that should be built, defaults to the package name
# In this case it should build `Yaml.ipkg` instead of `yaml.ipkg`
# This is only necessary because the yaml packages ipkg file is
# different from its package name here.
ipkgName = "Yaml";
# Idris dependencies to provide for the build
idrisDeps = [
contrib
lightyear
];
src = fetchFromGitHub {
owner = "Heather";
repo = "Idris.Yaml";
rev = "5afa51ffc839844862b8316faba3bafa15656db4";
hash = "sha256-h28F9EEPuvab6zrfeE+0k1XGQJGwINnsJEG8yjWIl7w=";
};
meta = {
description = "Idris YAML lib";
homepage = "https://github.com/Heather/Idris.Yaml";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.brainrape ];
};
} با فرض اینکه این فایل با نام yaml.nix ذخیره شده باشد، با استفاده از روش زیر قابل ساخت است:
$ nix-build -E '(import <nixpkgs> {}).idrisPackages.callPackage ./yaml.nix {}' یا میتوان از
with import <nixpkgs> { };
{
yaml = idrisPackages.callPackage ./yaml.nix { };
} در یک فایل دیگر (مثلاً default.nix) تا بتوانید آن را با
$ nix-build -A yaml ارسال گزینهها به دستورات idris
تابع build-idris-package همچنین مقادیر ورودی اختیاری را برای تنظیم گزینههای اضافی جهت دستورات idris مورد استفاده ارائه میدهد.
بهطور خاص، میتوانید idrisBuildOptions، idrisTestOptions، idrisInstallOptions و idrisDocOptions را جهت ارائه گزینههای اضافی به دستور idris به ترتیب هنگام ساخت، تست، نصب و تولید مستندات برای بسته خود تنظیم کنید.
برای نمونه میتوانید تنظیم کنید
build-idris-package {
idrisBuildOptions = [
"--log"
"1"
"--verbose"
];
# ...
} برای درخواست خروجی تفصیلی در طول فاز ساخت idris.