Add overseer host package for UI support
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
{inputs}: final: prev: let
|
{inputs}: final: prev: let
|
||||||
manifest = (prev.lib.importTOML "${inputs.overseer}/overseer/Cargo.toml").package;
|
manifest = (prev.lib.importTOML "${inputs.overseer}/overseer/Cargo.toml").package;
|
||||||
in {
|
|
||||||
overseer =
|
overseer-cli =
|
||||||
prev.rustPlatform.buildRustPackage {
|
prev.rustPlatform.buildRustPackage {
|
||||||
pname = manifest.name;
|
pname = "overseer-cli";
|
||||||
version = manifest.version;
|
version = manifest.version;
|
||||||
|
|
||||||
cargoLock.lockFile = "${inputs.overseer}/overseer/Cargo.lock";
|
cargoLock.lockFile = "${inputs.overseer}/overseer/Cargo.lock";
|
||||||
@@ -22,4 +22,80 @@ in {
|
|||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
overseer-host =
|
||||||
|
prev.buildNpmPackage {
|
||||||
|
pname = "overseer-host";
|
||||||
|
version = manifest.version;
|
||||||
|
|
||||||
|
src = "${inputs.overseer}/host";
|
||||||
|
|
||||||
|
npmDepsHash = "sha256-WIjx6N8vnH3C6Kxn4tiryi3bM0xnov5ok2k9XrndIS0=";
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
npm run build
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r dist $out/
|
||||||
|
cp -r node_modules $out/
|
||||||
|
cp package.json $out/
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
overseer-ui =
|
||||||
|
prev.buildNpmPackage {
|
||||||
|
pname = "overseer-ui";
|
||||||
|
version = manifest.version;
|
||||||
|
|
||||||
|
src = "${inputs.overseer}/ui";
|
||||||
|
|
||||||
|
npmDepsHash = "sha256-krOsSd8OAPsdCOCf1bcz9c/Myj6jpHOkaD/l+R7PQpY=";
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
npm run build
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r dist $out/
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
# The CLI looks for host/dist/index.js and ui/dist relative to the binary
|
||||||
|
# Using paths like: exe_dir.join("../@dmmulroy/overseer/host/dist/index.js")
|
||||||
|
# So we create: bin/os and @dmmulroy/overseer/host/dist/index.js
|
||||||
|
overseer =
|
||||||
|
prev.runCommand "overseer-${manifest.version}" {
|
||||||
|
nativeBuildInputs = [prev.makeWrapper];
|
||||||
|
} ''
|
||||||
|
# Create npm-like structure that the CLI expects
|
||||||
|
mkdir -p $out/bin
|
||||||
|
mkdir -p $out/@dmmulroy/overseer/host
|
||||||
|
mkdir -p $out/@dmmulroy/overseer/ui
|
||||||
|
|
||||||
|
# Copy host files
|
||||||
|
cp -r ${overseer-host}/dist $out/@dmmulroy/overseer/host/
|
||||||
|
cp -r ${overseer-host}/node_modules $out/@dmmulroy/overseer/host/
|
||||||
|
cp ${overseer-host}/package.json $out/@dmmulroy/overseer/host/
|
||||||
|
|
||||||
|
# Copy UI files
|
||||||
|
cp -r ${overseer-ui}/dist $out/@dmmulroy/overseer/ui/
|
||||||
|
|
||||||
|
# Copy CLI binary
|
||||||
|
cp ${overseer-cli}/bin/os $out/bin/os
|
||||||
|
|
||||||
|
# Make wrapper that ensures node is available
|
||||||
|
wrapProgram $out/bin/os \
|
||||||
|
--prefix PATH : ${prev.nodejs}/bin
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user