|
3 | 3 |
|
4 | 4 | inputs = {
|
5 | 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
| 6 | + flake-utils.url = "github:numtide/flake-utils"; |
6 | 7 | pre-commit-hooks = {
|
7 | 8 | url = "github:cachix/pre-commit-hooks.nix";
|
8 | 9 | inputs.nixpkgs.follows = "nixpkgs";
|
| 10 | + inputs.flake-utils.follows = "flake-utils"; |
| 11 | + }; |
| 12 | + rust-overlay = { |
| 13 | + url = "github:oxalica/rust-overlay"; |
| 14 | + inputs.nixpkgs.follows = "nixpkgs"; |
| 15 | + inputs.flake-utils.follows = "flake-utils"; |
9 | 16 | };
|
10 | 17 | crane = {
|
11 | 18 | url = "github:ipetkov/crane";
|
|
17 | 24 | self,
|
18 | 25 | flake-parts,
|
19 | 26 | crane,
|
| 27 | + rust-overlay, |
20 | 28 | ...
|
21 | 29 | }:
|
22 | 30 | flake-parts.lib.mkFlake {inherit inputs;} {
|
|
32 | 40 | system,
|
33 | 41 | ...
|
34 | 42 | }: let
|
| 43 | + stable-rust = pkgs.rust-bin.stable."1.74.0"; |
| 44 | + nightly-rust = pkgs.rust-bin.nightly."2023-12-07"; |
35 | 45 | isDarwin = builtins.elem system [
|
36 | 46 | "x86_64-darwin"
|
37 | 47 | "aarch64-darwin"
|
|
51 | 61 | stdenv = customStdenv;
|
52 | 62 | };
|
53 | 63 |
|
54 |
| - craneLib = crane.lib.${system}; |
| 64 | + craneLib = (crane.mkLib pkgs).overrideToolchain (pkgs.rust-bin.stable.latest.default.override { |
| 65 | + targets = ["x86_64-unknown-linux-musl"]; |
| 66 | + }); |
55 | 67 |
|
56 | 68 | src = pkgs.lib.cleanSourceWith {
|
57 | 69 | src = craneLib.path ./.;
|
|
62 | 74 |
|
63 | 75 | commonArgs = {
|
64 | 76 | inherit src;
|
| 77 | + inherit (pkgs.pkgsMusl) stdenv; |
65 | 78 | strictDeps = true;
|
66 | 79 | buildInputs = maybeDarwinDeps;
|
67 | 80 | nativeBuildInputs =
|
68 | 81 | [
|
69 | 82 | pkgs.cacert
|
70 | 83 | ]
|
71 |
| - ++ maybeDarwinDeps |
72 |
| - ++ pkgs.lib.optionals (!isDarwin) [pkgs.autoPatchelfHook]; |
73 |
| - stdenv = customStdenv; |
| 84 | + ++ maybeDarwinDeps; |
| 85 | + CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl"; |
| 86 | + CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static"; |
74 | 87 | };
|
75 | 88 |
|
76 | 89 | # Additional target for external dependencies to simplify caching.
|
|
89 | 102 |
|
90 | 103 | generate-toolchains = import ./tools/generate-toolchains.nix {inherit pkgs;};
|
91 | 104 | in {
|
| 105 | + _module.args.pkgs = import self.inputs.nixpkgs { |
| 106 | + inherit system; |
| 107 | + overlays = [(import rust-overlay)]; |
| 108 | + }; |
92 | 109 | apps = {
|
93 | 110 | default = {
|
94 | 111 | type = "app";
|
|
129 | 146 | # partitionType = "count";
|
130 | 147 | # });
|
131 | 148 | };
|
132 |
| - pre-commit.settings = {inherit hooks;}; |
| 149 | + pre-commit.settings = { |
| 150 | + inherit hooks; |
| 151 | + tools = let |
| 152 | + mkOverrideTools = pkgs.lib.mkOverride (pkgs.lib.modules.defaultOverridePriority - 1); |
| 153 | + in { |
| 154 | + rustfmt = mkOverrideTools nightly-rust.rustfmt; |
| 155 | + }; |
| 156 | + }; |
133 | 157 | devShells.default = pkgs.mkShell {
|
134 | 158 | nativeBuildInputs =
|
135 | 159 | [
|
136 | 160 | # Development tooling goes here.
|
137 |
| - pkgs.cargo |
138 |
| - pkgs.rustc |
| 161 | + stable-rust.default |
139 | 162 | pkgs.pre-commit
|
140 | 163 | pkgs.bazel
|
141 | 164 | pkgs.awscli2
|
|
0 commit comments