nix: Add Numtide binary cache for llm-agents

Configure the Numtide substituter and signing key in the shared cache
settings and flake configuration so Codex can use prebuilt binaries.
Document the cache and retain the input’s tested nixpkgs pin.
This commit is contained in:
2026-10-31 15:21:26 +00:00
parent 20ac77d8a0
commit 4281aa9234
3 changed files with 11 additions and 3 deletions
+6 -2
View File
@@ -68,6 +68,10 @@ The shared GUI home-manager module installs Codex from the `llm-agents` input, r
that input's tested nixpkgs pin. Run `nix flake update llm-agents`, then switch the system that input's tested nixpkgs pin. Run `nix flake update llm-agents`, then switch the system
or home configuration to use the updated package. or home configuration to use the updated package.
The shared cache settings in `lib.my.c.nix.cache` and the flake's `nixConfig` include
the [Numtide binary cache](https://github.com/numtide/llm-agents.nix#binary-cache), so
Codex can be downloaded prebuilt. Keep the input's tested nixpkgs pin to preserve cache hits.
`programs.codex.mutableSettings` merges the declared status-line settings into the writable `programs.codex.mutableSettings` merges the declared status-line settings into the writable
`~/.codex/config.toml` during activation. Declared values take precedence on each switch; `~/.codex/config.toml` during activation. Declared values take precedence on each switch;
other settings, including model selection, providers and project trust, remain imperative. other settings, including model selection, providers and project trust, remain imperative.
@@ -178,8 +182,8 @@ are unchanged, and the Determinate NixOS module is deliberately not imported.
Determinate without further change. Determinate without further change.
- **`accept-flake-config`.** Set true only in the devshell `nix.conf`, `.envrc` (as - **`accept-flake-config`.** Set true only in the devshell `nix.conf`, `.envrc` (as
`--accept-flake-config`, for direnv) and CI — the contexts that build this flake — so its `--accept-flake-config`, for direnv) and CI — the contexts that build this flake — so its
`nixConfig` (the Harmonia cache) is trusted without an interactive prompt. It is deliberately not `nixConfig` (the Harmonia and Numtide caches) is trusted without an interactive prompt. It is
set system-wide: boxes already trust that cache via `nix.settings`, so a global setting would only deliberately not set system-wide: boxes already trust those caches via `nix.settings`, so a global setting would only
blanket-trust every flake's `nixConfig` for no gain. blanket-trust every flake's `nixConfig` for no gain.
## Secrets ## Secrets
+3 -1
View File
@@ -1,16 +1,18 @@
{ {
description = "System configs"; description = "System configs";
# Offer our Harmonia cache when building the flake itself, so `nix develop` / `nix build` don't # Offer our Harmonia and Numtide caches when building the flake, so `nix develop` / `nix build` don't
# rebuild from source. Nix reads `nixConfig` before the flake evaluates and rejects any computed # rebuild from source. Nix reads `nixConfig` before the flake evaluates and rejects any computed
# value (imports/thunks), so these must stay literal — keep them in sync with `lib.my.c.nix.cache`. # value (imports/thunks), so these must stay literal — keep them in sync with `lib.my.c.nix.cache`.
# Consumers must trust these (accept-flake-config / a trusted user) for them to take effect. # Consumers must trust these (accept-flake-config / a trusted user) for them to take effect.
nixConfig = { nixConfig = {
extra-substituters = [ extra-substituters = [
"https://nix-cache.nul.ie" "https://nix-cache.nul.ie"
"https://cache.numtide.com"
]; ];
extra-trusted-public-keys = [ extra-trusted-public-keys = [
"nix-cache.nul.ie-1:BzH5yMfF4HbzY1C977XzOxoPhEc9Zbu39ftPkUbH+m4=" "nix-cache.nul.ie-1:BzH5yMfF4HbzY1C977XzOxoPhEc9Zbu39ftPkUbH+m4="
"niks3.numtide.com-1:DTx8wZduET09hRmMtKdQDxNNthLQETkc/yaX7M4qK0g="
]; ];
}; };
+2
View File
@@ -102,9 +102,11 @@ rec {
cache = rec { cache = rec {
substituters = [ substituters = [
"https://nix-cache.${pubDomain}" "https://nix-cache.${pubDomain}"
"https://cache.numtide.com"
]; ];
keys = [ keys = [
"nix-cache.nul.ie-1:BzH5yMfF4HbzY1C977XzOxoPhEc9Zbu39ftPkUbH+m4=" "nix-cache.nul.ie-1:BzH5yMfF4HbzY1C977XzOxoPhEc9Zbu39ftPkUbH+m4="
"niks3.numtide.com-1:DTx8wZduET09hRmMtKdQDxNNthLQETkc/yaX7M4qK0g="
]; ];
conf = '' conf = ''
extra-substituters = ${concatStringsSep " " substituters} extra-substituters = ${concatStringsSep " " substituters}