docs: create docs/nix/pkgs-tools-reference
This commit is contained in:
parent
b3713a4a9d
commit
b18cebb6b9
150
docs/nix/pkgs-tools-reference.md
Normal file
150
docs/nix/pkgs-tools-reference.md
Normal file
|
@ -0,0 +1,150 @@
|
|||
---
|
||||
title: Nixpkgs Tools
|
||||
description: An overview of the various functions unrelated to building source code available in Nixpkgs.
|
||||
published: true
|
||||
date: 2024-06-22T16:41:59.925Z
|
||||
tags: nix, nixpkgs
|
||||
editor: markdown
|
||||
dateCreated: 2024-06-22T16:41:59.925Z
|
||||
---
|
||||
|
||||
# Introduction to Nixpkgs' tools
|
||||
|
||||
This page is an overview of various functionality included in Nixpkgs, that is not directly related to building packages from source code.
|
||||
|
||||
## Fetchers (`pkgs.fetch*`)
|
||||
|
||||
Fetchers such as `pkgs.fetchurl` allow to download content such as package sources, by specifying an expected hash of the content.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#chap-pkgs-fetchers)
|
||||
|
||||
## Wrappers (`pkgs.runCommand*`, `pkgs.write*`)
|
||||
|
||||
Functions such as `pkgs.runCommand` or `pkgs.writeShellScript` are use-case specific wrappers around `pkgs.stdenv` with simple arguments.
|
||||
Not to be confused with `pkgs.writers`.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#chap-trivial-builders)
|
||||
|
||||
## Data Formats (`pkgs.writers`)
|
||||
|
||||
Data format or application focussed writers that transform Nix expressions into the respective format.
|
||||
Not to be confused with `pkgs.write*`.
|
||||
|
||||
Resource:
|
||||
|
||||
- [Nixpkgs source](https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/writers)
|
||||
|
||||
## Config File Formats (`pkgs.formats`)
|
||||
|
||||
Produce various config file formats from nix expressions.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs source](https://github.com/NixOS/nixpkgs/blob/master/pkgs/pkgs-lib/formats.nix)
|
||||
|
||||
## Custom Build Environments (`pkgs.mkShell`)
|
||||
|
||||
Convenience wrapper around `mkDerivation` for usage with `nix-shell` / `nix develop`.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell)
|
||||
|
||||
## Creating Hooks (`pkgs.makeSetupHook`)
|
||||
|
||||
Helper to produce hooks for the `stdenv` build phases.
|
||||
(For more info on hooks in general, see [Language/Framework Specific Builders in Nixpkgs#Hooks](./pkgs-languages-frameworks#hooks)).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-pkgs.makeSetupHook)
|
||||
|
||||
## Test Utilities (`pkgs.testers`)
|
||||
|
||||
Derivation builders for testing various properties of other derivations.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#chap-testers)
|
||||
|
||||
## `fakeNss`
|
||||
|
||||
Including this *derivation* in, e.g. docker images or other environments without them, provides a simplistic set of user/group entries, to allow binaries expecting them to exist to work.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-fakeNss)
|
||||
|
||||
## Standard Filesystem Layout Wrapper (`buildFHSEnv`)
|
||||
|
||||
Wraps binaries that expect a [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard)-compatible filesystem layout to run unpatched on NixOs.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-fhs-environments)
|
||||
|
||||
## Run AppImages (`pkgs.appimageTools`)
|
||||
|
||||
A set of functions to run or extract [AppImages](https://appimage.org/).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://appimage.org/)
|
||||
|
||||
## Docker Images (`pkgs.dockerTools`)
|
||||
|
||||
A set of functions to create, modify, import or export docker images.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-dockerTools)
|
||||
|
||||
## Build OCI Containers (`pkgs.ociTools`)
|
||||
|
||||
A set of function to create [OCI containers](https://github.com/opencontainers/runtime-spec/blob/v1.0.0/spec.md).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-ociTools)
|
||||
|
||||
## Build Portable Services (`pkgs.portableService`)
|
||||
|
||||
A function to create [systemd's Portable Services](https://systemd.io/PORTABLE_SERVICES/).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-portableService)
|
||||
|
||||
## Build Disk Images (`make-disk-image.nix`)
|
||||
|
||||
This function creates disk images in various formats (e.g. raw, QCOW2 (QEMU), VDI (VirtualBox), etc.).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-make-disk-image)
|
||||
|
||||
## Run Derivations inside a VM (`pkgs.vmTools`)
|
||||
|
||||
Various tools to run derivations inside a Qemu/KVM backed virtual machine.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-vm-tools)
|
||||
|
||||
## Incremental Builds (`pkgs.checkpointBuildTools`)
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-checkpoint-build)
|
||||
|
||||
## Flat-file Binary Cache (`pkgs.mkBinaryCache`)
|
||||
|
||||
Create Nix flat-file binary caches.
|
||||
|
||||
Resources:
|
||||
|
||||
- [Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-binary-cache)
|
Loading…
Reference in a new issue