{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    utils.url = "github:numtide/flake-utils";
    rust-overlay.url = "github:oxalica/rust-overlay";
  };

  outputs = { self, nixpkgs, utils, rust-overlay }:
      utils.lib.eachDefaultSystem (system:
        let 
          overlays = [ (import rust-overlay) ];
          pkgs = import nixpkgs { inherit system overlays; };
        in {
          devShell = with pkgs; mkShell {
            buildInputs = with pkgs; [ 
              python312 python312Packages.decorator python312Packages.pillow
              perf-tools
              linuxPackages_latest.perf
              (rust-bin.stable.latest.default.override {
                extensions = [ "rust-src" ];
                targets = ["x86_64-unknown-linux-gnu"];
              })
            ];
          };
        }
      );
}