Skip to content

Commit

Permalink
[Backport release-24.05] bitwarden-desktop: 2024.6.4 -> 2024.8.0 (#33…
Browse files Browse the repository at this point in the history
  • Loading branch information
emilazy committed Aug 26, 2024
2 parents f90b642 + bf04bfe commit 787c876
Showing 1 changed file with 26 additions and 23 deletions.
49 changes: 26 additions & 23 deletions pkgs/by-name/bi/bitwarden-desktop/package.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
, cargo
, copyDesktopItems
, dbus
, electron_29
, electron_31
, fetchFromGitHub
, glib
, gnome
Expand All @@ -12,7 +12,6 @@
, libsecret
, makeDesktopItem
, makeWrapper
, moreutils
, napi-rs-cli
, nodejs_20
, patchutils_0_4_2
Expand All @@ -26,41 +25,28 @@
let
description = "Secure and free password manager for all of your devices";
icon = "bitwarden";
electron = electron_29;
electron = electron_31;
in buildNpmPackage rec {
pname = "bitwarden-desktop";
version = "2024.6.4";
version = "2024.8.0";

src = fetchFromGitHub {
owner = "bitwarden";
repo = "clients";
rev = "desktop-v${version}";
hash = "sha256-oQ2VZoxePdYUC+xMKlRMpvPubSPULvt31XSh/OBw3Ec=";
hash = "sha256-szIa7fASDmeWKZPc6HtHKeXKerCAXrYZQWTVFMugAxk=";
};

patches = [
./electron-builder-package-lock.patch
];

# The nested package-lock.json from upstream is out-of-date, so copy the
# lock metadata from the root package-lock.json.
postPatch = ''
cat {,apps/desktop/src/}package-lock.json \
| ${lib.getExe jq} -s '
.[1].packages."".dependencies.argon2 = .[0].packages."".dependencies.argon2
| .[0].packages."" = .[1].packages.""
| .[1].packages = .[0].packages
| .[1]
' \
| ${moreutils}/bin/sponge apps/desktop/src/package-lock.json
'';

nodejs = nodejs_20;

makeCacheWritable = true;
npmFlags = [ "--engine-strict" "--legacy-peer-deps" ];
npmWorkspace = "apps/desktop";
npmDepsHash = "sha256-9d9pWrFYelAx/PPDHY3m92Frp8RSQuBqpiOjmWtm/1g=";
npmDepsHash = "sha256-5neEpU7ZhVO5OR181owsvAnFfl7lr0MymvqbRFCPs3M=";

cargoDeps = rustPlatform.fetchCargoTarball {
name = "${pname}-${version}";
Expand All @@ -76,7 +62,7 @@ in buildNpmPackage rec {
patches;
patchFlags = [ "-p4" ];
sourceRoot = "${src.name}/${cargoRoot}";
hash = "sha256-ZmblY1APVa8moAR1waVBZPhrf5Wt1Gi6dvAxkhizckQ=";
hash = "sha256-ya/5z5XpsyuWayziLxuETu/dY8LzZspaAMqL2p8jYN8=";
};
cargoRoot = "apps/desktop/desktop_native";

Expand All @@ -87,10 +73,9 @@ in buildNpmPackage rec {
copyDesktopItems
jq
makeWrapper
moreutils
napi-rs-cli
pkg-config
python3
(python3.withPackages (ps: with ps; [ setuptools ]))
rustc
rustPlatform.cargoCheckHook
rustPlatform.cargoSetupHook
Expand All @@ -102,18 +87,36 @@ in buildNpmPackage rec {
libsecret
];

# node-argon2 builds with LTO, but that causes missing symbols. So disable it
# and rebuild. Then we need to copy it into the build output for
# electron-builder, as `apps/desktop/src/package.json` specifies `argon2` as
# a dependency and electron-builder will otherwise install a fresh (and
# broken) argon2. See https://github.com/ranisalt/node-argon2/pull/415
preConfigure = ''
pushd node_modules/argon2
substituteInPlace binding.gyp --replace-fail '"-flto", ' ""
"$npm_config_node_gyp" rebuild
popd
mkdir -p apps/desktop/build/node_modules
cp -r ./{,apps/desktop/build/}node_modules/argon2
'';

preBuild = ''
if [[ $(jq --raw-output '.devDependencies.electron' < package.json | grep -E --only-matching '^[0-9]+') != ${lib.escapeShellArg (lib.versions.major electron.version)} ]]; then
echo 'ERROR: electron version mismatch'
exit 1
fi
pushd apps/desktop/desktop_native/napi
npm run build
popd
'';

postBuild = ''
pushd apps/desktop
# desktop_native/index.js loads a file of that name regarldess of the libc being used
mv desktop_native/desktop_native.* desktop_native/desktop_native.linux-x64-musl.node
mv desktop_native/napi/desktop_napi.* desktop_native/napi/desktop_napi.linux-x64-musl.node
npm exec electron-builder -- \
--dir \
Expand Down

0 comments on commit 787c876

Please sign in to comment.