{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, rust-overlay, flake-utils, ... }@inputs: flake-utils.lib.eachDefaultSystem (system: let wasm-bindgen-overlay = (final: prev: { wasm-bindgen-cli_0_2_123 = prev.wasm-bindgen-cli_0_2_121.overrideAttrs (old: rec { src = prev.fetchCrate { pname = "wasm-bindgen-cli"; version = "0.2.123"; hash = "sha256-ymeAEYsr7OnupWYJWjSeVGvq3+s+zxSNkODbzY62rYs="; }; cargoDeps = prev.rustPlatform.fetchCargoVendor { inherit src; inherit (src) pname version; hash = "sha256-d7x6gtx5OqEE4MyT6yjYn/qtgjx7GroTpXJewnBV2dU="; }; }); }); pkgs = import nixpkgs { inherit system; overlays = [ (import rust-overlay) wasm-bindgen-overlay ]; }; rust = pkgs.rust-bin.stable.latest.default.override { targets = [ "wasm32-unknown-unknown" ]; }; build-pkgs = with pkgs; [ dioxus-cli wasm-bindgen-cli_0_2_123 binaryen lld tailwindcss_4 ]; in rec { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ rust ] ++ build-pkgs; }; packages.default = packages.web; packages.web = pkgs.rustPlatform.buildRustPackage { name = "libretunes"; src = ./.; cargoLock.lockFile = ./Cargo.lock; nativeBuildInputs = with pkgs; [ makeWrapper ] ++ build-pkgs; buildPhase = '' dx build --release --frozen --web ''; installPhase = '' mkdir -p "$out/bin" install -t "$out" target/dx/libretunes/release/web/server cp -r target/dx/libretunes/release/web/public "$out/public" makeWrapper "$out/server" "$out/bin/libretunes" \ --set DIOXUS_PUBLIC_PATH "$out/public" ''; }; } ); }