{
  pkgs,
  config,
  lib,
  outputs,
  ...
}: {
  options = {
    youthlic.programs.gpg = {
      enable = lib.mkEnableOption "gpg";
    };
  };
  config = let
    cfg = config.youthlic.programs.gpg;
  in
    lib.mkIf cfg.enable {
      services.gpg-agent = lib.mkMerge [
        {
          enable = true;
          enableSshSupport = true;
          pinentry = {
            package = outputs.packages."${pkgs.system}".pinentry-selector;
          };
          # sshKeys = [
          #   "C817E333BF88F16EA0F7ADE27BDCCC16AD25E5A6"
          # ];
        }
        (lib.mkIf config.youthlic.programs.fish.enable {
          enableFishIntegration = true;
        })
        (lib.mkIf config.youthlic.programs.bash.enable {
          enableBashIntegration = true;
        })
      ];
      programs.gpg = {
        enable = true;
        mutableKeys = true;
        mutableTrust = true;
        publicKeys = [
          {
            source = ./public-key.txt;
            trust = "ultimate";
          }
        ];
      };
    };
}
