Skip to content

Commit 9b5c324

Browse files
committed
nix flake: refactor hash collection to unified json file
1 parent 90bb478 commit 9b5c324

File tree

7 files changed

+36
-31
lines changed

7 files changed

+36
-31
lines changed

.github/workflows/update-nix-hashes.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ jobs:
5050
run: |
5151
set -euo pipefail
5252
53-
if git diff --quiet flake.nix nix/node-modules.nix nix/node-modules-hashes.json nix/models-dev.nix; then
53+
if git diff --quiet flake.nix nix/node-modules.nix nix/hashes.json nix/models-dev.nix; then
5454
echo "No changes to tracked Nix files. Hashes are already up to date."
5555
exit 0
5656
fi
5757
5858
VERSION=$(jq -r '.version' packages/opencode/package.json)
59-
git add flake.nix nix/node-modules.nix nix/node-modules-hashes.json nix/models-dev.nix
59+
git add flake.nix nix/node-modules.nix nix/hashes.json nix/models-dev.nix
6060
git commit -m "nix: update hashes for v$VERSION"
6161
6262
git pull --rebase origin dev

flake.nix

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@
2424
"x86_64-linux" = "bun-linux-x64";
2525
};
2626
scripts = ./nix/scripts;
27-
nodeModulesHashes = builtins.fromJSON (builtins.readFile ./nix/node-modules-hashes.json);
27+
hashes = builtins.fromJSON (builtins.readFile ./nix/hashes.json);
2828
modelsDev = forEachSystem (
2929
system:
3030
let
3131
pkgs = pkgsFor system;
3232
in
33-
pkgs.callPackage ./nix/models-dev.nix { }
33+
pkgs.callPackage ./nix/models-dev.nix { hash = hashes.models.dev; }
3434
);
3535
in
3636
{
@@ -56,7 +56,7 @@
5656
system:
5757
let
5858
pkgs = pkgsFor system;
59-
mkNodeModules = pkgs.callPackage ./nix/node-modules.nix { hashes = nodeModulesHashes; };
59+
mkNodeModules = pkgs.callPackage ./nix/node-modules.nix { hash = hashes.nodeModules.${system}; };
6060
mkPackage = pkgs.callPackage ./nix/opencode.nix { };
6161
in
6262
{

nix/hashes.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"models": {
3+
"dev": "sha256-Dff3OWJ7pD7LfVbZZ0Gf/QA65uw4ft14mdfBun0qDBg="
4+
},
5+
"nodeModules": {
6+
"aarch64-linux": "sha256-e4NmkdKlx8Rlwi1u+GYrzzh93xvZ4jbHdzAl4OLnHtQ=",
7+
"x86_64-linux": "sha256-8goN/fR8mjiJj/ZzfgP4ES2sW2Ljoyl+SNthqNj6Dr8="
8+
}
9+
}

nix/models-dev.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
{ stdenvNoCC, fetchurl }:
1+
{ hash, stdenvNoCC, fetchurl }:
22
stdenvNoCC.mkDerivation {
33
pname = "models-dev";
44
version = "unstable";
55

66
src = fetchurl {
77
url = "https://models.dev/api.json";
8-
hash = "sha256-Dff3OWJ7pD7LfVbZZ0Gf/QA65uw4ft14mdfBun0qDBg=";
8+
hash = hash;
99
};
1010

1111
dontUnpack = true;

nix/node-modules-hashes.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

nix/node-modules.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{ hashes, lib, stdenvNoCC, bun, cacert, curl }:
1+
{ hash, lib, stdenvNoCC, bun, cacert, curl }:
22
args:
33
stdenvNoCC.mkDerivation {
44
pname = "opencode-node_modules";
@@ -99,5 +99,5 @@ EOF
9999

100100
outputHashAlgo = "sha256";
101101
outputHashMode = "recursive";
102-
outputHash = hashes.${stdenvNoCC.hostPlatform.system};
102+
outputHash = hash;
103103
}

nix/scripts/update-hashes

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ set -euo pipefail
44

55
DUMMY="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
66
MODELS_URL=${MODELS_URL:-https://models.dev/api.json}
7-
MODELS_FILE=${MODELS_FILE:-nix/models-dev.nix}
8-
HASH_FILE=${MODULES_HASH_FILE:-nix/node-modules-hashes.json}
7+
DEFAULT_HASH_FILE=${MODULES_HASH_FILE:-nix/hashes.json}
8+
HASH_FILE=${HASH_FILE:-$DEFAULT_HASH_FILE}
99
export DUMMY
1010

1111
if [ -z "${SYSTEMS:-}" ]; then
@@ -18,7 +18,12 @@ if [ -z "$SYSTEMS" ]; then
1818
fi
1919
2020
if [ ! -f "$HASH_FILE" ]; then
21-
echo "{}" >"$HASH_FILE"
21+
cat <<'EOF' >"$HASH_FILE"
22+
{
23+
"models": {},
24+
"nodeModules": {}
25+
}
26+
EOF
2227
fi
2328
2429
echo "Refreshing models-dev hash..."
@@ -29,19 +34,14 @@ if [ -z "$MODELS_HASH" ]; then
2934
exit 1
3035
fi
3136
32-
current_models_hash="$(perl -0ne 'print $1 if /hash\s*=\s*"(sha256-[^"]+)";/' "$MODELS_FILE")"
37+
current_models_hash="$(jq -r '.models.dev // empty' "$HASH_FILE")"
3338
3439
if [ "$MODELS_HASH" != "$current_models_hash" ]; then
35-
export MODELS_HASH
36-
perl -0pi -e 's/(hash\s*=\s*")sha256-[^"]+(")/${1}$ENV{MODELS_HASH}${2}/' "$MODELS_FILE"
37-
if ! grep -q "$MODELS_HASH" "$MODELS_FILE"; then
38-
echo "Failed to update models-dev hash"
39-
exit 1
40-
fi
40+
tmp=$(mktemp)
41+
jq --arg value "$MODELS_HASH" '.models.dev = $value' "$HASH_FILE" >"$tmp"
42+
mv "$tmp" "$HASH_FILE"
4143
echo "models-dev hash updated: $MODELS_HASH"
42-
fi
43-
44-
if [ "$MODELS_HASH" = "$current_models_hash" ]; then
44+
else
4545
echo "models-dev hash already up to date: $MODELS_HASH"
4646
fi
4747
@@ -56,19 +56,19 @@ cleanup() {
5656
5757
trap cleanup EXIT
5858
59-
write_hash() {
59+
write_node_modules_hash() {
6060
local value="$1"
6161
local temp
6262
temp=$(mktemp)
63-
jq --arg system "$SYSTEM" --arg value "$value" '.[$system] = $value' "$HASH_FILE" >"$temp"
63+
jq --arg system "$SYSTEM" --arg value "$value" '.nodeModules[$system] = $value' "$HASH_FILE" >"$temp"
6464
mv "$temp" "$HASH_FILE"
6565
}
6666
6767
for SYSTEM in $SYSTEMS; do
6868
TARGET="packages.${SYSTEM}.default"
6969
7070
echo "Setting dummy node_modules outputHash for ${SYSTEM}..."
71-
write_hash "$DUMMY"
71+
write_node_modules_hash "$DUMMY"
7272
7373
JSON_OUTPUT=$(mktemp)
7474
BUILD_LOG=$(mktemp)
@@ -98,9 +98,9 @@ for SYSTEM in $SYSTEMS; do
9898
exit 1
9999
fi
100100
101-
write_hash "$CORRECT_HASH"
101+
write_node_modules_hash "$CORRECT_HASH"
102102
103-
if ! jq -e --arg system "$SYSTEM" --arg hash "$CORRECT_HASH" '.[ $system ] == $hash' "$HASH_FILE" >/dev/null; then
103+
if ! jq -e --arg system "$SYSTEM" --arg hash "$CORRECT_HASH" '.nodeModules[$system] == $hash' "$HASH_FILE" >/dev/null; then
104104
echo "Failed to persist node_modules hash for ${SYSTEM}"
105105
exit 1
106106
fi

0 commit comments

Comments
 (0)