{ description = "English reading lessons with a Leptos site"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, rust-overlay, ... }: let systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forEachSystem = f: nixpkgs.lib.genAttrs systems f; in { packages = forEachSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ (import rust-overlay) ]; }; rustToolchain = pkgs.rust-bin.stable.latest.default.override { targets = [ "wasm32-unknown-unknown" ]; }; wasmBindgenCli = pkgs.wasm-bindgen-cli.overrideAttrs (_: rec { version = "0.2.128"; src = pkgs.fetchCrate { pname = "wasm-bindgen-cli"; inherit version; hash = "sha256-a7lcXJnnZkYReja+iUO7NqqrWyv3toxnUgQb8s4IS5s="; }; cargoDeps = pkgs.rustPlatform.fetchCargoVendor { inherit src; hash = "sha256-R1Tas33Ursy8kqsxguAkG0ZhNed2n5uFTAhw1l2qlLY="; }; }); in { iana-angl = pkgs.stdenv.mkDerivation { pname = "iana-angl"; version = "0.1.0"; src = pkgs.lib.cleanSourceWith { src = ./site; filter = path: type: let name = builtins.baseNameOf path; in name != "target" && name != "dist"; }; cargoDeps = pkgs.rustPlatform.importCargoLock { lockFile = ./site/Cargo.lock; }; nativeBuildInputs = [ pkgs.rustPlatform.cargoSetupHook rustToolchain pkgs.trunk wasmBindgenCli pkgs.binaryen pkgs.pkg-config ]; buildPhase = '' runHook preBuild export HOME="$TMPDIR" trunk build --release --dist "$out" runHook postBuild ''; installPhase = "true"; }; }); devShells = forEachSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ (import rust-overlay) ]; }; rustToolchain = pkgs.rust-bin.stable.latest.default.override { targets = [ "wasm32-unknown-unknown" ]; }; in { default = pkgs.mkShell { packages = [ rustToolchain pkgs.trunk pkgs.wasm-bindgen-cli pkgs.binaryen pkgs.pkg-config pkgs.git ]; RUST_SRC_PATH = "${rustToolchain}/lib/rustlib/src/rust/library"; shellHook = '' echo "Leptos shell ready. Run: trunk serve --open" ''; }; }); nixosModules = import ./nixos/module; }; }