57 lines
1.3 KiB
Nix
57 lines
1.3 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 ];
|
||
|
};
|
||
|
}
|
||
|
|