{ description = "Improvise — Multi-Dimensional Data Modeling Terminal Application"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay = { url = "github:oxalica/rust-overlay"; }; flake-utils.url = "github:numtide/flake-utils"; crate2nix.url = "github:nix-community/crate2nix"; }; outputs = { self, nixpkgs, rust-overlay, flake-utils, crate2nix, }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [(import rust-overlay)]; }; rustToolchain = pkgs.rust-bin.stable.latest.default.override { extensions = ["rust-src" "clippy" "rustfmt"]; }; generatedCargoNix = crate2nix.tools.${system}.generatedCargoNix { name = "improvise"; src = ./.; }; cargoNix = import generatedCargoNix { pkgs = pkgs; }; in { devShells.default = pkgs.mkShell { nativeBuildInputs = [ rustToolchain pkgs.pkg-config pkgs.rust-analyzer crate2nix.packages.${system}.default ]; RUST_BACKTRACE = "1"; }; packages.default = cargoNix.rootCrate.build; }); }