/ flake.nix
flake.nix
 1  {
 2    description = "Flakebox Project template";
 3  
 4    inputs = {
 5      nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 6      flake-utils.url = "github:numtide/flake-utils";
 7      flakebox.url = "github:rustshop/flakebox";
 8    };
 9  
10    outputs =
11      {
12        self,
13        nixpkgs,
14        flake-utils,
15        flakebox,
16      }:
17      flake-utils.lib.eachDefaultSystem (
18        system:
19        let
20          projectName = "cargo-deluxe";
21  
22          flakeboxLib = flakebox.lib.${system} {
23            config = {
24              github.ci.buildOutputs = [ ".#ci.${projectName}" ];
25              toolchain.channel = "latest";
26            };
27          };
28  
29          buildPaths = [
30            "Cargo.toml"
31            "Cargo.lock"
32            "cargo-deluxe"
33            "bin-intercept"
34          ];
35  
36          buildSrc = flakeboxLib.filterSubPaths {
37            root = builtins.path {
38              name = projectName;
39              path = ./.;
40            };
41            paths = buildPaths;
42          };
43  
44          multiBuild = (flakeboxLib.craneMultiBuild { }) (
45            craneLib':
46            let
47              craneLib = (
48                craneLib'.overrideArgs {
49                  pname = projectName;
50                  src = buildSrc;
51                  nativeBuildInputs = [ ];
52                }
53              );
54            in
55            {
56              ${projectName} = craneLib.buildPackage { };
57  
58              "cargo" = flakeboxLib.pickBinary {
59                pkg = craneLib.buildPackage { };
60                bin = "cargo";
61              };
62              "rustc" = flakeboxLib.pickBinary {
63                pkg = craneLib.buildPackage { };
64                bin = "rustc";
65              };
66            }
67          );
68        in
69        {
70          packages = {
71            default = multiBuild.${projectName};
72            cargo = multiBuild.cargo;
73            rustc = multiBuild.rustc;
74          };
75  
76          legacyPackages = multiBuild;
77  
78          devShells = flakeboxLib.mkShells { };
79        }
80      );
81  }