dot

NixOS dotfiles
git clone https://git.echoz.io/dot.git
Log | Files | Refs

default.nix (1347B)


      1 {
      2   lib,
      3   pkgs,
      4 
      5   user,
      6   ...
      7 }:
      8 {
      9   home-manager.users.${user} =
     10     { config, ... }:
     11     {
     12       programs.gpg = {
     13         enable = true;
     14         homedir = "${config.xdg.dataHome}/gnupg";
     15         mutableKeys = false;
     16         mutableTrust = false;
     17       };
     18 
     19       services.gpg-agent = {
     20         enable = true;
     21         pinentry.package = pkgs.writeShellScriptBin "rbw-pinentry" ''
     22           fallback() {
     23             if [ -n "$WAYLAND_DISPLAY" ]; then
     24               exec ${lib.getExe config.programs.wayprompt.package} "$@"
     25             else
     26               exec ${lib.getExe pkgs.pinentry-tty} "$@"
     27             fi
     28           }
     29 
     30           secret=$(${lib.getExe pkgs.rbw} get gpg) || fallback "$@"
     31 
     32           secret=$(printf '%s' "$secret" | ${lib.getExe pkgs.gnused} 's/%/%25/g')
     33 
     34           echo "OK Pleased to meet you"
     35           while IFS=' ' read -r cmd rest; do
     36             case "$cmd" in
     37               GETPIN)
     38                 printf 'D %s\n' "$secret"
     39                 echo "OK"
     40                 ;;
     41               GETINFO)
     42                 [ "$rest" = "pid" ] && echo "D $$"
     43                 echo "OK"
     44                 ;;
     45               BYE)
     46                 echo "OK closing connection"
     47                 exit 0
     48                 ;;
     49               *)
     50                 echo "OK"
     51                 ;;
     52             esac
     53           done
     54         '';
     55       };
     56     };
     57 }