nixos-lib/packages/pinentry.nix

35 lines
976 B
Nix

{ writeShellScriptBin, pinentry, ... }:
writeShellScriptBin "pinentry" ''
flavor=
if [ -n "$XDG_CURRENT_DESKTOP" ]; then
case "$XDG_CURRENT_DESKTOP" in
KDE|LXQT)
flavor="qt" ;;
XFCE)
flavor="gtk2" ;;
Gnome)
flavor="gnome3" ;;
*)
echo "Unknown desktop '$XDG_CURRENT_DESKTOP', use 'gnome3'" >&2
flavor="gnome3" ;;
esac
elif [ -z "$XAUTHORITY" -a -z "$WAYLAND_DISPLAY" ]; then
echo "No Xauthority nor Wayland display, using curses" >&2
flavor="curses"
fi
if [ -z "$flavor" ]; then
echo "WARNING: pinentry flavor could not be detected, use 'curses'" >&2
flavor="curses"
fi
declare -A pinentryFlavors
pinentryFlavors["qt"]="${pinentry.qt}"
pinentryFlavors["gtk2"]="${pinentry.gtk2}"
pinentryFlavors["gnome"]="${pinentry.gnome3}"
pinentryFlavors["curses"]="${pinentry.curses}"
echo "Selected flavor: $flavor" >&2
exec ''${pinentryFlavors[$flavor]}/bin/pinentry
''