diff options
Diffstat (limited to 'pkgs/applications/networking/instant-messengers/element/element-desktop.nix')
-rw-r--r-- | pkgs/applications/networking/instant-messengers/element/element-desktop.nix | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/pkgs/applications/networking/instant-messengers/element/element-desktop.nix b/pkgs/applications/networking/instant-messengers/element/element-desktop.nix index d9683740667..2ad5d8c4654 100644 --- a/pkgs/applications/networking/instant-messengers/element/element-desktop.nix +++ b/pkgs/applications/networking/instant-messengers/element/element-desktop.nix @@ -13,12 +13,15 @@ , AppKit , CoreServices , desktopToDarwinBundle +, useKeytar ? true }: let pinData = lib.importJSON ./pin.json; executableName = "element-desktop"; electron_exec = if stdenv.isDarwin then "${electron}/Applications/Electron.app/Contents/MacOS/Electron" else "${electron}/bin/electron"; + keytar = callPackage ./keytar { inherit Security AppKit; }; + seshat = callPackage ./seshat { inherit CoreServices; }; in mkYarnPackage rec { pname = "element-desktop"; @@ -39,8 +42,7 @@ mkYarnPackage rec { nativeBuildInputs = [ makeWrapper ] ++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ]; - seshat = callPackage ./seshat { inherit CoreServices; }; - keytar = callPackage ./keytar { inherit Security AppKit; }; + inherit seshat; buildPhase = '' runHook preBuild @@ -51,12 +53,14 @@ mkYarnPackage rec { node ./scripts/copy-res.js popd rm -rf node_modules/matrix-seshat node_modules/keytar - ln -s $keytar node_modules/keytar + ${lib.optionalString useKeytar "ln -s ${keytar} node_modules/keytar"} ln -s $seshat node_modules/matrix-seshat runHook postBuild ''; installPhase = '' + runHook preInstall + # resources mkdir -p "$out/share/element" ln -s '${element-web}' "$out/share/element/webapp" @@ -83,6 +87,8 @@ mkYarnPackage rec { --set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher.so \ --add-flags "$out/share/element/electron" \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}" + + runHook postInstall ''; # Do not attempt generating a tarball for element-web again. @@ -100,14 +106,25 @@ mkYarnPackage rec { desktopName = "Element"; genericName = "Matrix Client"; comment = meta.description; - categories = "Network;InstantMessaging;Chat;"; - extraEntries = '' - StartupWMClass=element - MimeType=x-scheme-handler/element; - ''; + categories = [ "Network" "InstantMessaging" "Chat" ]; + startupWMClass = "element"; + mimeTypes = [ "x-scheme-handler/element" ]; }; - passthru.updateScript = ./update.sh; + passthru = { + updateScript = ./update.sh; + + # TL;DR: keytar is optional while seshat isn't. + # + # This prevents building keytar when `useKeytar` is set to `false`, because + # if libsecret is unavailable (e.g. set to `null` or fails to build), then + # this package wouldn't even considered for building because + # "one of the dependencies failed to build", + # although the dependency wouldn't even be used. + # + # It needs to be `passthru` anyways because other packages do depend on it. + inherit keytar; + }; meta = with lib; { description = "A feature-rich client for Matrix.org"; |