Полагаю, там должно быть достаточно просто прописать extension (если программа в итоге "общается" с gtk/qt, а не прямо висит на голых иксах). Ну и прописать соответствующий лаунчер (без него обычно бывают разные странные спец. эффекты, вроде невозможности авторизоваться). Что-то вроде:
apps:
my-part:
command: desktop-launch $SNAP/bin/passgen2
extensions:
- gnome-3-28
...
Ну и собирать такие вещи лучше итеративно; в процессе придёт понимание, чего не хватает.
Скорее всего на базе гнома из кучи ваших либ больше ничего не понадобится (т.е. stage-packages может "похудеть" или вообще исчезнуть)
Запускаем `snapcraft try`. Он проходит по всем стадиям, и готовит папку prime. Дальше подключаем её с помощью `snap try` - получаем гибкий снап, который одновременно и приложение, и папка, куда можно лазить и что-то менять (добавлять/настраивать) прямо на лету. Потом обкатанные настройки прописываем в сам скрипт снапкрафта. Confinement, кстати, изначально лучше поставить devmode. Тогда приложению открыт доступ повсюду. И потом с помощью snappy-debug в параллельной консоли смотреть, куда оно на самом деле лазает, и, соответственно, какие plugs ему надо прописать, чтобы оно успешно взлетело в strict.
(например, с вашим файлом приложение надо будет вызывать как 'passgen2.my-part' - подозреваю, что вы не этого хотели добиться, и поэтому эта часть будет меняться. А если запускать полный ребилд snapcraft - по каждому чиху - это медленно и грустно).