From b522666665d16df5ab10d267a52cf933ce0abdc7 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 3 Jan 2024 18:12:29 +0100 Subject: [PATCH] flake reorg --- flake.nix | 47 ++++++++------------------------- modules.nix | 12 +++++++++ overlay.nix | 5 ++++ package.nix | 21 +++++++++++++++ wasm.nix | 75 +++++++++++++++++++++++++++++++---------------------- 5 files changed, 93 insertions(+), 67 deletions(-) create mode 100644 modules.nix create mode 100644 overlay.nix create mode 100644 package.nix diff --git a/flake.nix b/flake.nix index 87b57a5..212058d 100644 --- a/flake.nix +++ b/flake.nix @@ -24,21 +24,9 @@ overlays = [ (import rust-overlay) (final: prev: { - npmlock2nix = import npmlock2nix { pkgs = final; }; - rust-wasm = (final.rust-bin.stable.latest.default.override { - targets = [ "wasm32-unknown-unknown" ]; - }); - demo-inspector-wasm = import ./wasm.nix final; - nodejs = final.nodejs_20; - - node_modules = final.npmlock2nix.v2.node_modules { - src = ./www; - nodejs = final.nodejs; - localPackages = { - "demo-inspector" = final.demo-inspector-wasm; - }; - }; + npmlock2nix = import npmlock2nix {pkgs = final;}; }) + (import ./overlay.nix) ]; pkgs = import nixpkgs { inherit system overlays; @@ -46,7 +34,6 @@ in rec { devShells.default = pkgs.mkShell { nativeBuildInputs = with pkgs; [ - rust-wasm cargo-edit bacon wasm-pack @@ -56,26 +43,14 @@ ]; }; - packages.demo-inspector-wasm = pkgs.demo-inspector-wasm; - - packages.node_modules = pkgs.node_modules; - - packages.demo-inspector = pkgs.stdenv.mkDerivation rec { - name = "demo-inspector"; - version = "0.1.0"; - - src = ./www; - - nativeBuildInputs = with pkgs; [nodejs_20]; - buildPhase = with pkgs; '' - cp -r ${node_modules}/node_modules ./node_modules - npm run build - ''; - - installPhase = '' - cp -r dist $out - ''; + packages = rec { + wasm = pkgs.demo-inspector-wasm; + node_modules = pkgs.demo-inspector-node-modules; + demo-inspector = pkgs.demo-inspector; + default = demo-inspector; }; - defaultPackage = packages.demo-inspector; - }); + }) + // { + overlays.default = import ./overlay.nix; + }; } diff --git a/modules.nix b/modules.nix new file mode 100644 index 0000000..82a52b0 --- /dev/null +++ b/modules.nix @@ -0,0 +1,12 @@ +{ + npmlock2nix, + nodejs_20, + demo-inspector-wasm, +}: +npmlock2nix.v2.node_modules { + src = ./www; + nodejs = nodejs_20; + localPackages = { + "demo-inspector" = demo-inspector-wasm; + }; +} diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..52c59f5 --- /dev/null +++ b/overlay.nix @@ -0,0 +1,5 @@ +prev: final: { + demo-inspector-wasm = final.callPackage ./wasm.nix {}; + demo-inspector-node-modules = final.callPackage ./modules.nix {}; + demo-inspector = final.callPackage ./package.nix {}; +} diff --git a/package.nix b/package.nix new file mode 100644 index 0000000..a4edf16 --- /dev/null +++ b/package.nix @@ -0,0 +1,21 @@ +{ + stdenv, + nodejs_20, + demo-inspector-node-modules, +}: +stdenv.mkDerivation rec { + name = "demo-inspector"; + version = "0.1.0"; + + src = ./www; + + nativeBuildInputs = [nodejs_20]; + buildPhase = '' + cp -r ${demo-inspector-node-modules}/node_modules ./node_modules + npm run build + ''; + + installPhase = '' + cp -r dist $out + ''; +} diff --git a/wasm.nix b/wasm.nix index ef00d01..805ae50 100644 --- a/wasm.nix +++ b/wasm.nix @@ -1,46 +1,59 @@ -pkgs: let +{ + rustPlatform, + nodejs_20, + pkg-config, + openssl, + fetchCrate, + rust-bin, + wasm-pack, + binaryen, +}: let deps = (builtins.fromTOML (builtins.readFile ./wasm/Cargo.toml)).dependencies; - wasm-bindgen-cli = pkgs.rustPlatform.buildRustPackage rec { + wasm-bindgen-cli = rustPlatform.buildRustPackage rec { pname = "wasm-bindgen-cli"; version = deps.wasm-bindgen.version; - src = pkgs.fetchCrate { + src = fetchCrate { inherit pname version; sha256 = "sha256-IPxP68xtNSpwJjV2yNMeepAS0anzGl02hYlSTvPocz8="; }; cargoSha256 = "sha256-pBeQaG6i65uJrJptZQLuIaCb/WCQMhba1Z1OhYqA8Zc="; - nativeBuildInputs = [ pkgs.pkg-config ]; + nativeBuildInputs = [pkg-config]; - buildInputs = with pkgs; [ openssl ]; + buildInputs = [openssl]; - checkInputs = [ pkgs.nodejs_20 ]; + checkInputs = [nodejs_20]; dontCargoCheck = true; }; -in pkgs.rustPlatform.buildRustPackage rec { - name = "demo-inspector-wasm"; - version = "0.1.0"; - - cargoLock = { - lockFile = ./wasm/Cargo.lock; + rust-wasm = rust-bin.stable.latest.default.override { + targets = ["wasm32-unknown-unknown"]; }; +in + rustPlatform.buildRustPackage rec { + name = "demo-inspector-wasm"; + version = "0.1.0"; + + cargoLock = { + lockFile = ./wasm/Cargo.lock; + }; + + src = ./wasm; + + WASM_PACK_CACHE = "/build/cache"; + nativeBuildInputs = [rust-wasm wasm-pack wasm-bindgen-cli binaryen]; + buildPhase = '' + runHook preBuild + ( + set -x + wasm-pack build --mode no-install + ) + runHook postBuild + ''; + dontCargoBuild = true; + dontCargoCheck = true; - src = ./wasm; - - WASM_PACK_CACHE = "/build/cache"; - nativeBuildInputs = [pkgs.rust-wasm pkgs.wasm-pack wasm-bindgen-cli pkgs.binaryen]; - buildPhase = '' - runHook preBuild - ( - set -x - wasm-pack build --mode no-install - ) - runHook postBuild - ''; - dontCargoBuild = true; - dontCargoCheck = true; - - installPhase = '' - cp -r pkg $out - ''; -} + installPhase = '' + cp -r pkg $out + ''; + }