{ description = "Cashu Development Kit"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; flakebox = { url = "github:rustshop/flakebox"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flakebox, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { system = system; }; lib = pkgs.lib; flakeboxLib = flakebox.lib.${system} { }; rustSrc = flakeboxLib.filterSubPaths { root = builtins.path { name = "cdk"; path = ./.; }; paths = [ "crates/cashu" "crates/cashu-sdk" ]; }; targetsStd = flakeboxLib.mkStdTargets { }; toolchainsStd = flakeboxLib.mkStdToolchains { }; toolchainNative = flakeboxLib.mkFenixToolchain { targets = (pkgs.lib.getAttrs [ "default" "wasm32-unknown" ] targetsStd); }; commonArgs = { buildInputs = [ pkgs.openssl ] ++ lib.optionals pkgs.stdenv.isDarwin [ pkgs.darwin.apple_sdk.frameworks.SystemConfiguration ]; nativeBuildInputs = [ pkgs.pkg-config ]; }; outputs = (flakeboxLib.craneMultiBuild { toolchains = toolchainsStd; }) (craneLib': let craneLib = (craneLib'.overrideArgs { pname = "flexbox-multibuild"; src = rustSrc; }).overrideArgs commonArgs; in rec { workspaceDeps = craneLib.buildWorkspaceDepsOnly { }; workspaceBuild = craneLib.buildWorkspace { cargoArtifacts = workspaceDeps; }; }); in { devShells = flakeboxLib.mkShells { toolchain = toolchainNative; packages = [ ]; nativeBuildInputs = with pkgs; [ wasm-pack ]; }; }); }