webview: replace dream2nix by buildNpm from nixpkgs to save inputs

This commit is contained in:
Johannes Kirschbauer
2024-05-21 15:50:52 +02:00
parent e9b0ce6a78
commit 21104a0465
4 changed files with 26 additions and 128 deletions

View File

@@ -1,53 +1,30 @@
{ inputs, ... }:
{ ... }:
{
perSystem =
{ pkgs, config, ... }:
{
system,
pkgs,
config,
...
}:
let
node_modules-dev = config.packages.webview-ui.prepared-dev;
packages.webview-ui = pkgs.buildNpmPackage {
pname = "clan-webview-ui";
version = "0.0.1";
src_with_api = pkgs.stdenv.mkDerivation {
name = "with-api";
src = ./app;
buildInputs = [ pkgs.nodejs ];
installPhase = ''
mkdir -p $out
mkdir -p $out/api
cat ${config.packages.clan-ts-api} > $out/api/index.ts
cp -r $src/* $out
ls -la $out/api
'';
};
in
{
packages.webview-ui = inputs.dream2nix.lib.evalModules {
specialArgs = {
src = src_with_api ;
# npmDepsHash = "sha256-bRD2vzijhdOOvcEi6XaG/neSqhkVQMqIX/8bxvRQkTc=";
npmDeps = pkgs.fetchNpmDeps {
src = ./app;
hash = "sha256-bRD2vzijhdOOvcEi6XaG/neSqhkVQMqIX/8bxvRQkTc=";
};
packageSets.nixpkgs = inputs.dream2nix.inputs.nixpkgs.legacyPackages.${system};
modules = [ ./default.nix ];
# The prepack script runs the build script, which we'd rather do in the build phase.
npmPackFlags = [ "--ignore-scripts" ];
preBuild = ''
mkdir -p api
cat ${config.packages.clan-ts-api} > api/index.ts
'';
};
devShells.webview-ui = pkgs.mkShell {
inputsFrom = [ config.packages.webview-ui.out ];
inputsFrom = [ config.packages.webview-ui ];
shellHook = ''
ID=${node_modules-dev}
currID=$(cat .dream2nix/.node_modules_id 2> /dev/null)
mkdir -p .dream2nix
if [[ "$ID" != "$currID" || ! -d "app/node_modules" ]];
then
${pkgs.rsync}/bin/rsync -a --chmod=ug+w --delete ${node_modules-dev}/node_modules/ ./app/node_modules/
echo -n $ID > .dream2nix/.node_modules_id
echo "Ok: node_modules updated"
fi
mkdir -p ./app/api
cat ${config.packages.clan-ts-api} > ./app/api/index.ts
'';