diff options
Diffstat (limited to 'pkgs/applications/misc/passky-desktop')
-rw-r--r-- | pkgs/applications/misc/passky-desktop/default.nix | 103 |
1 files changed, 57 insertions, 46 deletions
diff --git a/pkgs/applications/misc/passky-desktop/default.nix b/pkgs/applications/misc/passky-desktop/default.nix index 97df6ba94da..927035ed816 100644 --- a/pkgs/applications/misc/passky-desktop/default.nix +++ b/pkgs/applications/misc/passky-desktop/default.nix @@ -1,59 +1,70 @@ -{ lib, stdenv, fetchurl, appimageTools, undmg }: +{ lib +, stdenv +, fetchFromGitHub +, electron_22 +, makeWrapper +, makeDesktopItem +, copyDesktopItems +}: -let +stdenv.mkDerivation rec { pname = "passky-desktop"; - version = "7.1.0"; - - srcs = { - x86_64-linux = fetchurl { - url = "https://github.com/Rabbit-Company/Passky-Desktop/releases/download/v${version}/Passky-${version}.AppImage"; - sha256 = "1xnhrmmm018mmyzjq05mhbf673f0n81fh1k3kbfarbgk2kbwpq6y"; - }; - x86_64-darwin = fetchurl { - url = "https://github.com/Rabbit-Company/Passky-Desktop/releases/download/v${version}/Passky-${version}.dmg"; - sha256 = "0mm7hk4v7zvpjdqyw3nhk33x72j0gh3f59bx3q18azlm4dr61r2d"; - }; - }; - src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + version = "8.1.1"; - appimageContents = appimageTools.extract { inherit pname version src; }; - meta = with lib; { - homepage = "https://passky.org"; - downloadPage = "https://github.com/Rabbit-Company/Passky-Desktop/releases"; - license = licenses.gpl3Only; - maintainers = with maintainers; [ akkesm ]; - platforms = builtins.attrNames srcs; + src = fetchFromGitHub { + owner = "Rabbit-Company"; + repo = "Passky-Desktop"; + rev = "refs/tags/v${version}"; + sha256 = "1ma8s1bngjdzclcc4m5pcmavk38sidaskmz7dgfnv84y35si18dr"; }; - linux = appimageTools.wrapType2 { - inherit pname version src meta; + nativeBuildInputs = [ makeWrapper copyDesktopItems ]; - extraInstallCommands = '' - mv $out/bin/${pname}-${version} $out/bin/${pname} + installPhase = '' + runHook preInstall - install -D ${appimageContents}/passky.desktop \ - $out/share/applications/${pname}.desktop + mkdir -p $out/share/passky + cp -r "." "$out/share/passky/electron" - substituteInPlace $out/share/applications/${pname}.desktop \ - --replace 'Exec=AppRun' 'Exec=${pname}' + local resolution + for icon in $out/share/passky/electron/images/icons/icon*.png; do + resolution=''${icon%".png"} + resolution=''${resolution##*/icon-} + mkdir -p "$out/share/icons/hicolor/''${resolution}/apps" + ln -s "$icon" "$out/share/icons/hicolor/''${resolution}/apps/passky.png" + done - cp -r ${appimageContents}/usr/share/icons $out/share - ''; - }; + mkdir "$out/share/applications" + makeWrapper ${electron_22}/bin/electron "$out/bin/passky" \ + --add-flags "$out/share/passky/electron/" \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" - darwin = stdenv.mkDerivation { - inherit pname version src meta; + runHook postInstall + ''; - nativeBuildInputs = [ undmg ]; + desktopItems = [ + ( + makeDesktopItem { + name = "Passky"; + type = "Application"; + desktopName = "passky"; + comment = "Simple, modern, open source and secure password manager."; + icon = "passky"; + exec = "passky %U"; + categories = [ "Utility" ]; + startupWMClass = "Passky"; + } + ) + ]; - sourceRoot = "."; - - installPhase = '' - mkdir -p $out/Applications - cp -r *.app $out/Applications - ''; + meta = with lib; { + description = "A simple, modern, lightweight, open source and secure password manager"; + homepage = "https://passky.org"; + downloadPage = "https://github.com/Rabbit-Company/Passky-Desktop/releases"; + changelog = "https://github.com/Rabbit-Company/Passky-Desktop/releases/tag/v${version}"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ akkesm ]; + mainProgram = "passky"; + platforms = platforms.unix; }; -in -if stdenv.isDarwin - then darwin - else linux +} |