51 lines
1.2 KiB
Nix
51 lines
1.2 KiB
Nix
{ stdenv, symlinkJoin, rofi, gnused, pass-otp, writeTextFile
|
|
, writeShellScriptBin, xdotool }:
|
|
|
|
let
|
|
|
|
name = "otpmenu";
|
|
|
|
desktopFile = writeTextFile {
|
|
name = "${name}.desktop";
|
|
destination = "/share/applications/${name}.desktop";
|
|
text = ''
|
|
[Desktop Entry]
|
|
Categories=Application;Utility;
|
|
Comment=Enter MFA number with password otp plugins otp
|
|
Encoding=UTF-8
|
|
Exec=${bin}/bin/${name}
|
|
Icon=gnome-lockscreen
|
|
Name=${name}
|
|
Terminal=false
|
|
Type=Application
|
|
'';
|
|
};
|
|
|
|
bin = writeShellScriptBin name # sh
|
|
''
|
|
set -efu
|
|
|
|
x=$(
|
|
${pass-otp}/bin/pass git ls-files '*/otp.gpg' \
|
|
| ${gnused}/bin/sed 's:/otp\.gpg$::' \
|
|
| ${rofi}/bin/rofi -dmenu -f -p OTP
|
|
)
|
|
|
|
otp=$(${pass-otp}/bin/pass otp code "$x/otp")
|
|
|
|
printf %s "$otp" | ${xdotool}/bin/xdotool type -f -
|
|
'';
|
|
|
|
in symlinkJoin rec {
|
|
version = "1.0.0";
|
|
name = "otpMenu-${version}";
|
|
paths = [ bin desktopFile ];
|
|
meta = with stdenv.lib; {
|
|
description = "similar to passmenu shows and prints otp";
|
|
homepage = "https://your.mama";
|
|
license = licenses.gpl3;
|
|
platforms = platforms.linux;
|
|
maintainers = with maintainers; [ mrVanDalo ];
|
|
};
|
|
}
|
|
|