{ lib, stdenv , meson , ninja , pkg-config , gettext , fetchFromGitLab , python3Packages , libpwquality , wrapGAppsHook4 , gtk4 , glib , gdk-pixbuf , gobject-introspection , desktop-file-utils , appstream-glib , libadwaita }: python3Packages.buildPythonApplication rec { pname = "gnome-secrets"; version = "6.1"; format = "other"; strictDeps = false; # https://github.com/NixOS/nixpkgs/issues/56943 src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "World"; repo = "secrets"; rev = version; sha256 = "sha256-TBGNiiR0GW8s/Efi4/Qqvwd87Ir0gCLGPfBmmqqSwQ8="; }; nativeBuildInputs = [ meson ninja gettext pkg-config wrapGAppsHook4 desktop-file-utils appstream-glib gobject-introspection ]; buildInputs = [ gtk4 glib gdk-pixbuf libadwaita ]; propagatedBuildInputs = with python3Packages; [ pygobject3 construct pykeepass pyotp ] ++ [ libpwquality # using the python bindings ]; postPatch = '' substituteInPlace meson_post_install.py --replace "gtk-update-icon-cache" "gtk4-update-icon-cache"; ''; # Prevent double wrapping, let the Python wrapper use the args in preFixup. dontWrapGApps = true; preFixup = '' makeWrapperArgs+=("''${gappsWrapperArgs[@]}") ''; meta = with lib; { broken = stdenv.hostPlatform.isStatic; # libpwquality doesn't provide bindings when static description = "Password manager for GNOME which makes use of the KeePass v.4 format"; homepage = "https://gitlab.gnome.org/World/secrets"; license = licenses.gpl3Only; platforms = platforms.linux; maintainers = with maintainers; [ mvnetbiz ]; }; }