mirror of
https://github.com/foo-dogsquared/wiki.git
synced 2025-01-31 04:58:21 +00:00
5242780327
Added more notes as I developed the Guix overlay for NixOS over time. It does have a nice experience, overall (albeit clunky one due to the documentation).
23 lines
1.6 KiB
Org Mode
23 lines
1.6 KiB
Org Mode
:PROPERTIES:
|
|
:ID: 75790f28-48de-462d-9503-eb2d6206df72
|
|
:END:
|
|
#+title: nixpkgs setup hooks
|
|
#+date: 2022-09-02 23:33:05 +08:00
|
|
#+date_modified: 2022-09-03 17:41:41 +08:00
|
|
#+language: en
|
|
|
|
|
|
Setup hooks are additional steps given from a package typically written as a shell script.
|
|
|
|
They are usually defined in a package with common build steps that would otherwise be repeated on a lot of packages such as...
|
|
|
|
- [[https://github.com/NixOS/nixpkgs/blob/350fd0044447ae8712392c6b212a18bdf2433e71/pkgs/development/tools/build-managers/meson/setup-hook.sh][Meson]] where it gives common arguments such as the [[https://www.gnu.org/software/automake/manual/html_node/Standard-Directory-Variables.html][GNU directory variables]] relative to the output from the derivation (i.e., ~out~).
|
|
- [[https://github.com/NixOS/nixpkgs/blob/350fd0044447ae8712392c6b212a18bdf2433e71/pkgs/development/interpreters/guile/setup-hook-3.0.sh][Guile]] where it set up different search paths related to GNU Guile.
|
|
- [[https://github.com/NixOS/nixpkgs/blob/350fd0044447ae8712392c6b212a18bdf2433e71/pkgs/development/interpreters/python/wrap.sh][Python]] also works similarly to Guile's only with a lot more of setup hooks for building and wrapping programs build with Python as it is used for various functions (e.g., =buildPythonPackage=, =buildPythonApplication=).
|
|
|
|
You can see more setup hooks example at ~pkgs/build-support/setup-hooks~ from roam:nixpkgs.
|
|
|
|
- Adding a setup hook is made with ~setupHook~ attribute from ~stdenv.mkDerivation~ where it needs either a path or a derivation.
|
|
|
|
- You could also make a setup hook with additional environment with ~makeSetupHook~ function.
|