From 772cb27b32b7d05ccd01d1efbb7a76f817fdc5fb Mon Sep 17 00:00:00 2001 From: sveitser Date: Wed, 16 Apr 2025 11:16:56 +0200 Subject: [PATCH 1/3] nix dev env maintenance I would like to use the dev env provided by nix to build foundry but it's quite outdated. This PR makes it up to date and automated some of the maintenance. Use solc from nixpkgs instead of custom flake. This will at least update solc when it's updated in nixpkgs versus remaining on the same version until someone manually edits flake.nix and makes a PR. Add a CI job to ensure the nix dev env can be used to build foundry. I would like to make it possible to run all the tests too but this would requires more work to track down reasons for the invididual test failures. --- .github/workflows/nix-dev-env.yml | 47 +++++++++++++++++++++++++ flake.lock | 57 ++++++------------------------- flake.nix | 20 +++++------ 3 files changed, 66 insertions(+), 58 deletions(-) create mode 100644 .github/workflows/nix-dev-env.yml diff --git a/.github/workflows/nix-dev-env.yml b/.github/workflows/nix-dev-env.yml new file mode 100644 index 0000000000000..b697e7314b464 --- /dev/null +++ b/.github/workflows/nix-dev-env.yml @@ -0,0 +1,47 @@ +name: Nix developer enviroment +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * 0' # runs weekly on Sunday at 00:00 + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + # Opens a PR with an updated flake.lock file + update_flake_lock: + runs-on: ubuntu-latest + steps: + - uses: cachix/install-nix-action@v30 + - uses: actions/checkout@v4 + - uses: DeterminateSystems/update-flake-lock@main + with: + pr-title: "Update flake.lock" + pr-labels: | + L-ignore + A-dependencies + + nix-dev-env-linux: + runs-on: ubuntu-latest + steps: + - uses: cachix/install-nix-action@v30 + - uses: actions/checkout@v4 + + - name: Activate nix env + run: nix develop --accept-flake-config -c echo Ok + + - name: Check that we can compile all crates + run: nix develop --accept-flake-config -c cargo check --all-targets + + nix-env-macos-arm: + runs-on: macos-latest + steps: + - uses: cachix/install-nix-action@v30 + - uses: actions/checkout@v4 + + - name: Activate nix env + run: nix develop --accept-flake-config -c echo Ok + + - name: Check that we can compile all crates + run: nix develop --accept-flake-config -c cargo check --all-targets diff --git a/flake.lock b/flake.lock index 45ed6bb432ffb..fed7b382be03b 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1719468428, - "narHash": "sha256-vN5xJAZ4UGREEglh3lfbbkIj+MPEYMuqewMn4atZFaQ=", + "lastModified": 1744536153, + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1e3deb3d8a86a870d925760db1a5adecc64d329d", + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", "type": "github" }, "original": { @@ -38,8 +38,7 @@ "inputs": { "flake-utils": "flake-utils", "nixpkgs": "nixpkgs", - "rust-overlay": "rust-overlay", - "solc": "solc" + "rust-overlay": "rust-overlay" } }, "rust-overlay": { @@ -49,11 +48,11 @@ ] }, "locked": { - "lastModified": 1719714047, - "narHash": "sha256-MeNPopLLv63EZj5L43j4TZkmW4wj1ouoc/h/E20sl/U=", + "lastModified": 1744770893, + "narHash": "sha256-RMyTyFHN3w8zwfpgvcfRHQ4vX4zTqhuZbif/MXROtx8=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "cb216719ce89a43dfb3d1b86a9575e89f4b727a4", + "rev": "1633514603fc0ed15ea0aef7327e26736ec003c0", "type": "github" }, "original": { @@ -62,42 +61,6 @@ "type": "github" } }, - "solc": { - "inputs": { - "flake-utils": [ - "flake-utils" - ], - "nixpkgs": [ - "nixpkgs" - ], - "solc-macos-amd64-list-json": "solc-macos-amd64-list-json" - }, - "locked": { - "lastModified": 1717442267, - "narHash": "sha256-6TnQvA6Q/xC3r1M+wGC5gnDc/5XfOPjC8X6LlGDWDNc=", - "owner": "hellwolf", - "repo": "solc.nix", - "rev": "2ac2862f224aa0d67cbc6b3246392489f8a50596", - "type": "github" - }, - "original": { - "owner": "hellwolf", - "repo": "solc.nix", - "type": "github" - } - }, - "solc-macos-amd64-list-json": { - "flake": false, - "locked": { - "narHash": "sha256-Prwz95BgMHcWd72VwVbcH17LsV9f24K2QMcUiWUQZzI=", - "type": "file", - "url": "https://github.com/ethereum/solc-bin/raw/f743ca7/macosx-amd64/list.json" - }, - "original": { - "type": "file", - "url": "https://github.com/ethereum/solc-bin/raw/f743ca7/macosx-amd64/list.json" - } - }, "systems": { "locked": { "lastModified": 1681028828, diff --git a/flake.nix b/flake.nix index ff783b4956e4e..284fb6aa8e4ed 100644 --- a/flake.nix +++ b/flake.nix @@ -8,21 +8,14 @@ nixpkgs.follows = "nixpkgs"; }; }; - solc = { - url = "github:hellwolf/solc.nix"; - inputs = { - nixpkgs.follows = "nixpkgs"; - flake-utils.follows = "flake-utils"; - }; - }; }; - outputs = { self, nixpkgs, rust-overlay, flake-utils, solc }: + outputs = { self, nixpkgs, rust-overlay, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; - overlays = [ rust-overlay.overlays.default solc.overlay ]; + overlays = [ rust-overlay.overlays.default ]; }; lib = pkgs.lib; toolchain = pkgs.rust-bin.stable.latest.default.override { @@ -33,9 +26,14 @@ devShells.default = pkgs.mkShell { nativeBuildInputs = with pkgs; [ pkg-config - solc_0_8_23 - (solc.mkDefault pkgs solc_0_8_23) toolchain + rust-jemalloc-sys + cargo-nextest + + # test dependencies + solc + vyper + nodejs ]; buildInputs = lib.optionals pkgs.stdenv.isDarwin [ pkgs.darwin.apple_sdk.frameworks.AppKit From c08b1727dc71f42c2e1b1dcd51bc443857d04490 Mon Sep 17 00:00:00 2001 From: sveitser Date: Wed, 16 Apr 2025 11:49:52 +0200 Subject: [PATCH 2/3] CI: use matrix for runner selection --- .github/workflows/nix-dev-env.yml | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/.github/workflows/nix-dev-env.yml b/.github/workflows/nix-dev-env.yml index b697e7314b464..10ef3369af186 100644 --- a/.github/workflows/nix-dev-env.yml +++ b/.github/workflows/nix-dev-env.yml @@ -22,20 +22,11 @@ jobs: L-ignore A-dependencies - nix-dev-env-linux: - runs-on: ubuntu-latest - steps: - - uses: cachix/install-nix-action@v30 - - uses: actions/checkout@v4 - - - name: Activate nix env - run: nix develop --accept-flake-config -c echo Ok - - - name: Check that we can compile all crates - run: nix develop --accept-flake-config -c cargo check --all-targets - - nix-env-macos-arm: - runs-on: macos-latest + nix-dev-env: + strategy: + matrix: + runs-on: [ ubuntu-latest, macos-latest ] + runs-on: ${{ matrix.runs-on }} steps: - uses: cachix/install-nix-action@v30 - uses: actions/checkout@v4 From e57170d25a39375c0e9706fa9c003e8665fdfdd5 Mon Sep 17 00:00:00 2001 From: sveitser Date: Wed, 16 Apr 2025 11:52:51 +0200 Subject: [PATCH 3/3] remove unnecessary argument --- .github/workflows/nix-dev-env.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nix-dev-env.yml b/.github/workflows/nix-dev-env.yml index 10ef3369af186..bb4c5668679fc 100644 --- a/.github/workflows/nix-dev-env.yml +++ b/.github/workflows/nix-dev-env.yml @@ -32,7 +32,7 @@ jobs: - uses: actions/checkout@v4 - name: Activate nix env - run: nix develop --accept-flake-config -c echo Ok + run: nix develop -c echo Ok - name: Check that we can compile all crates - run: nix develop --accept-flake-config -c cargo check --all-targets + run: nix develop -c cargo check --all-targets