Thanks to visit codestin.com
Credit goes to github.com

Skip to content

shazow/foundry.nix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

foundry.nix

Nix overlay for foundry-rs/foundry (including forge, cast, anvil and chisel)

This repository is auto-updated daily with the latest nightly binary release, which are pruned from upstream regularly. We also maintain an rc and stable branch for the latest release from that stream which is not pruned.

Usage: Showing off nix

If we have nix v2.4 or newer, we run this repo and get forge is the default app target:

$ nix run github:shazow/foundry.nix
forge 0.1.0 (691c814 2022-02-11T00:23:35.582887615+00:00)
Build, test, fuzz, formally verify, debug & deploy solidity contracts.
...

We can also specify a target, such as cast:

$ nix run github:shazow/foundry.nix#cast

Flags are passed after the command is terminated with --:

$ nix run github:shazow/foundry.nix#forge -- build

We can enter a shell with all of the foundry binaries injected:

$ nix develop github:shazow/foundry.nix

Usage: Development shell

Make a flake.nix in your solidity project directory:

# flake.nix
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    utils.url = "github:numtide/flake-utils";
    foundry.url = "github:shazow/foundry.nix/stable"; # Use stable branch for permanent releases
  };

  outputs = { self, nixpkgs, utils, foundry }:
    utils.lib.eachDefaultSystem (system:
      let
        pkgs = import nixpkgs {
          inherit system;
          overlays = [ foundry.overlay ];
        };
      in {

        devShell = with pkgs; mkShell {
          buildInputs = [
            # From the foundry overlay
            # Note: Can also be referenced without overlaying as: foundry.defaultPackage.${system}
            foundry-bin

            # ... any other dependencies we need
            solc
          ];

          # Decorative prompt override so we know when we're in a dev shell
          shellHook = ''
            export PS1="[dev] $PS1"
          '';
        };
      });
}

Then run nix develop to enter a shell with foundry binaries (forge, cast, anvil and chisel) present.

Running nix flake update will repin to the latest foundry release from this repo (auto-updates daily).

Usage: devenv

Initialize devenv in your solidity project directory:

$ devenv init

Add this repo as an input in the devenv.yaml with the following shell command:

$ devenv inputs add foundry github:shazow/foundry.nix/stable --follows nixpkgs

And edit the devenv.nix:

{ ... }:

{
  languages.solidity.enable = true;
  languages.solidity.foundry.enable = true;
}

Then run devenv shell to enter a shell with foundry binaries present.

Running devenv update will repin to the latest foundry release from this repo.

You can run direnv allow to automatically enter a shell with foundry binaries everytime you cd to this directory, if you have direnv installed.

NixOS Caveat

The foundry forge and cast binaries are auto-ELF-patched to work on NixOS, but by default forge will attempt to fetch solc binaries which are not patched. To avoid this, --no-auto-detect must be used with a locally-installed solc. See: foundry#545

About

Nix overlay for gakonst/foundry (including forge and cast)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 20