From 8cd8a5152eba81fbee4ccef18f98a9d8f2a1a066 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Sun, 28 May 2023 21:48:43 +0800 Subject: doc: add introduction to build helpers Co-authored-by: Valentin Gagarin --- doc/build-helpers.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'doc/build-helpers.md') diff --git a/doc/build-helpers.md b/doc/build-helpers.md index 40ce7173a221..06737e166760 100644 --- a/doc/build-helpers.md +++ b/doc/build-helpers.md @@ -1,5 +1,21 @@ # Build helpers {#part-builders} +A build helper is a function that produces derivations. + +:::{.warning} +This is not to be confused with the [`builder` argument of the Nix `derivation` primitive](https://nixos.org/manual/nix/unstable/language/derivations.html), which refers to the executable that produces the build result, or [remote builder](https://nixos.org/manual/nix/stable/advanced-topics/distributed-builds.html), which refers to a remote machine that could run such an executable. +::: + +Such a function is usually designed to abstract over a typical workflow for a given programming language or framework. +This allows declaring a build recipe by setting a limited number of options relevant to the particular use case instead of using the `derivation` function directly. + +[`stdenv.mkDerivation`](#part-stdenv) is the most widely used build helper, and serves as a basis for many others. +In addition, it offers various options to customize parts of the builds. + +There is no uniform interface for build helpers. +[Trivial build helpers](#chap-trivial-builders) and [fetchers](#chap-pkgs-fetchers) have various input types for convenience. +[Language- or framework-specific build helpers](#chap-language-support) usually follow the style of `stdenv.mkDerivation`, which accepts an attribute set or a fixed-point function taking an attribute set. + ```{=include=} chapters build-helpers/fetchers.chapter.md build-helpers/trivial-build-helpers.chapter.md -- cgit 1.4.1