diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 864b3701f26a..473ab8675052 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -793,6 +793,11 @@ github = "caugner"; name = "Claas Augner"; }; + cbley = { + email = "claudio.bley@gmail.com"; + github = "avdv"; + name = "Claudio Bley"; + }; cdepillabout = { email = "cdep.illabout@gmail.com"; github = "cdepillabout"; diff --git a/pkgs/tools/misc/yubikey-manager-qt/default.nix b/pkgs/tools/misc/yubikey-manager-qt/default.nix new file mode 100644 index 000000000000..c8521efb28d6 --- /dev/null +++ b/pkgs/tools/misc/yubikey-manager-qt/default.nix @@ -0,0 +1,78 @@ +{ stdenv +, fetchurl +, makeWrapper +, pcsclite +, pyotherside +, pythonPackages +, python3 +, qmake +, qtbase +, qtgraphicaleffects +, qtquickcontrols +, qtquickcontrols2 +, qtdeclarative +, qtsvg +, yubikey-manager +, yubikey-personalization +}: + +let + qmlPath = qmlLib: "${qmlLib}/${qtbase.qtQmlPrefix}"; + + inherit (stdenv) lib; + + qml2ImportPath = lib.concatMapStringsSep ":" qmlPath [ + qtbase.bin qtdeclarative.bin pyotherside qtquickcontrols qtquickcontrols2.bin qtgraphicaleffects + ]; + +in stdenv.mkDerivation rec { + pname = "yubikey-manager-qt"; + version = "1.1.0"; + + src = fetchurl { + url = "https://developers.yubico.com/yubikey-manager-qt/Releases/${pname}-${version}.tar.gz"; + sha256 = "8049a233a8cca07543d745a9f619c0fc3afb324f5d0030b93f037b34ac1c5e66"; + }; + + nativeBuildInputs = [ makeWrapper python3.pkgs.wrapPython qmake ]; + + sourceRoot = "."; + + postPatch = '' + substituteInPlace ykman-gui/deployment.pri --replace '/usr/bin' "$out/bin" + ''; + + buildInputs = [ pythonPackages.python qtbase qtgraphicaleffects qtquickcontrols qtquickcontrols2 pyotherside ]; + + enableParallelBuilding = true; + + pythonPath = [ yubikey-manager ]; + + # Need LD_PRELOAD for libykpers as the Nix cpython disables ctypes.cdll.LoadLibrary + # support that the yubicommon library uses to load libykpers + postInstall = '' + buildPythonPath "$pythonPath" + + wrapProgram $out/bin/ykman-gui \ + --prefix PYTHONPATH : "$program_PYTHONPATH" \ + --set QML2_IMPORT_PATH "${qml2ImportPath}" \ + --set QT_QPA_PLATFORM_PLUGIN_PATH ${qtbase.bin}/lib/qt-*/plugins/platforms \ + --prefix QT_PLUGIN_PATH : "${qtsvg.bin}/${qtbase.qtPluginPrefix}" + + mkdir -p $out/share/applications + cp resources/ykman-gui.desktop $out/share/applications/ykman-gui.desktop + mkdir -p $out/share/ykman-gui/icons + cp resources/icons/*.{icns,ico,png,xpm} $out/share/ykman-gui/icons + substituteInPlace $out/share/applications/ykman-gui.desktop \ + --replace 'Exec=ykman-gui' "Exec=$out/bin/ykman-gui" \ + ''; + + meta = with lib; { + inherit version; + description = "Cross-platform application for configuring any YubiKey over all USB interfaces."; + homepage = https://developers.yubico.com/yubikey-manager-qt/; + license = licenses.bsd2; + maintainers = [ maintainers.cbley ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index acd37a098110..212cd3eb563e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13105,6 +13105,10 @@ in yubikey-manager = callPackage ../tools/misc/yubikey-manager { }; + yubikey-manager-qt = libsForQt5.callPackage ../tools/misc/yubikey-manager-qt { + pythonPackages = python3Packages; + }; + yubikey-neo-manager = callPackage ../tools/misc/yubikey-neo-manager { }; yubikey-personalization = callPackage ../tools/misc/yubikey-personalization {