68 lines
1.5 KiB
Nix

{
lib,
buildNpmPackage,
fetchFromGitHub,
nixosTests,
python3,
vaultwarden,
}:
buildNpmPackage rec {
pname = "vaultwarden-webvault";
version = "2025.7.0.0";
src = fetchFromGitHub {
owner = "vaultwarden";
repo = "vw_web_builds";
tag = "v${version}";
hash = "sha256-CnVOi4xE0+VFTm0yI4++MBv8w0vgtsRE5E2RwsLojMI=";
};
npmDepsHash = "sha256-QoZtiZpS8jVIaGKHcfKbtBrrn+RcMRvm1/oF23nPPQw=";
nativeBuildInputs = [
python3
];
makeCacheWritable = true;
env = {
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
npm_config_build_from_source = "true";
};
npmRebuildFlags = [
# FIXME one of the esbuild versions fails to download @esbuild/linux-x64
"--ignore-scripts"
];
npmBuildScript = "dist:oss:selfhost";
npmBuildFlags = [
"--workspace"
"apps/web"
];
npmFlags = [ "--legacy-peer-deps" ];
installPhase = ''
runHook preInstall
mkdir -p $out/share/vaultwarden
mv apps/web/build $out/share/vaultwarden/vault
runHook postInstall
'';
passthru = {
tests = nixosTests.vaultwarden;
};
meta = {
description = "Integrates the web vault into vaultwarden";
homepage = "https://github.com/dani-garcia/bw_web_builds";
changelog = "https://github.com/dani-garcia/bw_web_builds/releases/tag/v${lib.concatStringsSep "." (lib.take 3 (lib.versions.splitVersion version))}";
platforms = lib.platforms.all;
license = lib.licenses.gpl3Plus;
inherit (vaultwarden.meta) maintainers;
};
}