aboutsummaryrefslogtreecommitdiffstats
path: root/openspec/changes/archive/2026-09-24-enable-nix-ld/specs/dynamic-linking-support/spec.md
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <tom@vanderlee.com>2026-09-24 20:22:57 +0200
committerGravatar Tom van der Lee <tom@vanderlee.com>2026-09-24 20:22:57 +0200
commit1f266cfa4048d5c71b39e3f458aa5f1cfa348579 (patch)
tree50510e273156e65adf4f57870517ef28940ad181 /openspec/changes/archive/2026-09-24-enable-nix-ld/specs/dynamic-linking-support/spec.md
parentb0c5452e3bb1e3bdbb27181e331fc959fa43f4fc (diff)
downloaddesktop-flake-1f266cfa4048d5c71b39e3f458aa5f1cfa348579.tar.gz
desktop-flake-1f266cfa4048d5c71b39e3f458aa5f1cfa348579.tar.bz2
desktop-flake-1f266cfa4048d5c71b39e3f458aa5f1cfa348579.zip
Enable nix-ld so uv-managed prebuilt binaries run on NixOS
uv fetches prebuilt CPython interpreters and native wheel extensions that expect a standard glibc loader path, which doesn't exist on NixOS without nix-ld. Enables it unconditionally on every NixOS host and extends its library set with common CPython native-extension dependencies not already covered by nix-ld's own defaults. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Diffstat (limited to 'openspec/changes/archive/2026-09-24-enable-nix-ld/specs/dynamic-linking-support/spec.md')
-rw-r--r--openspec/changes/archive/2026-09-24-enable-nix-ld/specs/dynamic-linking-support/spec.md23
1 files changed, 23 insertions, 0 deletions
diff --git a/openspec/changes/archive/2026-09-24-enable-nix-ld/specs/dynamic-linking-support/spec.md b/openspec/changes/archive/2026-09-24-enable-nix-ld/specs/dynamic-linking-support/spec.md
new file mode 100644
index 0000000..e859aa4
--- /dev/null
+++ b/openspec/changes/archive/2026-09-24-enable-nix-ld/specs/dynamic-linking-support/spec.md
@@ -0,0 +1,23 @@
1## Purpose
2
3Lets NixOS hosts built from this flake run prebuilt, foreign (non-Nix-built) dynamically-linked binaries — such as the interpreters and native wheel extensions that developer tools like `uv` fetch at runtime — instead of failing with a missing-interpreter execution error.
4
5## ADDED Requirements
6
7### Requirement: NixOS hosts run foreign dynamically-linked binaries via nix-ld
8Every NixOS host built from this flake's shared system module SHALL enable `nix-ld`, so that prebuilt binaries linked against a standard (non-NixOS) dynamic loader path execute correctly instead of failing to run.
9
10#### Scenario: A uv-managed prebuilt Python interpreter executes
11- **WHEN** `uv python install` downloads a prebuilt CPython interpreter and that interpreter is invoked
12- **THEN** the interpreter starts successfully instead of failing with a missing-interpreter or "cannot execute binary file" error
13
14#### Scenario: A native wheel extension loads its shared library dependencies
15- **WHEN** a Python package installed by `uv` includes a prebuilt native (C-extension) binary that depends on common shared libraries (e.g. `ncurses`, `libffi`, `sqlite`, `readline`, `gdbm`, `expat`, or another library covered by `nix-ld`'s configured library set)
16- **THEN** the extension loads its dependencies successfully instead of failing with a missing shared library error
17
18### Requirement: The nix-ld library set is host-wide and additive
19The set of libraries made available to foreign binaries via `nix-ld` SHALL be defined once for all NixOS hosts built from this flake's shared system module, and SHALL be extensible by appending further libraries without removing or replacing the existing set.
20
21#### Scenario: A host-level addition does not remove existing libraries
22- **WHEN** a NixOS host's own configuration adds an additional library to the nix-ld library set
23- **THEN** the libraries already provided by the shared system module remain available, unaffected by the addition