envision-unwrapped: 0-unstable-2024-10-20 -> 1.1.1 (#360652)
[NixPkgs.git] / pkgs / tools / security / pass / rofi-pass.nix
blobe204c14a234e5c0cd9fba4b5ca576b215006febd
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , makeWrapper
5 , unstableGitUpdater
6 , coreutils
7 , util-linux
8 , gnugrep
9 , libnotify
10 , pwgen
11 , findutils
12 , gawk
13 , gnused
14 # wayland-only deps
15 , rofi-wayland
16 , pass-wayland
17 , wl-clipboard
18 , wtype
19 # x11-only deps
20 , rofi
21 , pass
22 , xclip
23 , xdotool
24 # backend selector
25 , backend ? "x11"
28 assert lib.assertOneOf "backend" backend [ "x11" "wayland" ];
30 stdenv.mkDerivation {
31   pname = "rofi-pass";
32   version = "2.0.2-unstable-2024-06-16";
34   src = fetchFromGitHub {
35     owner = "carnager";
36     repo = "rofi-pass";
37     rev = "37c4c862deb133a85b7d72989acfdbd2ef16b8ad";
38     hash = "sha256-1lPNj47vTPLBK7mVm+PngV8C/ZsjJ2EN4ffXGU2TlQo=";
39   };
41   nativeBuildInputs = [ makeWrapper ];
43   dontBuild = true;
45   installPhase = ''
46     mkdir -p $out/bin
47     cp -a rofi-pass $out/bin/rofi-pass
49     mkdir -p $out/share/doc/rofi-pass/
50     cp -a config.example $out/share/doc/rofi-pass/config.example
51   '';
53   wrapperPath = lib.makeBinPath ([
54     coreutils
55     findutils
56     gawk
57     gnugrep
58     gnused
59     libnotify
60     pwgen
61     util-linux
62   ] ++ lib.optionals (backend == "x11") [
63     rofi
64     (pass.withExtensions (ext: [ ext.pass-otp ]))
65     xclip
66     xdotool
67   ] ++ lib.optionals (backend == "wayland") [
68     rofi-wayland
69     (pass-wayland.withExtensions (ext: [ ext.pass-otp ]))
70     wl-clipboard
71     wtype
72   ]);
74   fixupPhase = ''
75     patchShebangs $out/bin
77     wrapProgram $out/bin/rofi-pass \
78       --prefix PATH : "$wrapperPath" \
79       --set-default ROFI_PASS_BACKEND ${if backend == "wayland" then "wtype" else "xdotool"} \
80       --set-default ROFI_PASS_CLIPBOARD_BACKEND ${if backend == "wayland" then "wl-clipboard" else "xclip"}
81   '';
83   passthru.updateScript = unstableGitUpdater { };
85   meta = {
86     description = "Script to make rofi work with password-store";
87     mainProgram = "rofi-pass";
88     homepage = "https://github.com/carnager/rofi-pass";
89     license = lib.licenses.gpl3;
90     platforms = with lib.platforms; linux;
91     maintainers = [ ];
92   };