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

  cfg = config.my.services.postgresql-backup;
in {
  options.my.services.postgresql-backup = {
    enable =
      (mkEnableOption "Backup SQL databases")
      // {default = config.services.postgresql.enable;};
  };

  config = mkIf cfg.enable {
    services.postgresqlBackup = {
      enable = true;
      # Restic backup starts at midnight so create DB dump just before
      startAt = "*-*-* 23:30:00";
    };

    my.services.restic-backup = mkIf cfg.enable {
      paths = ["/var/backup/postgresql"];

      # no need to store previously backed up files, as borg does the snapshoting
      # for us
      exclude = ["/var/backup/postgresql/*.prev.sql.gz"];
    };
  };
}