diff --git a/pkgs/applications/misc/keepassxc/darwin.patch b/pkgs/by-name/ke/keepassxc/darwin.patch similarity index 100% rename from pkgs/applications/misc/keepassxc/darwin.patch rename to pkgs/by-name/ke/keepassxc/darwin.patch diff --git a/pkgs/applications/misc/keepassxc/firefox-native-messaging-host.json b/pkgs/by-name/ke/keepassxc/firefox-native-messaging-host.json similarity index 100% rename from pkgs/applications/misc/keepassxc/firefox-native-messaging-host.json rename to pkgs/by-name/ke/keepassxc/firefox-native-messaging-host.json diff --git a/pkgs/applications/misc/keepassxc/default.nix b/pkgs/by-name/ke/keepassxc/package.nix similarity index 56% rename from pkgs/applications/misc/keepassxc/default.nix rename to pkgs/by-name/ke/keepassxc/package.nix index 42d69a6f863c..170cc7bfe8e3 100644 --- a/pkgs/applications/misc/keepassxc/default.nix +++ b/pkgs/by-name/ke/keepassxc/package.nix @@ -3,54 +3,46 @@ stdenv, fetchFromGitHub, cmake, - qttools, + libsForQt5, apple-sdk_15, asciidoctor, botan3, curl, darwinMinVersionHook, - kio, libXi, libXtst, libargon2, libusb1, minizip, + nix-update-script, pcsclite, pkg-config, qrencode, - qtbase, - qtmacextras, - qtsvg, - qtx11extras, readline, wrapGAppsHook3, - wrapQtAppsHook, zlib, - LocalAuthentication, - withKeePassBrowser ? true, withKeePassBrowserPasskeys ? true, - withKeePassFDOSecrets ? true, + withKeePassFDOSecrets ? stdenv.hostPlatform.isLinux, withKeePassKeeShare ? true, withKeePassNetworking ? true, withKeePassSSHAgent ? true, - withKeePassTouchID ? true, withKeePassX11 ? true, - withKeePassYubiKey ? true, + withKeePassYubiKey ? stdenv.hostPlatform.isLinux, nixosTests, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "keepassxc"; version = "2.7.10"; src = fetchFromGitHub { owner = "keepassxreboot"; repo = "keepassxc"; - rev = version; + tag = finalAttrs.version; hash = "sha256-FBoqCYNM/leN+w4aV0AJMx/G0bjHbI9KVWrnmq3NfaI="; }; @@ -64,40 +56,58 @@ stdenv.mkDerivation rec { patches = [ ./darwin.patch ]; - cmakeFlags = - [ - "-DKEEPASSXC_BUILD_TYPE=Release" - "-DWITH_GUI_TESTS=ON" - "-DWITH_XC_UPDATECHECK=OFF" - ] - ++ (lib.optional (!withKeePassX11) "-DWITH_XC_X11=OFF") - ++ (lib.optional (withKeePassFDOSecrets && stdenv.hostPlatform.isLinux) "-DWITH_XC_FDOSECRETS=ON") - ++ (lib.optional (withKeePassYubiKey && stdenv.hostPlatform.isLinux) "-DWITH_XC_YUBIKEY=ON") - ++ (lib.optional withKeePassBrowser "-DWITH_XC_BROWSER=ON") - ++ (lib.optional withKeePassBrowserPasskeys "-DWITH_XC_BROWSER_PASSKEYS=ON") - ++ (lib.optional withKeePassKeeShare "-DWITH_XC_KEESHARE=ON") - ++ (lib.optional withKeePassNetworking "-DWITH_XC_NETWORKING=ON") - ++ (lib.optional withKeePassSSHAgent "-DWITH_XC_SSHAGENT=ON"); + cmakeFlags = [ + (lib.cmakeFeature "KEEPASSXC_BUILD_TYPE" "Release") + (lib.cmakeBool "WITH_GUI_TESTS" true) + (lib.cmakeBool "WITH_XC_UPDATECHECK" false) + (lib.cmakeBool "WITH_XC_X11" withKeePassX11) + (lib.cmakeBool "WITH_XC_BROWSER" withKeePassBrowser) + (lib.cmakeBool "WITH_XC_BROWSER_PASSKEYS" withKeePassBrowserPasskeys) + (lib.cmakeBool "WITH_XC_KEESHARE" withKeePassKeeShare) + (lib.cmakeBool "WITH_XC_NETWORKING" withKeePassNetworking) + (lib.cmakeBool "WITH_XC_SSHAGENT" withKeePassSSHAgent) + (lib.cmakeBool "WITH_XC_FDOSECRETS" withKeePassFDOSecrets) + (lib.cmakeBool "WITH_XC_YUBIKEY" withKeePassYubiKey) + ]; doCheck = true; - checkPhase = '' - runHook preCheck + checkPhase = + let + disabledTests = lib.concatStringsSep "|" ( + [ + # flaky + "testcli" + "testgui" + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + # QWidget: Cannot create a QWidget without QApplication + "testautotype" - export LC_ALL="en_US.UTF-8" - export QT_QPA_PLATFORM=offscreen - export QT_PLUGIN_PATH="${qtbase.bin}/${qtbase.qtPluginPrefix}" - # testcli, testgui and testkdbx4 are flaky - skip them all - # testautotype on darwin throws "QWidget: Cannot create a QWidget without QApplication" - make test ARGS+="-E 'testcli|testgui${lib.optionalString stdenv.hostPlatform.isDarwin "|testautotype|testkdbx4"}' --output-on-failure" + # FAIL! : TestDatabase::testExternallyModified() Compared values are not the same + # Actual (((spyFileChanged.count()))): 0 + # Expected (1) : 1 + # Loc: [/tmp/nix-build-keepassxc-2.7.10.drv-2/source/tests/TestDatabase.cpp(288)] + "testdatabase" + ] + ); + in + '' + runHook preCheck - runHook postCheck - ''; + export LC_ALL="en_US.UTF-8" + export QT_QPA_PLATFORM=offscreen + export QT_PLUGIN_PATH="${libsForQt5.qtbase.bin}/${libsForQt5.qtbase.qtPluginPrefix}" + + make test ARGS+="-E '${disabledTests}' --output-on-failure" + + runHook postCheck + ''; nativeBuildInputs = [ asciidoctor cmake - wrapQtAppsHook - qttools + libsForQt5.wrapQtAppsHook + libsForQt5.qttools pkg-config ] ++ lib.optional (!stdenv.hostPlatform.isDarwin) wrapGAppsHook3; @@ -127,35 +137,43 @@ stdenv.mkDerivation rec { buildInputs = [ - curl botan3 - kio + curl libXi libXtst libargon2 + libsForQt5.kio + libsForQt5.qtbase + libsForQt5.qtsvg minizip pcsclite qrencode - qtbase - qtsvg readline zlib ] - ++ lib.optional (stdenv.hostPlatform.isDarwin && withKeePassTouchID) LocalAuthentication ++ lib.optionals stdenv.hostPlatform.isDarwin [ - qtmacextras + libsForQt5.qtmacextras apple-sdk_15 # ScreenCaptureKit, required by livekit, is only available on 12.3 and up: # https://developer.apple.com/documentation/screencapturekit (darwinMinVersionHook "12.3") ] - ++ lib.optional stdenv.hostPlatform.isLinux libusb1 - ++ lib.optional withKeePassX11 qtx11extras; + ++ lib.optionals stdenv.hostPlatform.isLinux [ + libusb1 + ] + ++ lib.optionals withKeePassX11 [ + libsForQt5.qtx11extras + ]; - passthru.tests = nixosTests.keepassxc; + passthru = { + tests = { + inherit (nixosTests) keepassxc; + }; + updateScript = nix-update-script { }; + }; - meta = with lib; { + meta = { description = "Offline password manager with many features"; longDescription = '' A community fork of KeePassX, which is itself a port of KeePass Password Safe. @@ -165,12 +183,13 @@ stdenv.mkDerivation rec { using the KeePassXC Browser Extension (https://github.com/keepassxreboot/keepassxc-browser) ''; homepage = "https://keepassxc.org/"; - license = licenses.gpl2Plus; + changelog = "https://github.com/keepassxreboot/keepassxc/blob/${finalAttrs.version}/CHANGELOG.md"; + license = lib.licenses.gpl2Plus; mainProgram = "keepassxc"; - maintainers = with maintainers; [ + maintainers = with lib.maintainers; [ blankparticle sigmasquadron ]; - platforms = platforms.linux ++ platforms.darwin; + platforms = lib.platforms.linux ++ lib.platforms.darwin; }; -} +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f0e7ebf36b33..90df80b9aa7a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14197,10 +14197,6 @@ with pkgs; avahi = avahi.override { withLibdnssdCompat = true; }; }; - keepassxc = libsForQt5.callPackage ../applications/misc/keepassxc { - inherit (darwin.apple_sdk_11_0.frameworks) LocalAuthentication; - }; - evolution-data-server-gtk4 = evolution-data-server.override { withGtk3 = false; withGtk4 = true;