From fdd4436500ab945963244888426451a5d9cd37f0 Mon Sep 17 00:00:00 2001 From: noah-emp Date: Sun, 25 Oct 2026 14:25:44 -0400 Subject: [PATCH] feat(nix): build and check on x86_64-linux, aarch64-linux and aarch64-darwin --- .github/workflows/ci.yml | 2 +- ez.lock.toml | 6 ++-- ez.toml | 6 ++-- flake.lock | 6 ++-- flake.nix | 65 +++++++++++++++++++++++----------------- 5 files changed, 48 insertions(+), 37 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9123467..ab0fe0d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,4 +8,4 @@ on: jobs: check: - uses: Emerging-Patterns/actions/.github/workflows/nix-flake-check.yml@73b2fbc64cefd6e22bd786437adb5f35190ee837 + uses: Emerging-Patterns/actions/.github/workflows/nix-flake-check.yml@5b0aa4f0eaee72662e06479ecebcfd15e9762fe7 diff --git a/ez.lock.toml b/ez.lock.toml index 82b24fa..04856b9 100644 --- a/ez.lock.toml +++ b/ez.lock.toml @@ -4,8 +4,8 @@ hub = "https://hub.bend-lang.com" [tools] [tools.bolt] git = "https://github.com/Emerging-Patterns/bolt" -rev = "358c2da98df8d2d15c5ceaa3a56521212b9029ca" -tag = "v1.17.0" +rev = "7f5bb328187efa21598b4fed51cb1e154cf36330" +tag = "v1.19.0" root = "." -narHash = "sha256-J+XYAGvL7FOs4NgRwGG8itNlYTIQBM7dNq/r5nrB1Z8=" +narHash = "sha256-9d+ikveuzegJVH8nbEYSAxy8Pt0dYDyW4ISZml+MsNM=" entry = "main.bend" diff --git a/ez.toml b/ez.toml index 5a39eaa..f65aa2e 100644 --- a/ez.toml +++ b/ez.toml @@ -4,8 +4,8 @@ entry = "main.bend" [tools] [tools.bolt] git = "https://github.com/Emerging-Patterns/bolt" -rev = "358c2da98df8d2d15c5ceaa3a56521212b9029ca" -tag = "v1.17.0" +rev = "7f5bb328187efa21598b4fed51cb1e154cf36330" +tag = "v1.19.0" root = "." -narHash = "sha256-J+XYAGvL7FOs4NgRwGG8itNlYTIQBM7dNq/r5nrB1Z8=" +narHash = "sha256-9d+ikveuzegJVH8nbEYSAxy8Pt0dYDyW4ISZml+MsNM=" entry = "main.bend" diff --git a/flake.lock b/flake.lock index 2a21c58..90939d9 100644 --- a/flake.lock +++ b/flake.lock @@ -31,11 +31,11 @@ ] }, "locked": { - "lastModified": 1792730458, - "narHash": "sha256-gpyP8MmnJcmOdvlWRm5SGMKomi/pimr9dKaq0DExVew=", + "lastModified": 1792951717, + "narHash": "sha256-D+oXyyhyymwc0Diu4JzDEdmIKBsWl8W6GagPk0odVts=", "owner": "Emerging-Patterns", "repo": "ez", - "rev": "166a23c54b1c5a7bf587abd3d906332bd73a856b", + "rev": "0913fd229552109f7d36ab2746b49f95cb785655", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 4b7f834..d5df620 100644 --- a/flake.nix +++ b/flake.nix @@ -16,33 +16,44 @@ outputs = { self, nixpkgs, ... }@inputs: let - system = "x86_64-linux"; - ez = inputs.ez.lib.${system}; - ezBin = inputs.ez.packages.${system}.default; - bend = inputs.bend.packages.${system}.default; - bend-cc = ez.bend-cc; - demo = ez.mkPackage { - inherit bend; - src = self; - pname = "demo"; - version = "0.7.0"; # x-release-please-version - entry = "examples/demo/main.bend"; - }; + systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; + forEach = nixpkgs.lib.genAttrs systems; + outputsFor = system: + let + ez = inputs.ez.lib.${system}; + ezBin = inputs.ez.packages.${system}.default; + bend = inputs.bend.packages.${system}.default; + bend-cc = ez.bend-cc; + demo = ez.mkPackage { + inherit bend; + src = self; + pname = "demo"; + version = "0.7.0"; # x-release-please-version + entry = "examples/demo/main.bend"; + }; + in { + packages = { inherit bend demo bend-cc; ez = ezBin; default = demo; }; + apps.default = { type = "app"; program = "${demo}/bin/demo"; }; + # `proofs` is `ez prove` on this flake's bend: every PROOF.bend must + # print `ALL PROOFS CHECK`. `lint` is bolt at the lock's `[tools.bolt]` + # pin, graded by ./bolt.bend. + checks = { + inherit demo; + proofs = ez.mkProofs { ez = ezBin; src = self; }; + lint = ez.mkLint { src = self; }; + }; + # bolt, from the lock, is on PATH through `src` + devShells.default = ez.mkShell { + src = self; + packages = [ bend bend-cc ezBin ]; + }; + }; + perSystem = forEach outputsFor; + each = name: forEach (system: perSystem.${system}.${name}); in { - packages.${system} = { inherit bend demo bend-cc; ez = ezBin; default = demo; }; - apps.${system}.default = { type = "app"; program = "${demo}/bin/demo"; }; - # `proofs` is `ez prove` on this flake's bend: every PROOF.bend must - # print `ALL PROOFS CHECK`. `lint` is bolt at the lock's `[tools.bolt]` - # pin, graded by ./bolt.bend. - checks.${system} = { - inherit demo; - proofs = ez.mkProofs { ez = ezBin; src = self; }; - lint = ez.mkLint { src = self; }; - }; - # bolt, from the lock, is on PATH through `src` - devShells.${system}.default = ez.mkShell { - src = self; - packages = [ bend bend-cc ezBin ]; - }; + packages = each "packages"; + checks = each "checks"; + apps = each "apps"; + devShells = each "devShells"; }; }