Files
dotfiles/nixos/packages/playwright-cli/default.nix

53 lines
1.5 KiB
Nix

{
lib,
buildNpmPackage,
fetchFromGitHub,
makeBinaryWrapper,
playwright-driver,
versionCheckHook,
writeShellScript,
}:
buildNpmPackage (finalAttrs: {
pname = "playwright-cli";
version = "0.1.1";
src = fetchFromGitHub {
owner = "microsoft";
repo = "playwright-cli";
tag = "v${finalAttrs.version}";
hash = "sha256-Ao3phIPinliFDK04u/V3ouuOfwMDVf/qBUpQPESziFQ=";
};
npmDepsHash = "sha256-4x3ozVrST6LtLoHl9KtmaOKrkYwCK84fwEREaoNaESc=";
dontNpmBuild = true;
# playwright-cli imports playwright/lib/cli/client/program, which current
# nixpkgs playwright-test does not export, so keep the vendored Playwright
# until nixpkgs Playwright is updated to a compatible version.
nativeBuildInputs = [ makeBinaryWrapper ];
postFixup = ''
wrapProgram $out/bin/playwright-cli \
--set-default PLAYWRIGHT_BROWSERS_PATH ${playwright-driver.browsers}
'';
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgram = writeShellScript "version-check" ''
"$1" --version >/dev/null
echo "${finalAttrs.version}"
'';
versionCheckProgramArg = "${placeholder "out"}/bin/playwright-cli";
meta = {
description = "Playwright CLI for browser automation";
homepage = "https://github.com/microsoft/playwright-cli";
changelog = "https://github.com/microsoft/playwright-cli/releases/tag/v${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ imalison ];
mainProgram = "playwright-cli";
};
})