-
Notifications
You must be signed in to change notification settings - Fork 951
Expand file tree
/
Copy pathflake.nix
More file actions
116 lines (103 loc) · 3.97 KB
/
flake.nix
File metadata and controls
116 lines (103 loc) · 3.97 KB
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
{
description = "Wasmer Webassembly runtime";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
rust-overlay.url = "github:oxalica/rust-overlay";
flakeutils = {
url = "github:numtide/flake-utils";
};
};
outputs = { self, nixpkgs, flakeutils, rust-overlay }:
flakeutils.lib.eachDefaultSystem (system:
let
NAME = "wasmer";
pkgs = import nixpkgs {
inherit system;
overlays = [ (import rust-overlay) ];
};
rust-toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
in
rec {
packages.${NAME} = import ./scripts/nix/pkg.nix pkgs;
defaultPackage = pkgs.callPackage packages.${NAME} pkgs;
# For `nix run`.
apps.${NAME} = flakeutils.lib.mkApp {
drv = packages.${NAME};
};
defaultApp = apps.${NAME};
# Development shell.
# Run "nix develop" to activate.
devShell = pkgs.mkShell {
name = NAME;
src = self;
packages = with pkgs; [
pkg-config
openssl
# LLVM and related dependencies
llvmPackages_21.libllvm
llvmPackages_21.llvm
llvmPackages_21.llvm.dev
llvmPackages_21.libclang.dev
libxml2
libffi
cmake
ninja
webkitgtk_4_1
# Rust tooling
(rust-toolchain.override {
targets = [ "wasm32-unknown-unknown" ];
extensions = [ "clippy" "rustfmt" "rust-analyzer" "rust-src" ];
})
# Snapshot testing
# https://github.com/mitsuhiko/insta
cargo-insta
# Test runner
# https://github.com/nextest-rs/nextest
cargo-nextest
# Rust dependency vulnerability checker
# https://github.com/EmbarkStudios/cargo-deny
cargo-deny
# Webassembly tooling
# "Official" WASM CLI tools
# (wasm2wat, wat2wasm, wasm-objdump, ...)
# https://github.com/WebAssembly/wabt
wabt
# Provides `wasm-opt` (WASM optimizer) and some other tools
# https://github.com/WebAssembly/binaryen
binaryen
# Various WASM debugging and conversion tools
# (partial overlap with "wabt")
# https://github.com/bytecodealliance/wasm-tools
wasm-tools
];
shellHook = ''
export LLVM_SYS_211_PREFIX="${pkgs.llvmPackages_21.llvm.dev}"
export LIBCLANG_PATH="${pkgs.llvmPackages_21.libclang.lib}/lib"
export PKG_CONFIG_PATH="${pkgs.webkitgtk_4_1.dev}/lib/pkgconfig:$PKG_CONFIG_PATH"
export LIBRARY_PATH="${pkgs.llvmPackages_21.compiler-rt-libc}/lib/linux:$LIBRARY_PATH"
export LD_LIBRARY_PATH="${pkgs.llvmPackages_21.compiler-rt-libc}/lib/linux:$LD_LIBRARY_PATH"
if [ -z "$V8_INCLUDE_DIR" ] || [ -z "$V8_LIB_DIR" ]; then
for candidate in /nix/store/*-ubi-v8-prebuilt-11.9.2; do
if [ -d "$candidate/include" ] && [ -d "$candidate/lib" ]; then
export V8_INCLUDE_DIR="$candidate/include"
export V8_LIB_DIR="$candidate/lib"
break
fi
done
fi
export BINDGEN_EXTRA_CLANG_ARGS="$(
< ${pkgs.llvmPackages_21.stdenv.cc}/nix-support/libc-crt1-cflags
) $(
< ${pkgs.llvmPackages_21.stdenv.cc}/nix-support/libc-cflags
) $(
< ${pkgs.llvmPackages_21.stdenv.cc}/nix-support/cc-cflags
) $(
< ${pkgs.llvmPackages_21.stdenv.cc}/nix-support/libcxx-cxxflags
) \
-isystem ${pkgs.glibc.dev}/include \
-idirafter ${pkgs.llvmPackages_21.clang}/lib/clang/${pkgs.lib.getVersion pkgs.llvmPackages_21.clang}/include"
'';
};
}
);
}