flake.nix (1535B)
1 { 2 inputs = { 3 nixpkgs.url = "nixpkgs/nixos-unstable"; 4 flake-utils.url = "github:numtide/flake-utils"; 5 6 fenix = { 7 url = "github:nix-community/fenix"; 8 inputs.nixpkgs.follows = "nixpkgs"; 9 }; 10 11 crane = { 12 url = "github:ipetkov/crane"; 13 }; 14 }; 15 16 outputs = { 17 nixpkgs, 18 flake-utils, 19 fenix, 20 crane, 21 ... 22 }: 23 flake-utils.lib.eachDefaultSystem (system: let 24 pkgs = nixpkgs.legacyPackages.${system}; 25 fenixPkgs = fenix.packages.${system}; 26 27 rustToolchain = fenixPkgs.stable.toolchain; 28 29 craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain; 30 src = craneLib.cleanCargoSource ./.; 31 32 cargoToml = fromTOML (builtins.readFile ./Cargo.toml); 33 34 baseNativeBuildInputs = with pkgs; [ 35 pkg-config 36 dbus 37 sqlite 38 openssl 39 ]; 40 41 commonArgs = { 42 pname = "scores"; 43 inherit src; 44 inherit (cargoToml.package) version; 45 46 strictDeps = true; 47 nativeBuildInputs = baseNativeBuildInputs; 48 buildInputs = with pkgs; [sqlite.dev openssl.dev dbus.dev]; 49 }; 50 51 scores = craneLib.buildPackage (commonArgs 52 // { 53 cargoArtifacts = craneLib.buildDepsOnly commonArgs; 54 }); 55 in { 56 packages = { 57 default = scores; 58 inherit scores; 59 }; 60 61 devShells.default = pkgs.mkShell { 62 nativeBuildInputs = [rustToolchain fenixPkgs.rust-analyzer] ++ baseNativeBuildInputs; 63 inherit (commonArgs) buildInputs; 64 }; 65 }); 66 }