{ lib, stdenv, fetchFromGitHub, makeWrapper, unstableGitUpdater, coreutils, util-linux, gnugrep, libnotify, pwgen, findutils, gawk, gnused, # wayland-only deps rofi-wayland, pass-wayland, wl-clipboard, wtype, # x11-only deps rofi, pass, xclip, xdotool, # backend selector backend ? "x11", }: assert lib.assertOneOf "backend" backend [ "x11" "wayland" ]; stdenv.mkDerivation { pname = "rofi-pass"; version = "2.0.2-unstable-2024-06-16"; src = fetchFromGitHub { owner = "carnager"; repo = "rofi-pass"; rev = "37c4c862deb133a85b7d72989acfdbd2ef16b8ad"; hash = "sha256-1lPNj47vTPLBK7mVm+PngV8C/ZsjJ2EN4ffXGU2TlQo="; }; nativeBuildInputs = [ makeWrapper ]; dontBuild = true; installPhase = '' mkdir -p $out/bin cp -a rofi-pass $out/bin/rofi-pass mkdir -p $out/share/doc/rofi-pass/ cp -a config.example $out/share/doc/rofi-pass/config.example ''; wrapperPath = lib.makeBinPath ( [ coreutils findutils gawk gnugrep gnused libnotify pwgen util-linux ] ++ lib.optionals (backend == "x11") [ rofi (pass.withExtensions (ext: [ ext.pass-otp ])) xclip xdotool ] ++ lib.optionals (backend == "wayland") [ rofi-wayland (pass-wayland.withExtensions (ext: [ ext.pass-otp ])) wl-clipboard wtype ] ); fixupPhase = '' patchShebangs $out/bin wrapProgram $out/bin/rofi-pass \ --prefix PATH : "$wrapperPath" \ --set-default ROFI_PASS_BACKEND ${if backend == "wayland" then "wtype" else "xdotool"} \ --set-default ROFI_PASS_CLIPBOARD_BACKEND ${ if backend == "wayland" then "wl-clipboard" else "xclip" } ''; passthru.updateScript = unstableGitUpdater { }; meta = { description = "Script to make rofi work with password-store"; mainProgram = "rofi-pass"; homepage = "https://github.com/carnager/rofi-pass"; license = lib.licenses.gpl3; platforms = with lib.platforms; linux; maintainers = [ ]; }; }