-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathflake.nix
69 lines (67 loc) · 1.82 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
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
crane-flake.url = "github:ipetkov/crane";
# Precisely filter files copied to the nix store
nix-filter-flake.url = "github:numtide/nix-filter";
};
outputs = { self, nixpkgs, nix-filter-flake, rust-overlay, crane-flake }:
let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; overlays = [ (import rust-overlay) ]; };
crane = crane-flake.mkLib pkgs;
nix-filter = nix-filter-flake.lib;
rust-toolchain = pkgs.rust-bin.stable.latest.default.override {
extensions = [ "rust-src" ];
targets = [ "wasm32-unknown-unknown" ];
};
kast =
let
commonArgs = {
src = nix-filter {
root = ./.;
include = [
"crates"
"std"
"src"
"Cargo.toml"
"Cargo.lock"
];
};
};
cargoArtifacts = crane.buildDepsOnly commonArgs;
in
crane.buildPackage (commonArgs // {
inherit cargoArtifacts;
buildInputs = [
pkgs.makeWrapper
];
postFixup = ''
wrapProgram $out/bin/kast --set KAST_STD ${./std}
'';
});
in
{
packages.${system} = {
default = kast;
};
devShells.${system} = {
default = pkgs.mkShell {
packages = with pkgs; [
rust-toolchain
rust-analyzer
just
cargo-flamegraph
];
shellHook = ''
echo Hello from Kast devshell
'';
};
};
formatter.${system} = pkgs.nixpkgs-fmt;
};
}