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 9, 2024
1 parent 191d4bc commit 291f123
Show file tree
Hide file tree
Showing 5 changed files with 283 additions and 19 deletions.
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.

87 changes: 87 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
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;

GIT_COMMIT_HASH_SHORT = self.shortRev or "unknown";

};

packages = {
ethereumEs = ethereumEs;
default = packages.ethereumEs;
};

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

gitRev = if (builtins.hasAttr "rev" self) then self.rev else "dirty";
in {
inherit packages overlays;

devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
foundry-bin

solc

toolchain
openssl
cargo-insta
pkg-config
eza
rust-analyzer-unwrapped

nodejs
nodePackages.typescript
nodePackages.typescript-language-server

docker
watchexec
cowsay
];
shellHook = ''
alias ls=eza
alias find=fd
echo "hello-world-avs" | cowsay
export RUST_SRC_PATH="${toolchain}/lib/rustlib/src/rust/library"
export CARGO_HOME="$(pwd)/.cargo"
export PATH="$CARGO_HOME/bin:$PATH"
export RUST_BACKTRACE=1
export CARGO_NET_GIT_FETCH_WITH_CLI=true
export ETH_RPC_URL='127.0.0.1:8545'
export ETHERSCAN_API_KEY='11'
cargo install cargo-expand
cargo install --version 0.5.7 sqlx-cli --no-default-features --features postgres
# cargo install cargo-udeps ## lets not do this till we ready for prod
cargo install bunyan
'';
};
});
}
48 changes: 30 additions & 18 deletions package-lock.json

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

Loading

0 comments on commit 291f123

Please sign in to comment.