hellwolf/solc.nix
GitHub: hellwolf/solc.nix
基于 Nix Flake 的多版本 Solidity 编译器集合,提供跨平台的声明式开发环境支持。
Stars: 23 | Forks: 13
# Nix 中的 Solidity 编译器集合
此 Nix flake 提供了一组 [solidity 编译器 (solc)](https://github.com/argotorg/solidity/) 的 static-linux 和 macos 构建版本,并以 [overlay](https://nixos.wiki/wiki/Overlays) 形式提供。
# 用法
**使用 Nix Flake**
以下 flake 将使 solc 0.4.26、0.7.6 和 0.8.19 可用于开发。
此外,还提供了一个便捷函数 `mkDefault`,用于创建指向选定 solc 版本的符号链接。
```
{
inputs = {
solc = {
url = "github:hellwolf/solc.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, solc }: let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [
solc.overlay
];
};
in {
devShell.x86_64-linux = with pkgs; mkShell {
buildInputs = [
solc_0_4_26
solc_0_7_6
solc_0_8_19
(solc.mkDefault pkgs solc_0_8_19)
];
};
};
}
```
例如,它们应该可以通过开发 shell 使用。
```
$ nix develop .
$ solc-0.4.26 --version
solc, the solidity compiler commandline interface
Version: 0.4.26+commit.4563c3fc.Linux.g++
$ solc-0.7.6 --version
solc, the solidity compiler commandline interface
Version: 0.7.6+commit.7338295f.Linux.g++
$ solc-0.8.19 --version
solc, the solidity compiler commandline interface
Version: 0.8.19+commit.7dd6d404.Linux.g++
```
**使用 Nix Shell**
你也可以直接使用 `nix shell`,而无需为项目编写 nix flake。
```
# Solc 包直接列为 "solc_{version}",
nix shell github:hellwolf/solc.nix#solc_0_4_26 github:hellwolf/solc.nix#solc_0_8_19
```
# 贡献
作者将尽最大努力保持此仓库处于最新状态。
但如果你发现它滞后了,这里有一些实用脚本可以帮助你自行解决:
**./utils/download.sh**
1. 在项目的顶层创建一个 bin 文件夹。
2. 下载所有版本的 solc:`./utils/download.sh all`
3. 下载特定版本的 solc:`./utils/download.sh 0.8.19`
**./utils/create-listing.sh**
这将覆盖 `solc-listing.nix` 文件。
欢迎提交 Pull requests!
标签:Cutter, Ethereum, Nix, Nix Flakes, NixOS, SOC Prime, Solc, Solidity, Web3, 以太坊, 包管理, 区块链, 去中心化, 开发工具, 智能合约, 环境配置, 编译器, 软件集合, 静态构建