/ 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 }