From 8b3d0e9bb664f9554f5a604dfbaffc9e77bbab56 Mon Sep 17 00:00:00 2001 From: StealthBadger747 Date: Tue, 15 Jul 2025 12:32:54 -0700 Subject: [PATCH] Maybe actually fix builds --- flake.nix | 6 ++++-- nix/package.nix | 37 ++++++++++++++----------------------- nix/wasm.nix | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 25 deletions(-) create mode 100644 nix/wasm.nix diff --git a/flake.nix b/flake.nix index 9229532..afe0e4f 100644 --- a/flake.nix +++ b/flake.nix @@ -29,7 +29,8 @@ rec { in rec { formatter = pkgs.alejandra; packages = { - headplane = pkgs.callPackage ./nix/package.nix {}; + hp_ssh_wasm = pkgs.callPackage ./nix/wasm.nix {}; + headplane = pkgs.callPackage ./nix/package.nix { hp_ssh_wasm = packages.hp_ssh_wasm; }; headplane-agent = pkgs.callPackage ./nix/agent.nix {}; }; checks.default = pkgs.symlinkJoin { @@ -61,7 +62,8 @@ rec { }) // { overlays.default = final: prev: { - headplane = final.callPackage ./nix/package.nix {}; + hp_ssh_wasm = final.callPackage ./nix/wasm.nix {}; + headplane = final.callPackage ./nix/package.nix { hp_ssh_wasm = final.hp_ssh_wasm; }; headplane-agent = final.callPackage ./nix/agent.nix {}; }; nixosModules.headplane = import ./nix/module.nix; diff --git a/nix/package.nix b/nix/package.nix index 3c5410f..0abb9d5 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -5,48 +5,38 @@ nodejs_22, pnpm_10, stdenv, - go, + hp_ssh_wasm, ... }: let - wasmExecJs = - if builtins.pathExists "${go}/share/go/lib/wasm/wasm_exec.js" - then "${go}/share/go/lib/wasm/wasm_exec.js" - else if builtins.pathExists "${go}/lib/wasm/wasm_exec.js" - then "${go}/lib/wasm/wasm_exec.js" - else "${go}/share/go/misc/wasm/wasm_exec.js"; + pkg = builtins.fromJSON (builtins.readFile ../package.json); + pname = pkg.name; + version = pkg.version; + src = ../.; in stdenv.mkDerivation (finalAttrs: { - pname = "headplane"; - version = (builtins.fromJSON (builtins.readFile ../package.json)).version; - src = ../.; + pname = pname; + version = version; + src = src; nativeBuildInputs = [ makeWrapper nodejs_22 pnpm_10.configHook git - go ]; dontCheckForBrokenSymlinks = true; pnpmDeps = pnpm_10.fetchDeps { - inherit (finalAttrs) pname version src; + inherit pname version src; hash = "sha256-GNSpFqPobX6MDPUXxz2XwdZ2Wt7boN8aok52pGgpGoM="; }; buildPhase = '' runHook preBuild - - # Build the Go WASM binary - export GOOS=js - export GOARCH=wasm - go build -o app/hp_ssh.wasm ./cmd/hp_ssh - - # Copy wasm_exec.js to the app directory (from Nix store) - cp ${wasmExecJs} app/wasm_exec.js - + cp ${hp_ssh_wasm}/hp_ssh.wasm app/hp_ssh.wasm + cp ${hp_ssh_wasm}/wasm_exec.js app/wasm_exec.js pnpm build runHook postBuild ''; @@ -55,10 +45,11 @@ stdenv.mkDerivation (finalAttrs: { runHook preInstall mkdir -p $out/{bin,share/headplane} cp -r build $out/share/headplane/ + cp -r node_modules $out/share/headplane/ sed -i "s;$PWD;../..;" $out/share/headplane/build/server/index.js makeWrapper ${lib.getExe nodejs_22} $out/bin/headplane \ - --chdir $out/share/headplane \ - --add-flags $out/share/headplane/build/server/index.js + --chdir $out/share/headplane \ + --add-flags $out/share/headplane/build/server/index.js runHook postInstall ''; }) diff --git a/nix/wasm.nix b/nix/wasm.nix new file mode 100644 index 0000000..e53b37e --- /dev/null +++ b/nix/wasm.nix @@ -0,0 +1,35 @@ +{ buildGoModule, go, lib, ... }: + +let + pkg = builtins.fromJSON (builtins.readFile ../package.json); + pname = "hp_ssh-wasm"; + version = pkg.version; + wasmExecJs = + if builtins.pathExists "${go}/share/go/lib/wasm/wasm_exec.js" then + "${go}/share/go/lib/wasm/wasm_exec.js" + else if builtins.pathExists "${go}/lib/wasm/wasm_exec.js" then + "${go}/lib/wasm/wasm_exec.js" + else + "${go}/share/go/misc/wasm/wasm_exec.js"; +in +buildGoModule rec { + inherit pname version; + src = ../.; + subPackages = [ "cmd/hp_ssh" ]; + vendorHash = "sha256-3hZzDORAH+D4FW6SkOv3Enddd+q36ZALryvCPD9E5Ac="; + env.CGO_ENABLED = 0; + + nativeBuildInputs = [ go ]; + + buildPhase = '' + export GOOS=js + export GOARCH=wasm + go build -o hp_ssh.wasm ./cmd/hp_ssh + ''; + + installPhase = '' + mkdir -p $out + cp hp_ssh.wasm $out/ + cp ${wasmExecJs} $out/wasm_exec.js + ''; +}