{
  config,
  pkgs,
  lib,
  ...
}: {
  sops.secrets."ente/minio/root_user" = {};
  sops.secrets."ente/minio/root_password" = {};

  sops.templates."minio-root-credentials".content = ''
    MINIO_ROOT_USER=${config.sops.placeholder."ente/minio/root_user"}
    MINIO_ROOT_PASSWORD=${config.sops.placeholder."ente/minio/root_password"}
  '';

  services.minio = {
    enable = true;
    rootCredentialsFile = config.sops.templates."minio-root-credentials".path;
  };

  systemd.services.minio = {
    environment.MINIO_SERVER_URL = "https://ente-minio-api.procopius.dk";
    postStart = ''
      # Wait until minio is up
      ${lib.getExe pkgs.curl} --retry 5 --retry-connrefused --fail --no-progress-meter -o /dev/null "http://localhost:9000/minio/health/live"

      # Make sure bucket exists
      mkdir -p ${lib.escapeShellArg config.services.minio.dataDir}/ente
    '';
  };

  networking.firewall.allowedTCPPorts = [
    9000
    9001
  ];
}
