OFFSET偏移
← All reading paths

DOSSIER 17 / 5 ARTICLES

Nix development environments and binary compatibility

From project shells to language dependencies, ELF loaders, and package overrides.

Start with the first article

Follow the question further.

Organize your reading around reproducible development environments, automatic directory loading, language toolchains, and library paths, retaining the development-workflow and package-modification paths in the source MOC.

  1. 01

    Distinguish temporary shells, devShells, and direnv automatic-loading responsibilities first.

    Progressing from nix-shell to devShell and direnv

    Separate temporary tools, locked project environments, and automatic directory loading into three clear steps.

    Read article
  2. 02

    Find complete configurations by language, then read the database, container, and Justfile combinations.

    Nix development environments: languages, databases, and full-stack examples

    Retain complete configurations for Python, Node, Rust, Go, Java, C/C++, Haskell, databases, and Justfile.

    Read article
  3. 03

    Use ldd, file indexes, and plugin paths to diagnose mixed Python/Qt ABIs.

    Dependency boundaries in Python, uv, and Matplotlib/Qt

    Trace Python packages, system libraries, and plugin paths through Qt5Agg and PyPI wheel troubleshooting examples.

    Read article
  4. 04

    Start with execve and the ELF interpreter to determine whether nix-ld is needed.

    nix-ld: precompiled ELF binaries, loaders, and library paths

    Start with an existing file that reports ENOENT, then connect ELF diagnostics, packaging fixes, and nix-ld configuration step by step.

    Read article
  5. 05

    Connect the overlay to its actual consumer, then verify builds of the affected packages.

    Overlays, override, and overrideAttrs

    Adjust arguments and add patches to existing package definitions, then make the system actually consume the overlay.

    Read article
← More reading pathsAll articles ↗