headplane: init at 0.6.1
https://github.com/tale/headplane/releases/tag/v0.6.1 Co-authored-by: Erik Parawell <parawell.erik@gmail.com>
This commit is contained in:
committed by
Igor Ramazanov
co-authored by
Erik Parawell
parent
6758fac063
commit
86c772911f
@@ -294,6 +294,8 @@ gnuradioMinimal.override {
|
||||
}
|
||||
```
|
||||
|
||||
- Added `headplane` and `headplane-agent` packages.
|
||||
|
||||
## Nixpkgs Library {#sec-nixpkgs-release-26.05-lib}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "headplane-agent";
|
||||
# Note, if you are upgrading this, you should upgrade headplane at the same time
|
||||
version = "0.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tale";
|
||||
repo = "headplane";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-hsrnmEwKXJlPjV4aIfmS6GAE414ArVRGoPPpZGmV0x4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-MvrqKMD+A+qBZmzQv+T9920U5uJop+pjfJpZdm2ZqEA=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
env.CGO_ENABLED = 0;
|
||||
|
||||
meta = {
|
||||
description = "Optional sidecar process providing additional features for headplane";
|
||||
homepage = "https://github.com/tale/headplane";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [
|
||||
igor-ramazanov
|
||||
stealthbadger747
|
||||
];
|
||||
mainProgram = "hp_agent";
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
})
|
||||
@@ -0,0 +1,116 @@
|
||||
{
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
fetchPnpmDeps,
|
||||
git,
|
||||
lib,
|
||||
makeWrapper,
|
||||
nodejs_22,
|
||||
pnpm_10,
|
||||
pnpmConfigHook,
|
||||
stdenv,
|
||||
}:
|
||||
let
|
||||
pname = "headplane";
|
||||
# Note, if you are upgrading this, you should upgrade headplane-agent at the same time
|
||||
version = "0.6.1";
|
||||
pnpmDepsHash = "sha256-AYfEL3HSRg87I+Y0fkLthFSDWgHTg5u0DBpzn6KBn1Q=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tale";
|
||||
repo = "headplane";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-hsrnmEwKXJlPjV4aIfmS6GAE414ArVRGoPPpZGmV0x4=";
|
||||
};
|
||||
|
||||
headplaneSshWasm = buildGoModule {
|
||||
pname = "headplane-ssh-wasm";
|
||||
inherit version src;
|
||||
subPackages = [ "cmd/hp_ssh" ];
|
||||
vendorHash = "sha256-MvrqKMD+A+qBZmzQv+T9920U5uJop+pjfJpZdm2ZqEA=";
|
||||
env.CGO_ENABLED = 0;
|
||||
doCheck = false;
|
||||
buildPhase = ''
|
||||
export GOOS=js
|
||||
export GOARCH=wasm
|
||||
go build -o hp_ssh.wasm ./cmd/hp_ssh
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm444 hp_ssh.wasm "$out/hp_ssh.wasm"
|
||||
|
||||
# Go's WebAssembly shim (wasm_exec.js) has no stable `go env` key, and
|
||||
# different Go packages may place it in different locations under GOROOT.
|
||||
# 1. Ask `go env GOROOT` for the active GOROOT.
|
||||
# 2. First try the path misc/wasm/wasm_exec.js.
|
||||
# 3. If that fails, fall back to searching under GOROOT to handle
|
||||
# distro / OS / packaging layout variations.
|
||||
goRoot="$(go env GOROOT)"
|
||||
|
||||
wasm_exec="$goRoot/misc/wasm/wasm_exec.js"
|
||||
if [ ! -e "$wasm_exec" ]; then
|
||||
wasm_exec="$(find "$goRoot" -path '*wasm_exec.js' -print -quit || true)"
|
||||
fi
|
||||
|
||||
if [[ -z "$wasm_exec" || ! -e "$wasm_exec" ]]; then
|
||||
echo "ERROR: wasm_exec.js not found under GOROOT=$goRoot" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
install -Dm444 "$wasm_exec" "$out/wasm_exec.js"
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
inherit pname version src;
|
||||
|
||||
nativeBuildInputs = [
|
||||
git
|
||||
makeWrapper
|
||||
nodejs_22
|
||||
pnpm_10
|
||||
pnpmConfigHook
|
||||
];
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = pnpmDepsHash;
|
||||
fetcherVersion = 3;
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
cp ${headplaneSshWasm}/hp_ssh.wasm app/hp_ssh.wasm
|
||||
cp ${headplaneSshWasm}/wasm_exec.js app/wasm_exec.js
|
||||
pnpm --offline build
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/{bin,share/headplane}
|
||||
cp -r build $out/share/headplane/
|
||||
cp -r node_modules $out/share/headplane/
|
||||
cp -r drizzle $out/share/headplane/
|
||||
substituteInPlace $out/share/headplane/build/server/index.js \
|
||||
--replace "$PWD" "../.."
|
||||
makeWrapper ${lib.getExe nodejs_22} $out/bin/headplane \
|
||||
--chdir $out/share/headplane \
|
||||
--add-flags $out/share/headplane/build/server/index.js
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Feature-complete Web UI for Headscale";
|
||||
homepage = "https://github.com/tale/headplane";
|
||||
changelog = "https://github.com/tale/headplane/releases/tag/${finalAttrs.version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [
|
||||
igor-ramazanov
|
||||
stealthbadger747
|
||||
];
|
||||
mainProgram = "headplane";
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
})
|
||||
Reference in New Issue
Block a user