Skip to content

Publishing to the marketplace

The theme store and plugin store show what’s in the Nari Marketplace repository. Every addon lives in its own repository and is added to the marketplace as a git submodule, through a pull request. Once a pull request is reviewed and merged, the store picks it up.

  1. Make your addon, test it in Nari and put it in its own repository, with manifest.json at the root and a README.md (see what the store shows).

  2. Fork the marketplace and add your repository as a submodule named after the addon’s id, in plugins/ or themes/:

    Terminal window
    git submodule add https://github.com/you/nari-sleep-timer plugins/sleep_timer
  3. Check it the way the store will:

    Terminal window
    python3 scripts/build.py --check
  4. Open a pull request and fill in the checklist. One addon per pull request.

Your repository is exactly what Nari installs, so the same manifest.json drives Nari and the store:

  • Directorynari-sleep-timer/ your repository
    • manifest.json
    • main.lua
    • README.md the addon’s page in the store
    • Directorypreview/
      • icon.png next to its name
      • 1.jpg the store card
      • 2.jpg
  • manifest.json needs id, name, version, author, description and api.
  • README.md is required. Opening the addon in the store shows it, so explain what it does and how to set it up. Markdown, no raw HTML.
  • icon and screenshots point at images in your repository (png, jpg, webp or gif), the same ones Nari shows in the addon’s info. Links to images elsewhere aren’t accepted, since they could change after the review. 16:9 screenshots look best, 1280×720 is plenty. The first screenshot is the store card.
  • Without an icon the store draws one: the theme icon in your theme’s text color over its tinted background, or the plugin icon in Nari’s colors. Reviewers still ask for an icon and screenshots before merging.
  • The size limit is 5 MB for plugins and 25 MB for themes.

An optional store object adds to the addon’s popup, in the store and in Nari:

manifest.json
"store": {
"license": "MIT"
}
Field
store.source Where the code lives, shown as the View source button. Submodules link to their repository already.
store.license Shown next to the version.

Bump version in your repository, then open a pull request on the marketplace that moves the submodule to that commit:

Terminal window
git -C plugins/sleep_timer pull

The marketplace stays on the commit it was approved with, so every update is reviewed like the first version. The store shows the new version as soon as it’s merged.

Plugins run with full access to Nari and to the user’s files, so every pull request is read before it’s merged. Reviewers look for code that does what the description says and nothing else: no tracking, no hidden downloads, no obfuscated code. Themes with bundled plugins get the same review. They also check that the addon has an icon, screenshots that show it working and a helpful README. Small, readable pull requests get merged faster.