From dfcd2589713a783edda8bcc21f3ec972f036c143 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Thu, 30 Apr 2020 14:16:51 +0200 Subject: [PATCH] Pass changes --- profiles/common/default.nix | 2 +- profiles/graphical/default.nix | 8 +------- programs/firefox/default.nix | 7 +++++++ programs/pass/default.nix | 3 +++ programs/sway/default.nix | 3 ++- programs/sway/launcher.nix | 33 ++++++++++++++++++++++++++++++++- 6 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 programs/firefox/default.nix create mode 100644 programs/pass/default.nix diff --git a/profiles/common/default.nix b/profiles/common/default.nix index 7956a851..f2475d9e 100644 --- a/profiles/common/default.nix +++ b/profiles/common/default.nix @@ -59,7 +59,7 @@ ]; } ) - (pass.withExtensions (ext: [ ext.pass-otp ext.pass-genphrase ])) + (import ../../programs/pass/default.nix { inherit pkgs; }) ripgrep unzip ]; diff --git a/profiles/graphical/default.nix b/profiles/graphical/default.nix index 52c5ce0c..03ad78a9 100644 --- a/profiles/graphical/default.nix +++ b/profiles/graphical/default.nix @@ -70,13 +70,7 @@ chromium citrix_workspace deluge - ( - firefox.override { - extraNativeMessagingHosts = [ - (passff-host.override { pass = (pass.withExtensions (ext: [ ext.pass-otp ext.pass-genphrase ])); }) - ]; - } - ) + (import ../../programs/firefox/default.nix { inherit pkgs; }) google-chrome (gnupg.override { guiSupport = true; }) hledger diff --git a/programs/firefox/default.nix b/programs/firefox/default.nix new file mode 100644 index 00000000..321f678a --- /dev/null +++ b/programs/firefox/default.nix @@ -0,0 +1,7 @@ +{ pkgs }: + +(pkgs.firefox.override { + extraNativeMessagingHosts = [ + (pkgs.passff-host.override { pass = (import ../pass/default.nix { inherit pkgs; }); }) + ]; +}) diff --git a/programs/pass/default.nix b/programs/pass/default.nix new file mode 100644 index 00000000..b7bb37cb --- /dev/null +++ b/programs/pass/default.nix @@ -0,0 +1,3 @@ +{ pkgs }: + +(pkgs.pass-wayland.override { pass = pkgs.pass-wayland; }).withExtensions (ext: [ ext.pass-otp ext.pass-genphrase ]) diff --git a/programs/sway/default.nix b/programs/sway/default.nix index 6a4dc318..9af9e0eb 100644 --- a/programs/sway/default.nix +++ b/programs/sway/default.nix @@ -1,6 +1,7 @@ with import { }; { pkgs, ... }: let + firefox = import ../firefox/default.nix { inherit pkgs; }; launcher = import ./launcher.nix { inherit pkgs stdenv; }; color-picker = import ./color-picker.nix { inherit pkgs; }; screenshot = import ./screenshot.nix { inherit pkgs; }; @@ -97,7 +98,7 @@ in ### Startup programs # - exec ${pkgs.firefox}/bin/firefox + exec ${firefox}/bin/firefox exec ${pkgs.thunderbird}/bin/thunderbird exec ${pkgs.joplin-desktop}/bin/joplin-desktop exec ${pkgs.teams}/bin/teams diff --git a/programs/sway/launcher.nix b/programs/sway/launcher.nix index 2409bf97..f4009a61 100644 --- a/programs/sway/launcher.nix +++ b/programs/sway/launcher.nix @@ -1,5 +1,6 @@ { pkgs, stdenv }: let + pass = import ../pass/default.nix { inherit pkgs; }; gemoji = pkgs.buildRubyGem { pname = "gemoji"; gemName = "gemoji"; @@ -57,6 +58,36 @@ pkgs.writeScriptBin "launcher" '' ${pkgs.sway}/bin/swaymsg exec -- "echo -n $char | ${pkgs.wl-clipboard}/bin/wl-copy --foreground" } + pass_options(){ + prefix=''${PASSWORD_STORE_DIR-~/.password-store} + password_files=( "$prefix"/**/*.gpg ) + printf 'pass password %s\n' ''${''${password_files%.gpg}#$prefix/} + printf 'pass username %s\n' ''${''${password_files%.gpg}#$prefix/} + printf 'pass otp %s\n' ''${''${password_files%.gpg}#$prefix/} + printf 'pass edit %s\n' ''${''${password_files%.gpg}#$prefix/} + } + + pass() { + option=$(echo $1 | sed "s/^\([^ ]*\) .*$/\1/") + passfile=$(echo $1 | sed "s/^[^ ]* \(.*$\)/\1/") + echo $option + echo $passfile + case $option in + username) + swaymsg exec -- "${pass}/bin/pass show '$passfile' | sed -n 's/^Username: *//p' | tr -d '\n' | ${pkgs.wl-clipboard}/bin/wl-copy --foreground" + ;; + password) + swaymsg exec -- "${pass}/bin/pass show -c0 '$passfile'" + ;; + otp) + swaymsg exec -- "${pass}/bin/pass otp -c '$passfile'" + ;; + edit) + ${pass}/bin/pass edit "$passfile" + ;; + esac + } + record_options() { ${pkgs.sway}/bin/swaymsg -t get_outputs | ${pkgs.jq}/bin/jq -r '.[]["name"]' | sed "s/^/record /" echo record select @@ -125,7 +156,7 @@ pkgs.writeScriptBin "launcher" '' ${pkgs.sway}/bin/swaymsg \[con_id="$window"\] focus } - CHOSEN=$(cat <(windows_options) <(tmuxinator_options) <(ssh_options) <(systemctl_options) <(run_options) <(record_options) <(calc_options) <(emoji_options) | ${pkgs.fzy}/bin/fzy --lines 36 | tail -n1) + CHOSEN=$(cat <(windows_options) <(tmuxinator_options) <(ssh_options) <(systemctl_options) <(pass_options) <(run_options) <(record_options) <(calc_options) <(emoji_options) | ${pkgs.fzy}/bin/fzy --lines 36 | tail -n1) if [ -n "$CHOSEN" ] then