forked from mirrors/nixpkgs
1daf0125af
Using Qt *and* GTK means both wrapper hooks kick in, so avoid automatic GTK wrapping and merge arguments into Qt ones as usual. Duplicate wrapping must be avoided as it breaks the program's basename, e.g. `argv[0]` ends up with ".keepassxc-wrapped" rather than "keepassxc" as basename. This fixes all three ELF executables (there is `-cli` and `-proxy`).
132 lines
3.2 KiB
Nix
132 lines
3.2 KiB
Nix
{ lib, stdenv
|
|
, fetchFromGitHub
|
|
, cmake
|
|
, qttools
|
|
, darwin
|
|
|
|
, asciidoctor
|
|
, botan2
|
|
, curl
|
|
, libXi
|
|
, libXtst
|
|
, libargon2
|
|
, libusb1
|
|
, minizip
|
|
, pcsclite
|
|
, pkg-config
|
|
, qrencode
|
|
, qtbase
|
|
, qtmacextras
|
|
, qtsvg
|
|
, qtx11extras
|
|
, readline
|
|
, wrapGAppsHook
|
|
, wrapQtAppsHook
|
|
, zlib
|
|
|
|
, withKeePassBrowser ? true
|
|
, withKeePassKeeShare ? true
|
|
, withKeePassSSHAgent ? true
|
|
, withKeePassNetworking ? true
|
|
, withKeePassTouchID ? true
|
|
, withKeePassYubiKey ? true
|
|
, withKeePassFDOSecrets ? true
|
|
|
|
, nixosTests
|
|
}:
|
|
|
|
with lib;
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "keepassxc";
|
|
version = "2.7.1";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "keepassxreboot";
|
|
repo = "keepassxc";
|
|
rev = version;
|
|
sha256 = "sha256-BOtehDzlWhhfXj8TOFvFN4f86Hl2EC3rO4qUIl9fqq4=";
|
|
};
|
|
|
|
NIX_CFLAGS_COMPILE = optionalString stdenv.cc.isClang [
|
|
"-Wno-old-style-cast"
|
|
"-Wno-error"
|
|
"-D__BIG_ENDIAN__=${if stdenv.isBigEndian then "1" else "0"}"
|
|
];
|
|
|
|
NIX_LDFLAGS = optionalString stdenv.isDarwin "-rpath ${libargon2}/lib";
|
|
|
|
patches = [
|
|
./darwin.patch
|
|
];
|
|
|
|
cmakeFlags = [
|
|
"-DKEEPASSXC_BUILD_TYPE=Release"
|
|
"-DWITH_GUI_TESTS=ON"
|
|
"-DWITH_XC_UPDATECHECK=OFF"
|
|
]
|
|
++ (optional withKeePassBrowser "-DWITH_XC_BROWSER=ON")
|
|
++ (optional withKeePassKeeShare "-DWITH_XC_KEESHARE=ON")
|
|
++ (optional withKeePassNetworking "-DWITH_XC_NETWORKING=ON")
|
|
++ (optional (withKeePassYubiKey && stdenv.isLinux) "-DWITH_XC_YUBIKEY=ON")
|
|
++ (optional (withKeePassFDOSecrets && stdenv.isLinux) "-DWITH_XC_FDOSECRETS=ON")
|
|
++ (optional withKeePassSSHAgent "-DWITH_XC_SSHAGENT=ON");
|
|
|
|
doCheck = true;
|
|
checkPhase = ''
|
|
runHook preCheck
|
|
|
|
export LC_ALL="en_US.UTF-8"
|
|
export QT_QPA_PLATFORM=offscreen
|
|
export QT_PLUGIN_PATH="${qtbase.bin}/${qtbase.qtPluginPrefix}"
|
|
# testcli and testgui are flaky - skip them both
|
|
make test ARGS+="-E 'testcli|testgui' --output-on-failure"
|
|
|
|
runHook postCheck
|
|
'';
|
|
|
|
nativeBuildInputs = [ asciidoctor cmake wrapGAppsHook wrapQtAppsHook qttools pkg-config ];
|
|
|
|
dontWrapGApps = true;
|
|
postFixup = ''
|
|
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
|
'';
|
|
|
|
buildInputs = [
|
|
curl
|
|
botan2
|
|
libXi
|
|
libXtst
|
|
libargon2
|
|
minizip
|
|
pcsclite
|
|
qrencode
|
|
qtbase
|
|
qtsvg
|
|
qtx11extras
|
|
readline
|
|
zlib
|
|
]
|
|
++ optional stdenv.isLinux libusb1
|
|
++ optional stdenv.isDarwin qtmacextras
|
|
++ optional (stdenv.isDarwin && withKeePassTouchID) darwin.apple_sdk.frameworks.LocalAuthentication;
|
|
|
|
passthru.tests = nixosTests.keepassxc;
|
|
|
|
meta = {
|
|
description = "Offline password manager with many features.";
|
|
longDescription = ''
|
|
A community fork of KeePassX, which is itself a port of KeePass Password Safe.
|
|
The goal is to extend and improve KeePassX with new features and bugfixes,
|
|
to provide a feature-rich, fully cross-platform and modern open-source password manager.
|
|
Accessible via native cross-platform GUI, CLI, has browser integration
|
|
using the KeePassXC Browser Extension (https://github.com/keepassxreboot/keepassxc-browser)
|
|
'';
|
|
homepage = "https://keepassxc.org/";
|
|
license = licenses.gpl2Plus;
|
|
maintainers = with maintainers; [ jonafato turion ];
|
|
platforms = platforms.linux ++ platforms.darwin;
|
|
broken = stdenv.isDarwin; # see to https://github.com/NixOS/nixpkgs/issues/172165
|
|
};
|
|
}
|