{
  lib,
  config,
  ...
}:
let
  inherit (lib) mkEnableOption mkIf;

  cfg = config.marleyos.programs.gpg;
in
{
  options.marleyos.programs.gpg.enable = mkEnableOption "gpg";

  config = mkIf cfg.enable {
    programs.gpg = {
      enable = true;
    };

    services.gpg-agent = rec {
      enable = true;

      # Don't ask for the password very often.
      defaultCacheTtl = 60480000;
      maxCacheTtl = defaultCacheTtl;
    };
  };
}