Snapcraft Extensions

Snapcraft extensions enable snap developers to easily incorporate a set of common requirements into a snap.

A snap developer creating a GTK+ 3 application snap, for example, can use the gnome-3-28 extension to expose the GTK+ 3 libraries to a snap at build and runtime without the snap developer needing specific deep knowledge about GTK+ 3.

Extensions help:

  • avoid repetitive tasks in the snap building process
  • obviate the need for in-depth knowledge of the target software stack
  • create a standard template for common application requirements
  • reduce the testing and security burden, as they’re tested and updated independently

:information_source: For more details on the snap building process, see Creating a snap

Using Extensions

All extensions are included with Snapcraft and can be listed with the following command:

$ snapcraft extensions
Extension name    Supported bases
----------------  -----------------
gnome-3-28        core18
...

See Supported Extensions for the full list of extensions.

Further information about any specific extension can be obtained by typing snapcraft extension followed by the extension name:

$ snapcraft extension gnome-3-28
This extension eases creation of snaps that integrate with GNOME 3.28
...

Extensions modify the snapcraft.yaml definition before a build. You can use the expand-extensions command from your project’s root directory to see how the snapcraft.yaml file will look with the extensions applied.

$ snapcraft expand-extensions
name: foliate
...
layout:
  /usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.0:
    bind: $SNAP/gnome-platform/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.0
  /usr/share/xml/iso-codes:
    bind: $SNAP/gnome-platform/usr/share/xml/iso-codes
apps:
  foliate:
    command: usr/bin/com.github.johnfactotum.Foliate
    plugs:
    - gsettings
    - home
    - desktop
    - desktop-legacy
    - wayland
    - x11
    slots:
    - dbus-daemon
    common-id: com.github.johnfactotum.Foliate.desktop
    desktop: usr/share/applications/com.github.johnfactotum.Foliate.desktop
    command-chain:
    - snap/command-chain/desktop-launch
...

Supported Extensions

Extension name Description
gnome-3-28 This extension eases creation of snaps that integrate with GNOME and GTK 3.28

Last updated 20 days ago. Help improve this document in the forum.