gopass-jsonapi: add native messaging manifest (#381123)

authored by schnusch and committed by GitHub 114d799f 29ad897d

+60
+4
pkgs/by-name/go/gopass-jsonapi/browser-jsonapi-wrapper.sh
···
··· 1 + #!/bin/sh 2 + set -eu 3 + export GPG_TTY=$(tty) 4 + exec @OUT@/bin/gopass-jsonapi listen
+56
pkgs/by-name/go/gopass-jsonapi/package.nix
··· 5 buildGoModule, 6 fetchFromGitHub, 7 installShellFiles, 8 gopass, 9 apple-sdk_14, 10 }: 11 12 buildGoModule rec { 13 pname = "gopass-jsonapi"; 14 version = "1.15.15"; ··· 40 "-X main.version=${version}" 41 "-X main.commit=${src.rev}" 42 ]; 43 44 postFixup = '' 45 wrapProgram $out/bin/gopass-jsonapi \
··· 5 buildGoModule, 6 fetchFromGitHub, 7 installShellFiles, 8 + jq, 9 + gnupg, 10 gopass, 11 apple-sdk_14, 12 }: 13 14 + let 15 + 16 + # https://github.com/gopasspw/gopass-jsonapi/blob/v1.15.15/internal/jsonapi/manifest/manifest_path_linux.go 17 + manifestPaths = { 18 + firefox = "$out/lib/mozilla/native-messaging-hosts/com.justwatch.gopass.json"; 19 + chrome = "$out/etc/opt/chrome/native-messaging-hosts/com.justwatch.gopass.json"; 20 + chromium = "$out/etc/chromium/native-messaging-hosts/com.justwatch.gopass.json"; 21 + brave = "$out/etc/opt/chrome/native-messaging-hosts/com.justwatch.gopass.json"; 22 + vivaldi = "$out/etc/opt/vivaldi/native-messaging-hosts/com.justwatch.gopass.json"; 23 + iridium = "$out/etc/iridium-browser/native-messaging-hosts/com.justwatch.gopass.json"; 24 + slimjet = "$out/etc/opt/slimjet/native-messaging-hosts/com.justwatch.gopass.json"; 25 + }; 26 + 27 + in 28 buildGoModule rec { 29 pname = "gopass-jsonapi"; 30 version = "1.15.15"; ··· 56 "-X main.version=${version}" 57 "-X main.commit=${src.rev}" 58 ]; 59 + 60 + postInstall = '' 61 + # Generate native messaging manifests for Chrome and Firefox. 62 + export HOME=$(mktemp -d) 63 + ${gnupg}/bin/gpg --batch --passphrase "" --quick-generate-key "user <user@localhost>" 64 + ${gopass}/bin/gopass setup --name "user" --email "user@localhost" 65 + 66 + ${lib.concatMapStrings ( 67 + browser: 68 + let 69 + manifestPath = manifestPaths.${browser}; 70 + in 71 + # The options after `--print=false` are of no effect, but if missing 72 + # `gopass-jsonapi configure` will ask for them. (`--libpath` and `--global` 73 + # are overriden by `--manifest-path`. `--libpath` is only used to 74 + # compute Firefox's global manifest path. See 75 + # https://github.com/gopasspw/gopass-jsonapi/blob/v1.15.15/setup_others.go#L33-L46) 76 + # 77 + # `gopass-jsonapi configure` ask for confirmation before writing any files, 78 + # `echo y` gives it. 79 + # Prepend $PATH so we can run gopass-jsonapi before wrapProgram in postFixup. 80 + '' 81 + echo y | PATH="${gopass.wrapperPath}:$PATH" $out/bin/gopass-jsonapi configure \ 82 + --browser ${browser} \ 83 + --path $out/lib/gopass \ 84 + --manifest-path ${manifestPath} \ 85 + --print=false \ 86 + --global \ 87 + --libpath /var/empty 88 + # replace gopass_wrapper.sh with ./browser-jsonapi-wrapper.sh 89 + rm $out/lib/gopass/gopass_wrapper.sh 90 + ${jq}/bin/jq --arg script $out/lib/gopass/browser-jsonapi-wrapper.sh \ 91 + '.path = $script' ${manifestPath} > ${manifestPath}.tmp 92 + mv ${manifestPath}.tmp ${manifestPath} 93 + '' 94 + ) (builtins.attrNames manifestPaths)} 95 + substitute ${./browser-jsonapi-wrapper.sh} $out/lib/gopass/browser-jsonapi-wrapper.sh \ 96 + --replace-fail "@OUT@" "$out" 97 + chmod +x $out/lib/gopass/browser-jsonapi-wrapper.sh 98 + ''; 99 100 postFixup = '' 101 wrapProgram $out/bin/gopass-jsonapi \