{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; naersk = { url = "github:nix-community/naersk/master"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs-mozilla = { url = "github:mozilla/nixpkgs-mozilla"; flake = false; }; utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, nixpkgs-mozilla, utils, naersk, }: utils.lib.eachDefaultSystem (system: let pkgs = (import nixpkgs) { inherit system; overlays = [ (import nixpkgs-mozilla) ]; }; toolchain = (pkgs.rustChannelOf { rustToolchain = ./rust-toolchain.toml; sha256 = "sha256-rLP8+fTxnPHoR96ZJiCa/5Ans1OojI7MLsmSqR2ip8o="; }) .rust; naersk' = pkgs.callPackage naersk { cargo = toolchain; rustc = toolchain; }; in { packages.default = naersk'.buildPackage ./.; formatter = nixpkgs.legacyPackages.${system}.alejandra; checks = { inherit (self.packages.${system}) default; # TODO: clippy }; devShell = with pkgs; mkShell { buildInputs = [toolchain]; RUST_SRC_PATH = rustPlatform.rustLibSrc; }; }); }