|
1 | 1 | { |
2 | 2 | description = "A devShell example"; |
| 3 | + nixConfig = { |
| 4 | + extra-substituters = [ |
| 5 | + "https://m00nwtchr.cachix.org" |
| 6 | + ]; |
| 7 | + extra-trusted-public-keys = [ |
| 8 | + "m00nwtchr.cachix.org-1:obUPSTOPq11tzLSzMCHBq/A2PTeIv9qIZW1IxCeb8Yw=" |
| 9 | + ]; |
| 10 | + }; |
3 | 11 | inputs = { |
4 | 12 | crane.url = "github:ipetkov/crane"; |
5 | 13 | flake-utils.url = "github:numtide/flake-utils"; |
6 | | - fenix.url = "github:nix-community/fenix"; |
7 | | - fenix.inputs.nixpkgs.follows = "nixpkgs"; |
| 14 | + rust-overlay.url = "github:oxalica/rust-overlay"; |
| 15 | + rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; |
8 | 16 |
|
9 | 17 | advisory-db = { |
10 | 18 | url = "github:rustsec/advisory-db"; |
|
16 | 24 | nixpkgs, |
17 | 25 | crane, |
18 | 26 | flake-utils, |
19 | | - fenix, |
20 | | - advisory-db, |
| 27 | + rust-overlay, |
21 | 28 | ... |
22 | 29 | }: |
23 | 30 | flake-utils.lib.eachDefaultSystem (system: let |
24 | 31 | pkgs = import nixpkgs { |
25 | 32 | inherit system; |
26 | | - overlays = [fenix.overlays.default]; |
| 33 | + overlays = [rust-overlay.overlays.default]; |
27 | 34 | }; |
28 | 35 | inherit (pkgs) lib; |
29 | 36 |
|
30 | | - rustToolchain = pkgs.fenix.combine (with pkgs.fenix; [ |
31 | | - stable.cargo |
32 | | - stable.clippy |
33 | | - stable.rustc |
34 | | - latest.rustfmt |
35 | | - ]); |
36 | | - |
37 | | - craneLib = (crane.mkLib pkgs).overrideToolchain (p: rustToolchain); |
38 | | - craneDev = craneLib.overrideToolchain (p: |
39 | | - p.fenix.combine (with p.fenix.stable; [ |
40 | | - rustToolchain |
41 | | - rust-analyzer |
42 | | - rust-src |
43 | | - ])); |
44 | | - |
45 | | - craneNightly = craneLib.overrideToolchain pkgs.fenix.minimal.toolchain; |
| 37 | + craneLib = (crane.mkLib pkgs).overrideToolchain (p: p.rust-bin.stable.latest.minimal); |
46 | 38 |
|
47 | 39 | root = ./.; |
48 | 40 | src = lib.fileset.toSource { |
|
142 | 134 | }; |
143 | 135 |
|
144 | 136 | dockerImages = lib.mapAttrs mkImage packages; |
145 | | - |
146 | | - mkChecks = craneLib: let |
147 | | - cargoArtifacts = mkCargoArtifacts craneLib; |
148 | | - in { |
149 | | - # Run clippy |
150 | | - workspace-clippy = craneLib.cargoClippy (commonArgs |
151 | | - // { |
152 | | - inherit cargoArtifacts; |
153 | | - cargoClippyExtraArgs = "--all-targets -- --deny warnings"; |
154 | | - }); |
155 | | - |
156 | | - # Check formatting |
157 | | - workspace-fmt = craneLib.cargoFmt { |
158 | | - inherit src; |
159 | | - }; |
160 | | - |
161 | | - # Audit dependencies |
162 | | - workspace-audit = craneLib.cargoAudit { |
163 | | - inherit src advisory-db; |
164 | | - }; |
165 | | - |
166 | | - # Audit licenses |
167 | | - workspace-deny = craneLib.cargoDeny { |
168 | | - inherit src; |
169 | | - }; |
170 | | - |
171 | | - # Run tests with cargo-nextest |
172 | | - # Consider setting `doCheck = false` on other crate derivations |
173 | | - # if you do not want the tests to run twice |
174 | | - workspace-nextest = craneLib.cargoNextest (commonArgs |
175 | | - // { |
176 | | - inherit cargoArtifacts; |
177 | | - partitions = 1; |
178 | | - partitionType = "count"; |
179 | | - cargoNextestPartitionsExtraArgs = "--no-tests=pass"; |
180 | | - }); |
181 | | - }; |
182 | 137 | in { |
183 | | - checks = |
184 | | - { |
185 | | - workspace-udeps = craneNightly.mkCargoDerivation (commonArgs |
186 | | - // { |
187 | | - cargoArtifacts = mkCargoArtifacts craneNightly; |
188 | | - pnameSuffix = "-udeps"; |
189 | | - buildPhaseCargoCommand = "cargo udeps"; |
190 | | - nativeBuildInputs = [pkgs.cargo-udeps]; |
191 | | - }); |
192 | | - } |
193 | | - // mkChecks craneLib |
194 | | - // packages; |
195 | 138 | packages = |
196 | 139 | { |
197 | 140 | default = packages.rssflow; |
|
211 | 154 | apps.default = flake-utils.lib.mkApp { |
212 | 155 | drv = packages.rssflow; |
213 | 156 | }; |
214 | | - |
215 | | - devShells.default = craneDev.devShell { |
216 | | - checks = (mkChecks craneDev) // mkPackages craneDev; |
217 | | - |
218 | | - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER = "${pkgs.llvmPackages.clangUseLLVM}/bin/clang"; |
219 | | - CARGO_ENCODED_RUSTFLAGS = "-Clink-arg=-fuse-ld=${pkgs.mold}/bin/mold"; |
220 | | - |
221 | | - packages = with pkgs; [ |
222 | | - grpcurl |
223 | | - sqlx-cli |
224 | | - ]; |
225 | | - }; |
226 | 157 | }); |
227 | 158 | } |
0 commit comments