Hosting a Repository

You do not have to use the store. A repository is a JSON catalogue and the .deb files it points at, served over HTTPS from anywhere.

The catalogue

Packages.json
{
  "name": "My Repository",
  "serial": 1,
  "packages": [
    {
      "packageID": "com.example.mytweak",
      "name": "MyTweak",
      "version": "1.0.0",
      "author": "Your Name",
      "description": "What it does.",
      "downloadURL": "debs/com.example.mytweak/1.0.0.deb",
      "sha256": "..."
    }
  ]
}

downloadURL is relative to the catalogue, so the repository can move to another host without every entry being rewritten. Absolute URLs work but pin you to the origin you published from.

Checksums

sha256 is checked against the downloaded file before anything is unpacked, and the install is abandoned if it does not match. Publish it for every package.

A checksum proves a download matches what the catalogue claims. It proves nothing about where the catalogue came from, which is what signing is for, and third-party repositories are not signed.

What users see

A repository added by hand is marked as such. TweakInject does not review what it publishes and its tweaks carry no approval from the store. Users are told this plainly, which is the honest trade for being able to publish without asking anyone.

Serial numbers

Increment serial on every publish. Clients refuse a catalogue older than the newest they have already accepted, which is what stops someone serving an old one to bring back a package you pulled.