Foundry.nix
Nix overlay for gakonst/foundry (including forge and cast)
Install / Use
/learn @shazow/Foundry.nixREADME
foundry.nix
[!TIP] 🎉 foundry is in nixpkgs.
If you don't need nightly releases, consider using the nixpkgs version.
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
Related Skills
node-connect
348.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
348.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
