diff options
| author | tv <tv@krebsco.de> | 2021-01-13 04:54:29 +0100 | 
|---|---|---|
| committer | tv <tv@krebsco.de> | 2021-01-13 04:54:29 +0100 | 
| commit | 81de07e25eea49018ed6a5831c75b8abd264f58c (patch) | |
| tree | 0ca3925d0ead529f7cfa3c161bc266fac6f13441 | |
| parent | 5b91fd162e20c054075f4535f69b6e51a8bdb952 (diff) | |
tv pinentry-urxvt: init
| -rw-r--r-- | tv/5pkgs/simple/pinentry-urxvt/default.nix | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/tv/5pkgs/simple/pinentry-urxvt/default.nix b/tv/5pkgs/simple/pinentry-urxvt/default.nix new file mode 100644 index 0000000..65b76c0 --- /dev/null +++ b/tv/5pkgs/simple/pinentry-urxvt/default.nix @@ -0,0 +1,56 @@ +{ pkgs, ... }@args: + +let +  lib = import <stockholm/lib>; + +  # config cannot be declared in the input attribute set because that would +  # cause callPackage to inject the wrong config.  Instead, get it from ... +  # via args. +  config = args.config or {}; + +  cfg = eval.config; + +  eval = lib.evalModules { +    modules = lib.singleton { +      _file = toString ./default.nix; +      imports = lib.singleton config; +      options = { +        appName = lib.mkOption { +          default = "pinentry-urxvt"; +          type = lib.types.str; +        }; +        display = lib.mkOption { +          default = ":0"; +          type = lib.types.str; +        }; +      }; +    }; +  }; + + +in + +  pkgs.write "pinentry-urxvt" { +    "/bin/pinentry".link = pkgs.writeDash "pinentry-urxvt-wrapper" '' +      set -efu +      exec 3<&0 4>&1 5>&2 +      export DISPLAY=${lib.shell.escape cfg.display} +      exec ${pkgs.rxvt_unicode}/bin/urxvt \ +        -name ${lib.shell.escape cfg.appName} \ +        -e ${pkgs.writeDash "pinentry-urxvt-tty" '' +          set -efu +          exec 2>&5 +          TTY=$(${pkgs.coreutils}/bin/tty) +          while read -r line <&3; do +            case $line in +              'OPTION ttyname='*) +                echo "OPTION ttyname=$TTY" +                ;; +              *) +                echo "$line" +            esac +          done | ${pkgs.pinentry.tty}/bin/pinentry-tty "$@" >&4 +        ''} \ +        "$@" +    ''; +  } | 
