mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-11-13 12:13:36 +01:00
chore(aquamarine): use NixOS's NPU module with nixos-unstable-small (#527)
* chore(aquamarine): take the NPU stack from nixos-unstable-small * refactor(aquamarine): load the NPU driver via hardware.cpu.intel.npu Assisted-by: DeepSeek Harness (claude-opus-5-5)
This commit is contained in:
1 parent
d5ee0b1699
commit
093f3ad81a
7 files changed
+39
-46
No files matched your search
+8
-8
@@ -16,14 +16,14 @@ obsolete workarounds get rolled back instead of lingering.
|
||||
|
||||
A version or revision pinned for a reason that can go away.
|
||||
|
||||
| ID | What & where | Why | Removal condition | Added | Revisit | Status |
|
||||
| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ---------- | -------------------------- | ------ |
|
||||
| WA-004 | `catppuccin` on `main` — `flake.nix` | `main` carries the nodejs→nodejs-slim deprecation fix, which is not in a release | Switch to a release tag once it includes the fix | 2026-09-25 | on catppuccin release | active |
|
||||
| WA-006 | `nixpkgs-blender` — `flake.nix` | Blender 5.2 LTS + CUDA/OptiX pin; keeps `just up` from triggering a full source rebuild | Bump deliberately when needed; drop the pin if the current nixpkgs build is acceptable | 2026-07-24 | deliberate | active |
|
||||
| WA-020 | `fcitx5-vinput` pinned to release tag `v2.4.2` — `flake.nix`; consumer `home/linux/gui/base/vinput/default.nix` | Tracks a release tag instead of a branch, so `just up` stays on that release | Bump to a newer release tag when its changes are wanted | 2026-10-04 | on vinput release | active |
|
||||
| WA-021 | `nix-x86-on-aarch64` input — our fork of rowanG077's patched FEX + muvm runtime — `flake.nix`; `hosts/12kingdoms-shoukei/game/` | FEX does not support 16K pages, so x86/x86_64 apps and games on shoukei need this pinned flake's 4K-page microVM runtime; our fork lets upstream changes be reviewed before use | Drop once FEX supports 16K pages directly, or nixpkgs/nixos-apple-silicon ships an equivalent runtime | 2026-10-07 | on FEX/nixpkgs/muvm update | active |
|
||||
| WA-023 | `nix.package = pkgs.nixVersions.latest` — `modules/nixos/base/nix.nix` | NixOS is opted into Nix 2.35 (2.35.3), which nixpkgs ships as `nixVersions.latest`, while `nixVersions.stable` is still 2.34 (2.34.9) | Drop the override and fall back to the default `pkgs.nix` once `nixVersions.stable` is 2.35 or newer | 2026-10-07 | eval warning | active |
|
||||
| WA-037 | `nixpkgs-npu` input pinned to `2ddccb854d89` — the `openvino-npu-compiler` branch of `ryan4yin/nixpkgs`, carrying [NixOS/nixpkgs#570230](https://github.com/NixOS/nixpkgs/pull/570230) — `flake.nix`; consumer `pkgs-npu` in `outputs/default.nix`, `hosts/idols-aquamarine/asr.nix` | The Intel NPU compiler, and the driver change that loads it, are unmerged, so the NPU driver the Whisper service needs comes from that branch | Drop the input and load `intel-npu-driver` from `nixos-unstable` once #570230 merges | 2026-10-17 | when #570230 merges | active |
|
||||
| ID | What & where | Why | Removal condition | Added | Revisit | Status |
|
||||
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ---------- | ------------------------------------- | ------ |
|
||||
| WA-004 | `catppuccin` on `main` — `flake.nix` | `main` carries the nodejs→nodejs-slim deprecation fix, which is not in a release | Switch to a release tag once it includes the fix | 2026-09-25 | on catppuccin release | active |
|
||||
| WA-006 | `nixpkgs-blender` — `flake.nix` | Blender 5.2 LTS + CUDA/OptiX pin; keeps `just up` from triggering a full source rebuild | Bump deliberately when needed; drop the pin if the current nixpkgs build is acceptable | 2026-07-24 | deliberate | active |
|
||||
| WA-020 | `fcitx5-vinput` pinned to release tag `v2.4.2` — `flake.nix`; consumer `home/linux/gui/base/vinput/default.nix` | Tracks a release tag instead of a branch, so `just up` stays on that release | Bump to a newer release tag when its changes are wanted | 2026-10-04 | on vinput release | active |
|
||||
| WA-021 | `nix-x86-on-aarch64` input — our fork of rowanG077's patched FEX + muvm runtime — `flake.nix`; `hosts/12kingdoms-shoukei/game/` | FEX does not support 16K pages, so x86/x86_64 apps and games on shoukei need this pinned flake's 4K-page microVM runtime; our fork lets upstream changes be reviewed before use | Drop once FEX supports 16K pages directly, or nixpkgs/nixos-apple-silicon ships an equivalent runtime | 2026-10-07 | on FEX/nixpkgs/muvm update | active |
|
||||
| WA-023 | `nix.package = pkgs.nixVersions.latest` — `modules/nixos/base/nix.nix` | NixOS is opted into Nix 2.35 (2.35.3), which nixpkgs ships as `nixVersions.latest`, while `nixVersions.stable` is still 2.34 (2.34.9) | Drop the override and fall back to the default `pkgs.nix` once `nixVersions.stable` is 2.35 or newer | 2026-10-07 | eval warning | active |
|
||||
| WA-037 | `nixpkgs-small` input on `nixos-unstable-small`, which carries [NixOS/nixpkgs#570230](https://github.com/NixOS/nixpkgs/pull/570230) — `flake.nix`; consumer `pkgs-small` in `outputs/default.nix`, the `intel-npu-driver` overlay in `hosts/idols-aquamarine/hardware-intel-cpu.nix`, and the Python env in `hosts/idols-aquamarine/asr.nix` | The Intel NPU compiler, and the driver change that loads it, are not in `nixos-unstable` yet; `openvino-genai` 2026.4.0.0 failed to build there | Drop the overlay once #570230 reaches `nixos-unstable`; drop the input once `openvino-genai` also builds there | 2026-10-17 | when #570230 reaches `nixos-unstable` | active |
|
||||
|
||||
## Workarounds
|
||||
|
||||
|
||||
Generated
+17
-17
@@ -676,22 +676,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-npu": {
|
||||
"locked": {
|
||||
"lastModified": 1792250783,
|
||||
"narHash": "sha256-J/gNk34hn774ccDrvJuSWW9EFLvIvyy3t4HnuTcN4tU=",
|
||||
"owner": "ryan4yin",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "2ddccb854d89eb027e09198368073fdb9cde4d1d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ryan4yin",
|
||||
"ref": "openvino-npu-compiler",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-patched": {
|
||||
"locked": {
|
||||
"lastModified": 1793459509,
|
||||
@@ -708,6 +692,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-small": {
|
||||
"locked": {
|
||||
"lastModified": 1794378162,
|
||||
"narHash": "sha256-gJGP/BWdmF1pbjAzbuICPSeGkMncAiDt9PRe7L13664=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c24da8b1d51f447e8faedcb5cb823b3f84346a60",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable-small",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1793183032,
|
||||
@@ -896,8 +896,8 @@
|
||||
"nixpkgs-blender": "nixpkgs-blender",
|
||||
"nixpkgs-darwin": "nixpkgs-darwin",
|
||||
"nixpkgs-master": "nixpkgs-master",
|
||||
"nixpkgs-npu": "nixpkgs-npu",
|
||||
"nixpkgs-patched": "nixpkgs-patched",
|
||||
"nixpkgs-small": "nixpkgs-small",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nu_scripts": "nu_scripts",
|
||||
"nur-ryan4yin": "nur-ryan4yin",
|
||||
|
||||
@@ -32,10 +32,9 @@
|
||||
nixpkgs-patched.url = "github:ryan4yin/nixpkgs/nixos-unstable-patched";
|
||||
# get some latest packages from the master branch
|
||||
nixpkgs-master.url = "github:nixos/nixpkgs/master";
|
||||
# ryan4yin/nixpkgs branch carrying NixOS/nixpkgs#570230 (the Intel NPU
|
||||
# compiler and the driver change that loads it). Only aquamarine consumes it,
|
||||
# through `pkgs-npu`; drop it once the PR merges.
|
||||
nixpkgs-npu.url = "github:ryan4yin/nixpkgs/openvino-npu-compiler";
|
||||
# Ahead of nixos-unstable for aquamarine's NPU stack, through `pkgs-small`;
|
||||
# removal condition in docs/WORKAROUNDS.md WA-037.
|
||||
nixpkgs-small.url = "github:nixos/nixpkgs/nixos-unstable-small";
|
||||
# NixOS MicroVMs -- run the VMs directly on the hosts, replacing the former KubeVirt
|
||||
microvm = {
|
||||
url = "github:microvm-nix/microvm.nix";
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
mylib,
|
||||
myvars,
|
||||
pkgs,
|
||||
pkgs-npu,
|
||||
pkgs-small,
|
||||
...
|
||||
}:
|
||||
let
|
||||
@@ -52,9 +52,9 @@ let
|
||||
'';
|
||||
|
||||
# openvino-genai 2026.4.0.0 fails to compile against the OpenVINO headers in
|
||||
# nixos-unstable (no matching constructor in continuous_batching); the branch's
|
||||
# nixpkgs builds it, and the service has to match the NPU stack anyway.
|
||||
pythonEnv = pkgs-npu.python3.withPackages (ps: [
|
||||
# nixos-unstable (no matching constructor in continuous_batching); the
|
||||
# service takes it from the same nixpkgs as the NPU stack.
|
||||
pythonEnv = pkgs-small.python3.withPackages (ps: [
|
||||
ps.fastapi
|
||||
ps.numpy
|
||||
ps.openvino-genai
|
||||
@@ -90,9 +90,6 @@ in
|
||||
# Python block-buffers stdout when it is not a tty, which would hold the
|
||||
# request log lines back instead of putting them in the journal.
|
||||
PYTHONUNBUFFERED = "1";
|
||||
# The stock driver cannot find the NPU compiler; the patched one loads it
|
||||
# from its own store path.
|
||||
ZE_ENABLE_ALT_DRIVERS = "${lib.getLib pkgs-npu.intel-npu-driver}/lib/libze_intel_npu.so";
|
||||
};
|
||||
|
||||
# Reads its model, writes its cache, uses the NPU and listens on the LAN.
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{
|
||||
disko,
|
||||
myvars,
|
||||
lib,
|
||||
pkgs-npu,
|
||||
...
|
||||
}:
|
||||
#############################################################
|
||||
@@ -71,13 +69,6 @@ in
|
||||
# profile's rootless Podman (modules/nixos/agent.nix), built from the `~/src`
|
||||
# checkout that ./preservation.nix keeps.
|
||||
|
||||
# Speech recognition runs on the NPU, see ./asr.nix. The driver and the
|
||||
# compiler it loads come from NixOS/nixpkgs#570230, which is unmerged, so they
|
||||
# are taken from that branch as `pkgs-npu`; the stock driver cannot find the
|
||||
# compiler, the patched one loads it from its own store path. The service sets
|
||||
# this itself -- the session variable is for manual runs.
|
||||
environment.sessionVariables.ZE_ENABLE_ALT_DRIVERS = "${lib.getLib pkgs-npu.intel-npu-driver}/lib/libze_intel_npu.so";
|
||||
|
||||
# The daemons of the hosts that build here (modules/nixos/base/remote-builders.nix).
|
||||
# Their host keys have no passphrase, so they only get the daemon protocol, as
|
||||
# nix.sshServe does. `--store daemon` hands builds to the system daemon instead
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
{
|
||||
pkgs,
|
||||
pkgs-small,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# The NPU serves ./asr.nix; the driver's compiler lookup is fixed by
|
||||
# NixOS/nixpkgs#570230, which reached nixos-unstable-small first (WA-037).
|
||||
hardware.cpu.intel.npu.enable = true;
|
||||
nixpkgs.overlays = [ (_: _: { inherit (pkgs-small) intel-npu-driver; }) ];
|
||||
|
||||
# Ad-hoc CPU idle-power diagnostics: package power, C-state residency and
|
||||
# wakeup attribution. Long-term RAPL export lives in the shared
|
||||
# modules/nixos/base/power-monitoring.nix module.
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ let
|
||||
# to use chrome, we need to allow the installation of non-free software
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
pkgs-npu = import inputs.nixpkgs-npu {
|
||||
pkgs-small = import inputs.nixpkgs-small {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user