{ inputs

# Dependencies
, dockerTools
, lib
, main
, stdenv
, tini
}:

dockerTools.buildLayeredImage {
  name = main.pname;
  tag = "main";
  created = "@${toString inputs.self.lastModified}";
  contents = [
    dockerTools.caCertificates
    main
  ];
  config = {
    Entrypoint = if !stdenv.hostPlatform.isDarwin
      # Use the `tini` init system so that signals (e.g. ctrl+c/SIGINT)
      # are handled as expected
      then [ "${lib.getExe' tini "tini"}" "--" ]
      else [];
    Cmd = [
      "${lib.getExe main}"
    ];
    Env = [
      "RUST_BACKTRACE=full"
    ];
    Labels = {
      "org.opencontainers.image.authors" = "June Clementine Strawberry <june@girlboss.ceo> and Jason Volk
      <jason@zemos.net>";
      "org.opencontainers.image.created" ="@${toString inputs.self.lastModified}";
      "org.opencontainers.image.description" = "a very cool Matrix chat homeserver written in Rust";
      "org.opencontainers.image.documentation" = "https://conduwuit.puppyirl.gay/";
      "org.opencontainers.image.licenses" = "Apache-2.0";
      "org.opencontainers.image.revision" = inputs.self.rev or inputs.self.dirtyRev or "";
      "org.opencontainers.image.source" = "https://github.com/girlbossceo/conduwuit";
      "org.opencontainers.image.title" = main.pname;
      "org.opencontainers.image.url" = "https://conduwuit.puppyirl.gay/";
      "org.opencontainers.image.vendor" = "girlbossceo";
      "org.opencontainers.image.version" = main.version;
    };
  };
}
