{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-parts = { url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-parts, rust-overlay, ... } @ inputs: flake-parts.lib.mkFlake {inherit inputs;} { systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; perSystem = { lib, system, self', ... }: let pkgs = import nixpkgs { inherit system; overlays = [(import rust-overlay)]; }; toolchain = pkgs.rust-bin.stable.latest.default; rustPlatform = pkgs.makeRustPlatform { rustc = toolchain; cargo = toolchain; }; in { packages.default = pkgs.callPackage ./derivation.nix {inherit self rustPlatform;}; devShells.default = with pkgs; mkShell { buildInputs = [ (toolchain.override { extensions = ["rust-analyzer" "rust-src"]; }) ]; }; formatter = pkgs.alejandra; }; }; }