diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 6eb24c930933..33f56e0d5e27 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -20517,6 +20517,12 @@ github = "srounce"; githubId = 60792; }; + Srylax = { + name = "Srylax"; + email = "srylax+nixpkgs@srylax.dev"; + github = "Srylax"; + githubId = 71783705; + }; sshine = { email = "simon@simonshine.dk"; github = "sshine"; diff --git a/pkgs/by-name/fi/fido2-manage/package.nix b/pkgs/by-name/fi/fido2-manage/package.nix new file mode 100644 index 000000000000..19038a03d353 --- /dev/null +++ b/pkgs/by-name/fi/fido2-manage/package.nix @@ -0,0 +1,144 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchurl, + pkg-config, + cmake, + libcbor, + openssl, + zlib, + gnugrep, + gawk, + # Linux only + pcsclite, + udev, + imagemagick, + # GUI + python3, + xterm, + makeDesktopItem, + copyDesktopItems, + # Darwin only + libuv, + libsolv, + libcouchbase, + darwin, +}: +let + pythonEnv = python3.withPackages (ps: [ ps.tkinter ]); +in +stdenv.mkDerivation rec { + pname = "fido2-manage"; + version = "0-unstable-2024-09-24"; + + src = fetchFromGitHub { + owner = "token2"; + repo = "fido2-manage"; + rev = "6aef9ceccdf7bcc60a9298e51a4db633256925df"; + hash = "sha256-rXTL6wpdvCifakmxH14wBLbhTptNYNFGEPskpUy3IjA="; + }; + + icon = fetchurl { + url = "https://token2.net/img/icon/logo-white.png"; + hash = "sha256-UpxRzn24v1vigMFlofVU+YOzKrkxCu2Pk5iktqFgNO8="; + }; + + nativeBuildInputs = + [ + pkg-config + cmake + ] + ++ lib.optionals stdenv.isLinux [ + copyDesktopItems + imagemagick + ]; + + buildInputs = + [ + libcbor + openssl + zlib + ] + ++ lib.optionals stdenv.isLinux [ + xterm + udev + pcsclite + ] + ++ lib.optionals stdenv.isDarwin [ + libuv + libsolv + libcouchbase + darwin.apple_sdk.frameworks.IOKit + darwin.apple_sdk.frameworks.PCSC + ]; + + cmakeFlags = [ "-USE_PCSC=ON" ]; + + postPatch = + '' + substituteInPlace ./src/libfido2.pc.in \ + --replace-fail "\''${prefix}/@CMAKE_INSTALL_LIBDIR@" "@CMAKE_INSTALL_FULL_LIBDIR@" + '' + + lib.optionalString stdenv.isDarwin '' + substituteInPlace ./CMakeLists.txt \ + --replace-fail "/\''${CMAKE_INSTALL_LIBDIR}" "/lib" + ''; + + postInstall = + lib.optionalString stdenv.isLinux '' + install $src/fido2-manage.sh $out/bin/fido2-manage + magick ${icon} -background none -gravity center -extent 512x512 token2.png + install -Dm444 token2.png $out/share/icons/hicolor/512x512/apps/token2.png + install $src/gui.py $out/bin/fido2-manage-gui + '' + + lib.optionalString stdenv.isDarwin '' + install $src/fido2-manage-mac.sh $out/bin/fido2-manage + ''; + + desktopItems = lib.optionals stdenv.isLinux [ + (makeDesktopItem rec { + desktopName = "Fido2 Manager"; + name = "fido2-manage"; + exec = "fido2-manage-gui"; + icon = "token2"; + comment = meta.description; + categories = [ + "Utility" + ]; + }) + ]; + + postFixup = + '' + substituteInPlace $out/bin/fido2-manage \ + --replace-fail "/usr/local/bin/" "$out/bin/" \ + --replace-fail "./fido2-manage.sh" "fido2-manage" \ + --replace-fail "awk" "${gawk}/bin/awk" + '' + + lib.optionalString stdenv.isLinux '' + substituteInPlace $out/bin/fido2-manage-gui \ + --replace-fail "./fido2-manage.sh" "$out/bin/fido2-manage" \ + --replace-fail "x-terminal-emulator" "${xterm}/bin/xterm" \ + --replace-fail "tk.Tk()" "tk.Tk(className='fido2-manage')" \ + --replace-fail 'root.title("FIDO2.1 Manager - Python version 0.1 - (c) Token2")' "root.title('Fido2 Manager')" + + substituteInPlace $out/bin/fido2-manage \ + --replace-fail "grep" "${gnugrep}/bin/grep" + + sed -i '1i #!${pythonEnv.interpreter}' $out/bin/fido2-manage-gui + '' + + lib.optionalString stdenv.isDarwin '' + substituteInPlace $out/bin/fido2-manage \ + --replace-fail "ggrep" "${gnugrep}/bin/grep" + ''; + + meta = { + description = "Manage FIDO2.1 devices over USB or NFC, including Passkeys"; + homepage = "https://github.com/token2/fido2-manage"; + platforms = lib.platforms.all; + license = lib.licenses.bsd2; + mainProgram = "fido2-manage"; + maintainers = with lib.maintainers; [ Srylax ]; + }; +}