Files
2026-09-15 18:51:32 +00:00

119 lines
3.1 KiB
Nix

{
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;
};
}