Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

build.hacks

build.hacks.nixpkgsPrebuilt

Use a package output built by Nixpkgs Python infrastructure.

Adapts a package by:

  • Stripping dependency propagation
  • Throwing away shell script wrapping
  • Filtering out sys.path dependency injection

This adaptation will of course break anything depending on other packages by $PATH, as these are injected by wrappers.

Example

nixpkgsPrebuilt {
  from = pkgs.python3Packages.torchWithoutCuda;
  prev = prev.torch;
}
=>
«derivation /nix/store/3864g3951bkbkq5nrld5yd8jxq7ss72y-torch-2.4.1.drv»

Type

nixpkgsPrebuilt :: AttrSet -> derivation

Arguments

from
Prebuilt package to transform output from
prev
Previous pyproject.nix package to take passthru from

build.hacks.importCargoLock

Build a Cargo (Rust) package using rustPlatform.importCargoLock to fetch Rust dependencies.

Uses IFD (import-from-derivation) on non-local packages.

Example

importCargoLock {
  prev = prev.cryptography;
  # Lock file relative to source root
  lockFile = "src/rust/Cargo.lock";
}
=>
«derivation /nix/store/g3z1zlmc0sqpd6d5ccfrx3c4w4nv5dzr-cryptography-43.0.0.drv»

Type

importCargoLock :: AttrSet -> derivation

Arguments

prev
Previous pyproject.nix package
importCargoLockArgs
Arguments passed directly to rustPlatform.importCargoLock function
cargoRoot
Path to Cargo source root
lockFile
Path to Cargo.lock (defaults to ${cargoRoot}/Cargo.lock). A relative string is resolved against the package source root, while a path or an absolute string (such as a store path) is used verbatim.
doUnpack
Whether to unpack sources using an intermediate derivation
unpackDerivationArgs
Arguments passed directly to intermediate unpacker derivation (unused for path sources)
cargo
cargo derivation
rustc
rustc derivation
pkg-config
pkg-config derivation

build.hacks.toNixpkgs

Create a nixpkgs Python (buildPythonPackage) compatible package from a pyproject.nix build package.

Adapts a package by:

  • Activating a wheel output, if not already enabled
  • Create a package using generated wheel as input

Note: toNixpkgs is still experimental and subject to change.

Example

toNixpkgs {
  inherit pythonSet;
  packages = [ "requests" ];
}
=>
«lambda @ /nix/store/f05hjk9fh1m5py5j1ixzly07p4lla56x-source/build/hacks/default.nix:263:5»

Type

nixpkgsPrebuilt :: AttrSet -> derivation

Arguments

pythonSet
Pyproject.nix build Python package set
packages
List/predicate of overlay member packages