-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathflake.nix
64 lines (57 loc) · 1.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
{
description = "Rust development environment";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {inherit system;};
toolchain = pkgs.rustPlatform;
cargoPackage = (pkgs.lib.importTOML "${self}/Cargo.toml").package;
in rec
{
# nix build
packages.default = toolchain.buildRustPackage {
pname = cargoPackage.name;
version = cargoPackage.version;
src = pkgs.lib.cleanSource "${self}";
cargoLock = {
lockFile = "${self}/Cargo.lock";
allowBuiltinFetchGit = true;
};
useNextest = true;
meta = {
description = cargoPackage.description;
homepage = cargoPackage.repository;
license = pkgs.lib.licenses.gpl2Only;
maintainers = cargoPackage.authors;
};
# For other makeRustPlatform features see:
# https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/rust.section.md#cargo-features-cargo-features
};
# nix run
apps.default = flake-utils.lib.mkApp {drv = packages.default;};
# nix develop
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
(with toolchain; [
cargo
rustc
rustLibSrc
])
clippy
rustfmt
cargo-nextest
rust-analyzer
];
# Many editors rely on this rust-src PATH variable
RUST_SRC_PATH = "${toolchain.rustLibSrc}";
};
});
}