From d51e328518faf430c152551bbf7af0899afff732 Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Mon, 3 Feb 2025 14:10:21 -0500 Subject: [PATCH 01/12] feat: add nix flake to manage nix builds --- flake.nix | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 flake.nix diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000000..31258b6eb2e --- /dev/null +++ b/flake.nix @@ -0,0 +1,36 @@ +{ + description = "Agoric SDK Development Environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + in + { + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + nodejs-20_x + yarn + python3 + pkg-config + go_1_21 + gopls + delve + gcc + gnumake + protobuf + buf + ]; + + shellHook = '' + export PATH=$PATH:$HOME/go/bin + ''; + }; + } + ); +} From a2f8b122152f02c750b946c42f690d1f51019ae0 Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Mon, 3 Feb 2025 14:26:43 -0500 Subject: [PATCH 02/12] feat: add nix flake to manage nix builds --- flake.lock | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 flake.lock diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000000..6ab23f8fa77 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1738410390, + "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3a228057f5b619feb3186e986dbe76278d707b6e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} From 20b005841c2afcb97636239bc6d56b963ef95c2f Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Tue, 11 Feb 2025 17:22:10 -0500 Subject: [PATCH 03/12] feat(ci): add flake validaiton for nix flake' --- .github/workflows/nix-check.yml | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/nix-check.yml diff --git a/.github/workflows/nix-check.yml b/.github/workflows/nix-check.yml new file mode 100644 index 00000000000..ba16a6c7211 --- /dev/null +++ b/.github/workflows/nix-check.yml @@ -0,0 +1,36 @@ +name: Nix Flake Check + +on: + pull_request: + push: + branches: + # $default-branch + - master + - 'release-*' + - 'dev-*' +permissions: + contents: read + +jobs: + flake-check: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Nix + uses: DeterminateSystems/nix-installer-action@v9 + + - name: Enable flakes + uses: DeterminateSystems/magic-nix-cache-action@v2 + + - name: Check Nix flake inputs + run: nix flake check + + - name: Show flake metadata + if: always() # Run even if previous step fails + run: nix flake metadata + + - name: Validate flake outputs + if: always() # Run even if previous step fails + run: nix flake show \ No newline at end of file From f3a6420f4a85f3732192b589fc3d102a37a5de0d Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Tue, 11 Feb 2025 17:23:10 -0500 Subject: [PATCH 04/12] fix: change nix version for node version --- flake.lock | 8 ++++---- flake.nix | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 6ab23f8fa77..9b89076cef4 100644 --- a/flake.lock +++ b/flake.lock @@ -20,16 +20,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1738410390, - "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", + "lastModified": 1720535198, + "narHash": "sha256-zwVvxrdIzralnSbcpghA92tWu2DV2lwv89xZc8MTrbg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3a228057f5b619feb3186e986dbe76278d707b6e", + "rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-23.11", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 31258b6eb2e..8cffe032d7f 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "Agoric SDK Development Environment"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; flake-utils.url = "github:numtide/flake-utils"; }; @@ -14,7 +14,7 @@ { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ - nodejs-20_x + nodejs_20 yarn python3 pkg-config From 0e773280f0e20319ca8b21e719532fb484ab2cb3 Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Sat, 15 Feb 2025 16:52:19 -0500 Subject: [PATCH 05/12] fix: change nix and yarn to use the right node version --- flake.lock | 8 ++++---- flake.nix | 44 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index 9b89076cef4..1d23a9ef874 100644 --- a/flake.lock +++ b/flake.lock @@ -20,16 +20,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1720535198, - "narHash": "sha256-zwVvxrdIzralnSbcpghA92tWu2DV2lwv89xZc8MTrbg=", + "lastModified": 1739446958, + "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5", + "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 8cffe032d7f..411347afe9c 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "Agoric SDK Development Environment"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; @@ -10,15 +10,47 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; + # Custom Node.js 20.9.0 package + custom_node_20_9 = pkgs.stdenv.mkDerivation { + pname = "nodejs"; + version = "20.9.0"; + + src = pkgs.fetchurl { + url = "https://nodejs.org/dist/v20.9.0/node-v20.9.0-${if pkgs.stdenv.isDarwin then "darwin" else "linux"}-${if pkgs.stdenv.isAarch64 then "arm64" else "x64"}.tar.gz"; + sha256 = if pkgs.stdenv.isDarwin && pkgs.stdenv.isAarch64 then + "0snfsz2mmjdavi38nglayw5yia74q9h1xzz2ahpri8yqx1md9lii" # darwin-arm64 + else if pkgs.stdenv.isDarwin then + "a754c4ef8a4ef3704a04975306a1c59b4b1345661d744927d8f06dd2397c1210" # darwin-x64 + else if pkgs.stdenv.isAarch64 then + "06d64757931d08d47c159d124ecd3c8328827c40fd220d09b5c65c5c98aa0568" # linux-arm64 + else + "39db293cf8e3d8875557d056821bbacc4755d9bc4fb670c7425143d3453e809e"; # linux-x64 + }; + + installPhase = '' + echo "installing nodejs" + mkdir -p $out + cp -r ./ $out/ + ''; + + + # Meta information for the package + meta = with pkgs.lib; { + description = "Node.js 20.9.0 JavaScript runtime"; + homepage = "https://nodejs.org"; + license = licenses.mit; + platforms = platforms.unix; + }; + }; in { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ - nodejs_20 - yarn + custom_node_20_9 + (yarn.override { nodejs = custom_node_20_9; }) python3 pkg-config - go_1_21 + go gopls delve gcc @@ -29,6 +61,10 @@ shellHook = '' export PATH=$PATH:$HOME/go/bin + + echo "Node.js $(node --version)" + echo "NPM $(npm --version)" + echo "Yarn using Node.js $(yarn node -v)" ''; }; } From 5d463217bde3b82d76ee0880f6a8c35283b6be3b Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Sat, 15 Feb 2025 16:56:19 -0500 Subject: [PATCH 06/12] fix: change nix and yarn to use the right node version --- flake.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 411347afe9c..be905e6db72 100644 --- a/flake.nix +++ b/flake.nix @@ -50,13 +50,14 @@ (yarn.override { nodejs = custom_node_20_9; }) python3 pkg-config - go + go_1_23 gopls delve gcc gnumake protobuf buf + git ]; shellHook = '' From f369373e66220b31f3d68e0a472ff54c189b33e6 Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Mon, 17 Feb 2025 15:48:07 -0500 Subject: [PATCH 07/12] Added propper hashes for all architectures --- flake.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index be905e6db72..0f00c51f7a6 100644 --- a/flake.nix +++ b/flake.nix @@ -20,11 +20,13 @@ sha256 = if pkgs.stdenv.isDarwin && pkgs.stdenv.isAarch64 then "0snfsz2mmjdavi38nglayw5yia74q9h1xzz2ahpri8yqx1md9lii" # darwin-arm64 else if pkgs.stdenv.isDarwin then - "a754c4ef8a4ef3704a04975306a1c59b4b1345661d744927d8f06dd2397c1210" # darwin-x64 + "1j6cw6i3hjqv8zk1nbsqg560k7rgcmyl9cfd4vlvn5wclzr76nzw" # darwin-x64 else if pkgs.stdenv.isAarch64 then - "06d64757931d08d47c159d124ecd3c8328827c40fd220d09b5c65c5c98aa0568" # linux-arm64 + "0skah3bal5irvramnfn86vgi0c375ywsyb4xaxmx3gvlnbpdp9yj" # linux-arm64 + else if (pkgs.stdenv.isLinux && !pkgs.stdenv.isAarch64) then + "0q3gy4z5b8dd0w37ya5wlkbv4xhyqa1s0zwh71258x5z5w4rz4gh" # linux-x64 else - "39db293cf8e3d8875557d056821bbacc4755d9bc4fb670c7425143d3453e809e"; # linux-x64 + throw "Unsupported system: This derivation only supports Linux (x64/arm64) and Darwin (x64/arm64) systems"; }; installPhase = '' From 02567bc8d06b862f1713f5b42a3ce4f34bec0ada Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Mon, 17 Feb 2025 15:58:13 -0500 Subject: [PATCH 08/12] test --- .github/workflows/nix-check.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/nix-check.yml b/.github/workflows/nix-check.yml index ba16a6c7211..f6eacd9e776 100644 --- a/.github/workflows/nix-check.yml +++ b/.github/workflows/nix-check.yml @@ -4,7 +4,6 @@ on: pull_request: push: branches: - # $default-branch - master - 'release-*' - 'dev-*' From 2b13ebc43b9f33793a2f446bb5102d14e8ad80ae Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Mon, 17 Feb 2025 16:14:21 -0500 Subject: [PATCH 09/12] fix: lint yaml --- .github/workflows/nix-check.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nix-check.yml b/.github/workflows/nix-check.yml index f6eacd9e776..97913b196a1 100644 --- a/.github/workflows/nix-check.yml +++ b/.github/workflows/nix-check.yml @@ -27,9 +27,9 @@ jobs: run: nix flake check - name: Show flake metadata - if: always() # Run even if previous step fails + if: always() # Run even if previous step fails run: nix flake metadata - name: Validate flake outputs - if: always() # Run even if previous step fails - run: nix flake show \ No newline at end of file + if: always() # Run even if previous step fails + run: nix flake show From ff19937c2abf73f92bec573de11b6857f58bbe2d Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Wed, 19 Feb 2025 11:30:09 -0500 Subject: [PATCH 10/12] Update flake.nix Co-authored-by: Dan Connolly --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 0f00c51f7a6..0946fd371f7 100644 --- a/flake.nix +++ b/flake.nix @@ -50,7 +50,7 @@ buildInputs = with pkgs; [ custom_node_20_9 (yarn.override { nodejs = custom_node_20_9; }) - python3 + (python3.withPackages (ps: [ ps.distutils ])) pkg-config go_1_23 gopls From ea4cbefd5fe7fc84476443fc5ea09118aae0a1da Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Wed, 19 Feb 2025 11:50:03 -0500 Subject: [PATCH 11/12] ci: add build for both yarn and cosmoc-swingset --- .github/workflows/nix-check.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/nix-check.yml b/.github/workflows/nix-check.yml index 97913b196a1..1b069ae1a53 100644 --- a/.github/workflows/nix-check.yml +++ b/.github/workflows/nix-check.yml @@ -33,3 +33,18 @@ jobs: - name: Validate flake outputs if: always() # Run even if previous step fails run: nix flake show + + - name: Check build in Nix dev shell + run: | + # Enter nix develop and run build commands + nix develop --command bash -c ' + # Install dependencies + yarn install + + # Build the project + yarn build + + # Build cosmic-swingset + cd packages/cosmic-swingset && make + ' + From a33cd798ec94a8f092910cc37a057d1e0fe360f4 Mon Sep 17 00:00:00 2001 From: Jeancarlo Barrios Date: Wed, 19 Feb 2025 12:12:24 -0500 Subject: [PATCH 12/12] lint --- .github/workflows/nix-check.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/nix-check.yml b/.github/workflows/nix-check.yml index 1b069ae1a53..7071f849837 100644 --- a/.github/workflows/nix-check.yml +++ b/.github/workflows/nix-check.yml @@ -47,4 +47,3 @@ jobs: # Build cosmic-swingset cd packages/cosmic-swingset && make ' -