Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

protonmail-bridge-gui: init at 3.9.1 #295600

Merged
merged 3 commits into from
Mar 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions pkgs/applications/networking/protonmail-bridge/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -37,23 +37,21 @@ buildGoModule rec {

postInstall = ''
mv $out/bin/Desktop-Bridge $out/bin/protonmail-bridge # The cli is named like that in other distro packages
install -Dm444 dist/proton-bridge.desktop -t $out/share/applications
install -Dm444 dist/bridge.svg $out/share/icons/hicolor/scalable/apps/protonmail-bridge.svg
'';

meta = with lib; {
homepage = "https://github.com/ProtonMail/proton-bridge";
meta = {
changelog = "https://github.com/ProtonMail/proton-bridge/blob/${src.rev}/Changelog.md";
downloadPage = "https://github.com/ProtonMail/proton-bridge/releases";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ mrfreezeex ];
description = "Use your ProtonMail account with your local e-mail client";
downloadPage = "https://github.com/ProtonMail/proton-bridge/releases";
homepage = "https://github.com/ProtonMail/proton-bridge";
license = lib.licenses.gpl3Plus;
longDescription = ''
An application that runs on your computer in the background and seamlessly encrypts
and decrypts your mail as it enters and leaves your computer.
To work, use secret-service freedesktop.org API (e.g. Gnome keyring) or pass.
'';
mainProgram = "protonmail-bridge";
maintainers = with lib.maintainers; [ mrfreezeex daniel-fahey ];
};
}
113 changes: 113 additions & 0 deletions pkgs/by-name/pr/protonmail-bridge-gui/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
{ lib
, stdenv
, pkg-config
, libsecret
, cmake
, ninja
, qt6
, grpc
, protobuf
, zlib
, gtest
, sentry-native
, protonmail-bridge
}:

stdenv.mkDerivation (finalAttrs: {
pname = "protonmail-bridge-gui";

inherit (protonmail-bridge) version src;

patches = [
# Use `gtest` from Nixpkgs to allow an offline build
./use-nix-googletest.patch
];

nativeBuildInputs = [
pkg-config
cmake
ninja
qt6.qtbase
qt6.qtdeclarative
qt6.qtwayland
qt6.qtsvg
qt6.wrapQtAppsHook
];

buildInputs = [
libsecret
grpc
protobuf
zlib
gtest
sentry-native
];

sourceRoot = "${finalAttrs.src.name}/internal/frontend/bridge-gui";

postPatch = ''
# Bypass `vcpkg` by deleting lines that `include` BridgeSetup.cmake
find . -type f -name "CMakeLists.txt" -exec sed -i "/BridgeSetup\\.cmake/d" {} \;
# Use the available ICU version
sed -i "s/libicu\(i18n\|uc\|data\)\.so\.56/libicu\1.so/g" bridge-gui/DeployLinux.cmake
# Create a Desktop Entry that uses a `protonmail-bridge-gui` binary without upstream's launcher
sed "s/^\(Icon\|Exec\)=.*$/\1=protonmail-bridge-gui/" ../../../dist/proton-bridge.desktop > proton-bridge-gui.desktop
# Also update `StartupWMClass` to match the GUI binary's `wmclass` (Wayland app id)
sed -i "s/^\(StartupWMClass=\)Proton Mail Bridge$/\1ch.proton.bridge-gui/" proton-bridge-gui.desktop
# Don't build `bridge-gui-tester`
sed -i "/add_subdirectory(bridge-gui-tester)/d" CMakeLists.txt
'';

preConfigure = ''
cmakeFlagsArray+=(
"-DCMAKE_BUILD_TYPE=Release"
"-DBRIDGE_APP_FULL_NAME=Proton Mail Bridge"
"-DBRIDGE_VENDOR=Proton AG"
"-DBRIDGE_REVISION=${finalAttrs.src.rev}"
"-DBRIDGE_TAG=${finalAttrs.version}"
"-DBRIDGE_BUILD_ENV=Nix"
"-DBRIDGE_APP_VERSION=${finalAttrs.version}"
)
'';

installPhase = ''
runHook preInstall
# Install the GUI binary
install -Dm755 bridge-gui/bridge-gui $out/lib/bridge-gui
# Symlink the backend binary from the protonmail-bridge (CLI) package
ln -s ${protonmail-bridge}/bin/protonmail-bridge $out/lib/bridge
# Symlink the GUI binary
mkdir -p $out/bin
ln -s $out/lib/bridge-gui $out/bin/protonmail-bridge-gui
# Install desktop assets
install -Dm644 ../proton-bridge-gui.desktop -t $out/share/applications
install -Dm644 ../../../../dist/bridge.svg $out/share/icons/hicolor/scalable/apps/protonmail-bridge-gui.svg
runHook postInstall
'';

meta = {
changelog = "https://github.com/ProtonMail/proton-bridge/blob/${finalAttrs.src.rev}/Changelog.md";
description = "Qt-based GUI to use your ProtonMail account with your local e-mail client";
downloadPage = "https://github.com/ProtonMail/proton-bridge/releases";
homepage = "https://github.com/ProtonMail/proton-bridge";
license = lib.licenses.gpl3Plus;
longDescription = ''
Provides a GUI application that runs in the background and seamlessly encrypts
and decrypts your mail as it enters and leaves your computer.
To work, use secret-service freedesktop.org API (e.g. Gnome keyring) or pass.
'';
mainProgram = "protonmail-bridge-gui";
maintainers = with lib.maintainers; [ daniel-fahey ];
platforms = lib.platforms.linux;
};
})
23 changes: 23 additions & 0 deletions pkgs/by-name/pr/protonmail-bridge-gui/use-nix-googletest.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
diff --git a/bridgepp/CMakeLists.txt b/bridgepp/CMakeLists.txt
index f4a0a553..02d631dc 100644
--- a/bridgepp/CMakeLists.txt
+++ b/bridgepp/CMakeLists.txt
@@ -172,16 +172,8 @@ if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW) # avoid warning DOWNLOAD_EXTRACT_TIMESTAMP
endif ()

-include(FetchContent)
-FetchContent_Declare(
- googletest
- URL https://github.com/google/googletest/archive/b796f7d44681514f58a683a3a71ff17c94edb0c1.zip
-)
-
-# For Windows: Prevent overriding the parent project's compiler/linker settings
-set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
-
-FetchContent_MakeAvailable(googletest)
+# Use find_package to use the gtest package provided by Nix
+find_package(GTest REQUIRED)

enable_testing()