This repository has been archived by the owner on Feb 1, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
flake.nix
83 lines (76 loc) · 2.77 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{
description = "Cosmwasm VM";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
crane = {
url = "github:ipetkov/crane";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
};
};
outputs = { self, nixpkgs, crane, flake-utils, rust-overlay }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ rust-overlay.overlays.default ];
};
in let
rust-nightly =
pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
crane-lib = crane.mkLib pkgs;
crane-nightly = crane-lib.overrideToolchain rust-nightly;
check-crate = pkgs.writeShellApplication rec {
name = "check-crate";
runtimeInputs = [ rust-nightly ];
text = ''
EXTRA_FEATURES=""
if [[ -n "''${2-}" ]]; then
EXTRA_FEATURES="--features $2"
fi
# shellcheck disable=SC2086
cargo build --target wasm32-unknown-unknown --locked --all-features --package "$1" $EXTRA_FEATURES
# shellcheck disable=SC2086
cargo build --locked --no-default-features --target thumbv7em-none-eabi --package "$1" $EXTRA_FEATURES
'';
};
src = pkgs.lib.cleanSourceWith {
filter = pkgs.lib.cleanSourceFilter;
src = pkgs.lib.cleanSourceWith {
filter = pkgs.nix-gitignore.gitignoreFilterPure (name: type: true)
[ ./.gitignore ] ./.;
src = ./.;
};
};
common-args = {
inherit src;
buildInputs = [ pkgs.pkg-config pkgs.openssl ]
++ (pkgs.lib.optionals pkgs.stdenv.isDarwin
(with pkgs.darwin.apple_sdk.frameworks; [ Security ]));
};
common-deps = crane-nightly.buildDepsOnly common-args;
common-cached-args = common-args // { cargoArtifacts = common-deps; };
in rec {
packages = rec {
cosmwasm-vm = crane-nightly.buildPackage common-cached-args;
default = cosmwasm-vm;
inherit check-crate;
};
checks = {
package = packages.default;
clippy = crane-nightly.cargoClippy (common-cached-args // {
cargoClippyExtraArgs = "-- --deny warnings";
});
fmt = crane-nightly.cargoFmt common-args;
};
devShell = pkgs.mkShell {
buildInputs = [ rust-nightly ]
++ (with pkgs; [ openssl openssl.dev pkgconfig taplo nixfmt bacon flamegraph cargo-flamegraph check-crate]);
};
});
}