Installing your own packages (From Source or Tarball)

aerynOS is stateless by design. Which roughly means that system data and user data are kept separate, allowing for easier uninstalls and removal of unneeded packages (cleanly) (more reading here clear-linux-documentation/source/guides/clear/stateless.rst at master · clearlinux/clear-linux-documentation · GitHub). As a consequence, if you need to install some proprietary software (unavailable from moss or flatpak), you’ll have to go through the packaging steps and make yourself a recipe.

setting up for packaging however, is quite straightforward, just follow the guide Workflow | AerynOS Docs here. Once you’re done, we can try to make a package

For this example, I will be sharing my Tixati recipe

# SPDX-FileCopyrightText: 2026 AerynOS Developers
# SPDX-License-Identifier: MPL-2.0

name        : tixati
version     : "3.44"
release     : 1
homepage    : https://tixati.com/
upstreams   :
    - https://download.tixati.com/tixati-3.44-1.x86_64.manualinstall.tar.gz : 3b060019a48eb7a9b7bd01460accebc4079e1a3105ea77ec66ccd7bc95f8911f
summary     : BitTorrent client with advanced features
description : |
    BitTorrent client with advanced features
license     : Freeware-EULA
install     : |
    %install_bin  %(name)
    %install_file %(name).png     -t %(installroot)%(datadir)/icons/hicolor/48x48/apps/
    %install_file %(name).desktop -t %(installroot)%(datadir)/applications/

Then I would just update the recipe whenever I need to update my software. This recipe only has an install section, whereby I place the files in the needed places using %install_* macros and call it a day. No funny business here. Here’s another recipe (credit: HarshRelapse)

# SPDX-FileCopyrightText: 2026 AerynOS Developers
# SPDX-License-Identifier: MPL-2.0

name        : bitwig-studio
version     : "6.0.11"
release     : 1
homepage    : https://www.bitwig.com/
upstreams   :
    - https://www.bitwig.com/dl/Bitwig%20Studio/6.0.11/installer_linux:
        hash: ae7aff67ccba9252ab536813e7f5d3fac46bca5fc7659674e27e7ae4bd073c4c
        unpack: false
        rename: bitwig-studio.deb
summary     : Digital audio workstation for music production, remixing and live performance
description : |
    Digital audio workstation for music production, remixing and live performance
license     : custom
strip       : false
builddeps   :
    - binary(bsdtar-static)
rundeps-exclude:
    - 'soname\(libjvm\.so\(.*\)\)' #soname(libjvm.so(x86_64))
    - 'soname\(libxcb.*\(386\)\)' #soname(libxcb-icccm.so.4(386))
setup       : |
    ar xf %(sourcedir)/bitwig-studio.deb
    bsdtar-static xf data.tar.zst
install     : |
    %install_dir %(installroot)%(libdir)/
    mv opt/bitwig-studio %(installroot)%(libdir)/bitwig-studio

    %install_dir %(installroot)%(datadir)/
    cp -a usr/share/* %(installroot)%(datadir)/

    # Upstream ships usr/bin/bitwig-studio as an absolute symlink to
    # /opt/bitwig-studio/bitwig-studio, so we make our own instead
    %install_dir %(installroot)%(bindir)/
    ln -srv %(installroot)%(libdir)/bitwig-studio/bitwig-studio %(installroot)%(bindir)/bitwig-studio

    # Patch desktop file for statelessness
    sed -i 's|/opt/bitwig-studio/bitwig-studio|%(bindir)/bitwig-studio|g' %(installroot)%(datadir)/applications/com.bitwig.BitwigStudio.desktop

This recipe extracts from a .deb file, which I believe should be the use case for most people (especially with drivers).

I hope this helps

List of %install_* macros here Miscellaneous | AerynOS Docs