Skip to content

Commit

Permalink
nixify
Browse files Browse the repository at this point in the history
Add nix related artifacts to make project build in nixos
  • Loading branch information
kayvank committed Oct 30, 2024
1 parent 3971c7d commit 1561d18
Show file tree
Hide file tree
Showing 4 changed files with 230 additions and 1 deletion.
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ dist/
# Ignore environment-specific files
.env

# Ignore nixos related environment-specific files
.envrc
.cargo/
.direnv/

# Ignore editor-specific files
.vscode/
.idea/
Expand All @@ -25,4 +30,4 @@ target/
debug/

yarn.lock
contracts/deployments/
contracts/deployments/
146 changes: 146 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 65 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
description = "ethereum-rs project";
inputs = {
nixpkgs.url = "github:NixOs/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
flake-utils.url = "github:numtide/flake-utils";
foundry.url = "github:shazow/foundry.nix/monthly"; # Use monthly branch for permanent releases

};
outputs = { self, nixpkgs, rust-overlay, flake-utils, foundry, ... }@inputs:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ rust-overlay.overlays.default foundry.overlay ];
};

toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
cargoTomlContents = builtins.readFile ./Cargo.toml;
version = (builtins.fromTOML cargoTomlContents).package.version;

ethereumEs = pkgs.rustPlatform.buildRustPackage {
inherit version;
name = "ethereumEs";
buildInputs = with pkgs; [ openssl ];
nativeBuildInputs = with pkgs; [ pkg-config openssl.dev ];

src = pkgs.lib.cleanSourceWith { src = self; };

cargoLock.lockFile = ./Cargo.lock;

};
in {

overlays.default = final: prev: { ethereumEs = ethereumEs; };

gitRev = if (builtins.hasAttr "rev" self) then self.rev else "dirty";

devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
foundry-bin
solc
toolchain
openssl
cargo-insta
pkg-config
eza
rust-analyzer-unwrapped
nodejs_20
nodePackages.typescript
nodePackages.typescript-language-server
watchexec
];
shellHook = ''
## for the IDE to access rust crates source code
export RUST_SRC_PATH="${toolchain}/lib/rustlib/src/rust/library"
## do not pollute the global cargo repository
export CARGO_HOME="$(pwd)/.cargo"
export PATH="$CARGO_HOME/bin:$PATH"
'';
};
});
}
13 changes: 13 additions & 0 deletions rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[toolchain]
channel = "nightly"
components = [
"cargo",
"clippy",
"rust-analyzer",
"rust-src",
"rust-std",
"rustc",
"rustfmt",
]
targets = [ "wasm32-unknown-unknown" ]
profile = "minimal"

0 comments on commit 1561d18

Please sign in to comment.