42 lines
1.2 KiB
Nix
42 lines
1.2 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
let
|
|
cfg = config.snowhawk.rbw;
|
|
|
|
rbw-fzf = pkgs.writeShellApplication {
|
|
name = "rbw-fzf";
|
|
runtimeInputs = with pkgs; [ rbw fzf perl findutils coreutils jq ];
|
|
text = /*bash*/ ''
|
|
rbw ls --fields name,user |
|
|
sort -bi |
|
|
perl -ple 's/^([^\t]*)\t([^\t]*)$/$1 ($2)/gm' |
|
|
fzf --tmux --no-sort --with-shell='bash -c' \
|
|
--preview="echo {} | perl -plE 's/^(.*) \((.*)?\)$/\"\$1\" \"\$2\"/' |
|
|
xargs rbw get --full --raw | \
|
|
jq --color-output 'if .data.password != \"\" then setpath([\"data\", \"password\"]; \"************\") else . end | del(.history) | del(.id) | walk(if type == \"object\" then map_values(. // empty) else . end)'" \
|
|
--preview-label="Vault Item" --preview-window=wrap |
|
|
perl -plE 's/^(.*) \((.*)?\)$/"$1" "$2"/' |
|
|
xargs -r rbw get |
|
|
xclip -sel copy
|
|
'';
|
|
};
|
|
|
|
inherit (lib) mkIf mkEnableOption;
|
|
in
|
|
{
|
|
options.snowhawk.rbw = {
|
|
enable = mkEnableOption "rbw home-manager module";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
programs.rbw.enable = true;
|
|
|
|
home.packages =
|
|
|
|
with pkgs; [
|
|
rbw
|
|
pinentry-tty
|
|
rbw-fzf
|
|
];
|
|
};
|
|
}
|