nixos-config/pkgs/otpmenu/default.nix

64 lines
1.3 KiB
Nix
Raw Normal View History

2024-08-29 03:26:04 +02:00
{
lib,
symlinkJoin,
rofi,
gnused,
pass,
writeTextFile,
writeShellScriptBin,
xdotool,
2021-11-01 09:20:42 +01:00
}:
2019-10-24 02:20:38 +02:00
let
name = "otpmenu";
2019-12-20 05:54:26 +01:00
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
2019-10-24 02:20:38 +02:00
'';
2019-12-20 05:54:26 +01:00
};
2019-10-24 02:20:38 +02:00
2024-08-29 03:26:04 +02:00
bin =
writeShellScriptBin name # sh
''
set -efu
2019-12-20 05:54:26 +01:00
2024-08-29 03:26:04 +02:00
x=$(
${pass.withExtensions (ext: [ ext.pass-otp ])}/bin/pass git ls-files '*/otp.gpg' \
| ${gnused}/bin/sed 's:/otp\.gpg$::' \
| ${rofi}/bin/rofi -dmenu -f -p OTP
)
2019-12-20 05:54:26 +01:00
2024-08-29 03:26:04 +02:00
otp=$(${pass.withExtensions (ext: [ ext.pass-otp ])}/bin/pass otp code "$x/otp")
2019-12-20 05:54:26 +01:00
2024-08-29 03:26:04 +02:00
printf %s "$otp" | ${xdotool}/bin/xdotool type -f -
'';
2019-12-20 05:54:26 +01:00
2021-11-01 09:20:42 +01:00
in
symlinkJoin rec {
2019-12-20 05:54:26 +01:00
version = "1.0.0";
name = "otpMenu-${version}";
2024-08-29 03:26:04 +02:00
paths = [
bin
desktopFile
];
meta = with lib; {
2019-12-20 05:54:26 +01:00
description = "similar to passmenu shows and prints otp";
homepage = "https://your.mama";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ mrVanDalo ];
};
}