From d20b72a9546dc89143ab7f8cae7a52075a3eecf3 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Mon, 1 Jun 2026 16:03:47 -0700 Subject: [PATCH 1/5] Bump to Nix 26.05 --- flake.lock | 8 ++++---- flake.nix | 46 ++++++++++++++++++++++++++++------------------ 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/flake.lock b/flake.lock index 08675a5..9ce8f6a 100644 --- a/flake.lock +++ b/flake.lock @@ -86,16 +86,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1778737229, - "narHash": "sha256-6xWoytx8jFW4PF1GjRm/i/53trbpKGfz6zjzQGBr4cI=", + "lastModified": 1780203844, + "narHash": "sha256-K5sT4jTpGs15ADhviMKNBH38REpPf5Q6mM1+N6cArVE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d7a713c0b7e47c908258e71cba7a2d77cc8d71d5", + "rev": "b51242d7d43689db2f3be91bd05d5b24fbb469c4", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-25.11", + "ref": "nixos-26.05", "type": "indirect" } }, diff --git a/flake.nix b/flake.nix index 825810e..7b53ae6 100644 --- a/flake.nix +++ b/flake.nix @@ -1,8 +1,8 @@ { - description = "bijou — bijective variable-length integer encodings"; + description = "bijou: bijective variable-length integer encodings"; inputs = { - nixpkgs.url = "nixpkgs/nixos-25.11"; + nixpkgs.url = "nixpkgs/nixos-26.05"; nixos-unstable.url = "nixpkgs/nixos-unstable-small"; command-utils.url = "git+https://codeberg.org/expede/nix-command-utils"; @@ -160,8 +160,15 @@ wasm-tools ]; - # Built-in command modules from nix-command-utils - rust = command-utils.rust.${system}; + # `xdg-utils` lacks `meta.mainProgram`, which makes `getExe` + # (used by the command-utils modules below) emit a deprecation + # warning. Annotate it so `getExe` resolves `xdg-open` cleanly. + xdg-open = pkgs.xdg-utils // { + meta = (pkgs.xdg-utils.meta or { }) // { mainProgram = "xdg-open"; }; + }; + + # Built-in command modules from nix-command-utils + rust = command-utils.rust.${system}; wasm = command-utils.wasm.${system}; cmd = command-utils.cmd.${system}; @@ -253,9 +260,9 @@ bodge cd "$WORKSPACE_ROOT/bijou64_wasm" if [ ! -d node_modules ]; then - ${pkgs.nodePackages.pnpm}/bin/pnpm install --frozen-lockfile + ${pkgs.pnpm}/bin/pnpm install --frozen-lockfile fi - ${pkgs.nodePackages.pnpm}/bin/pnpm run test:js:node + ${pkgs.pnpm}/bin/pnpm run test:js:node ''; "test:js:browser" = cmd "Run bijou64_wasm JS-package Playwright tests across browsers (rebuilds dist via bodge)" '' @@ -267,17 +274,17 @@ # disagrees with `package.json`. To intentionally update the # lockfile, run `pnpm install` directly (without this wrapper). if [ ! -d node_modules ]; then - ${pkgs.nodePackages.pnpm}/bin/pnpm install --frozen-lockfile + ${pkgs.pnpm}/bin/pnpm install --frozen-lockfile fi - ${pkgs.nodePackages.pnpm}/bin/pnpm exec playwright test + ${pkgs.pnpm}/bin/pnpm exec playwright test ''; "test:js:browser:report" = cmd "Open the most recent Playwright HTML report" '' cd "$WORKSPACE_ROOT/bijou64_wasm" if [ ! -d node_modules ]; then - ${pkgs.nodePackages.pnpm}/bin/pnpm install --frozen-lockfile + ${pkgs.pnpm}/bin/pnpm install --frozen-lockfile fi - ${pkgs.nodePackages.pnpm}/bin/pnpm exec playwright show-report + ${pkgs.pnpm}/bin/pnpm exec playwright show-report ''; "ci" = cmd "Run full CI suite (fmt, clippy, test, no_std, wasm32, wasm-pack, JS package)" '' @@ -329,7 +336,7 @@ (rust.lint { cargo = pkgs.cargo; }) (rust.fmt { cargo = pkgs.cargo; }) (rust.doc { cargo = pkgs.cargo; }) - (rust.bench { cargo = pkgs.cargo; cargo-criterion = pkgs.cargo-criterion; xdg-open = pkgs.xdg-utils; }) + (rust.bench { cargo = pkgs.cargo; cargo-criterion = pkgs.cargo-criterion; inherit xdg-open; }) (rust.watch { cargo-watch = pkgs.cargo-watch; }) # Wasm commands — all target the `bijou64_wasm` crate @@ -339,7 +346,7 @@ (wasm.build { wasm-pack = pkgs.wasm-pack; path = "bijou64_wasm"; }) (wasm.release { wasm-pack = pkgs.wasm-pack; gzip = pkgs.gzip; path = "bijou64_wasm"; }) (wasm.test { wasm-pack = pkgs.wasm-pack; path = "bijou64_wasm"; features = ""; }) - (wasm.doc { cargo = pkgs.cargo; xdg-open = pkgs.xdg-utils; }) + (wasm.doc { cargo = pkgs.cargo; inherit xdg-open; }) { commands = projectCommands; packages = []; } ]; @@ -362,18 +369,21 @@ devShells.default = pkgs.mkShell { name = "bijou_shell"; - nativeBuildInputs = - [ - command_menu - rust-toolchain - nightly-rustfmt + nativeBuildInputs = + # `command_menu` is itself a list of derivations, so splice it + # in with `++` rather than nesting it as a single element + # (a nested list in `nativeBuildInputs` is deprecated). + command_menu + ++ [ + rust-toolchain + nightly-rustfmt pkgs.binaryen pkgs.esbuild # wasm-bodge spawns esbuild as a subprocess for bundling pkgs.gnuplot pkgs.http-server pkgs.nodejs - pkgs.nodePackages.pnpm + pkgs.pnpm pkgs.playwright-driver pkgs.playwright-driver.browsers pkgs.rust-analyzer From f8c39f0cb2c221883d8236e255c4e84b020d00b0 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Mon, 1 Jun 2026 16:16:10 -0700 Subject: [PATCH 2/5] Wire together --- flake.lock | 59 ++++++++---------------------------------------------- flake.nix | 7 ++++++- 2 files changed, 14 insertions(+), 52 deletions(-) diff --git a/flake.lock b/flake.lock index 9ce8f6a..45d2714 100644 --- a/flake.lock +++ b/flake.lock @@ -2,8 +2,12 @@ "nodes": { "command-utils": { "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1769220798, @@ -23,23 +27,6 @@ "inputs": { "systems": "systems" }, - "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", - "type": "github" - }, - "original": { - "id": "flake-utils", - "type": "indirect" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, "locked": { "lastModified": 1731533236, "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", @@ -70,21 +57,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1769089682, - "narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "078d69f03934859a181e81ba987c2bb033eebfc5", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-25.11", - "type": "indirect" - } - }, - "nixpkgs_2": { "locked": { "lastModified": 1780203844, "narHash": "sha256-K5sT4jTpGs15ADhviMKNBH38REpPf5Q6mM1+N6cArVE=", @@ -102,9 +74,9 @@ "root": { "inputs": { "command-utils": "command-utils", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils", "nixos-unstable": "nixos-unstable", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "rust-overlay": "rust-overlay", "wasm-bodge-src": "wasm-bodge-src" } @@ -144,21 +116,6 @@ "type": "github" } }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "wasm-bodge-src": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 7b53ae6..6c3c80e 100644 --- a/flake.nix +++ b/flake.nix @@ -5,9 +5,14 @@ nixpkgs.url = "nixpkgs/nixos-26.05"; nixos-unstable.url = "nixpkgs/nixos-unstable-small"; - command-utils.url = "git+https://codeberg.org/expede/nix-command-utils"; flake-utils.url = "github:numtide/flake-utils"; + command-utils = { + url = "git+https://codeberg.org/expede/nix-command-utils"; + inputs.flake-utils.follows = "flake-utils"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; From 3f3c9bdf1193d5729768a570a762d22ce840c04d Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Mon, 1 Jun 2026 17:16:56 -0700 Subject: [PATCH 3/5] Bump esbuild --- bijou64_wasm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bijou64_wasm/package.json b/bijou64_wasm/package.json index f7d5d60..9c83bbb 100644 --- a/bijou64_wasm/package.json +++ b/bijou64_wasm/package.json @@ -31,7 +31,7 @@ "test:js:node": "mocha" }, "devDependencies": { - "@playwright/test": "1.56.1", + "@playwright/test": "1.59.1", "@types/chai": "^5.2.3", "@types/mocha": "^10.0.10", "@types/node": "^22.10.0", From 65d2d81044809ea7536be991730eb5f5780c8736 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Mon, 1 Jun 2026 17:50:10 -0700 Subject: [PATCH 4/5] Bump versions --- bijou64_wasm/pnpm-lock.yaml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/bijou64_wasm/pnpm-lock.yaml b/bijou64_wasm/pnpm-lock.yaml index a10b005..92e59bc 100644 --- a/bijou64_wasm/pnpm-lock.yaml +++ b/bijou64_wasm/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: '@playwright/test': - specifier: 1.56.1 - version: 1.56.1 + specifier: 1.59.1 + version: 1.59.1 '@types/chai': specifier: ^5.2.3 version: 5.2.3 @@ -202,8 +202,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.56.1': - resolution: {integrity: sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==} + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} engines: {node: '>=18'} hasBin: true @@ -546,13 +546,13 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - playwright-core@1.56.1: - resolution: {integrity: sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==} + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} engines: {node: '>=18'} hasBin: true - playwright@1.56.1: - resolution: {integrity: sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==} + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} engines: {node: '>=18'} hasBin: true @@ -799,9 +799,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.56.1': + '@playwright/test@1.59.1': dependencies: - playwright: 1.56.1 + playwright: 1.59.1 '@types/chai@5.2.3': dependencies: @@ -1144,11 +1144,11 @@ snapshots: picocolors@1.1.1: {} - playwright-core@1.56.1: {} + playwright-core@1.59.1: {} - playwright@1.56.1: + playwright@1.59.1: dependencies: - playwright-core: 1.56.1 + playwright-core: 1.59.1 optionalDependencies: fsevents: 2.3.2 From 09d96775dd9d0720426a82017f225784a2902230 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Mon, 1 Jun 2026 18:13:23 -0700 Subject: [PATCH 5/5] Fix CI --- bijou64_wasm/pnpm-workspace.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 bijou64_wasm/pnpm-workspace.yaml diff --git a/bijou64_wasm/pnpm-workspace.yaml b/bijou64_wasm/pnpm-workspace.yaml new file mode 100644 index 0000000..7886c5c --- /dev/null +++ b/bijou64_wasm/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +allowBuilds: + # esbuild ships a prebuilt platform binary via its `@esbuild/*` optional + # deps, so its install script is unnecessary here. Mark it reviewed and + # skipped to avoid the ERR_PNPM_IGNORED_BUILDS failure under pnpm v11. + esbuild: false