genpack documentation

genpack/devlauncher メタパッケージ

Gentoo Linux をベースに、不変システムイメージを宣言的に生成・配布・起動するための自社開発ツールチェーンの資料です。

概要

genpack/devlauncher は、Wayland環境でのGUI開発作業に必要なツール一式をまとめたメタパッケージである。GTK4ベースのアプリケーションランチャー (devlauncher) をインストールし、エディタ、ブラウザ、ターミナルエミュレータ、コンテナツール、コマンドラインユーティリティ等を一括で導入する。

依存パッケージ一覧

開発基盤 (genpack/devel 経由)

パッケージ 説明
sys-devel/binutils バイナリユーティリティ
sys-devel/gcc GCC コンパイラ
dev-debug/gdb GDB デバッガ

GUI アプリケーション

パッケージ 説明
www-client/google-chrome Web ブラウザ
app-editors/vscode[wayland] Visual Studio Code
x11-terms/ghostty (<1.2) Ghostty ターミナルエミュレータ
app-text/xournalpp 手書きノート・PDF注釈 (GTK3)
dev-util/claude-code Claude Code CLI

GUI 基盤

パッケージ 説明
gui-apps/waypipe[lz4,zstd] Wayland リモートディスプレイ転送
gui-libs/gtk[wayland] GTK4 (devlauncher 本体が使用)
x11-libs/gtk+[wayland] GTK3 (xournalpp 等が使用)
dev-python/pygobject Python GObject バインディング
media-fonts/noto Noto フォント
media-fonts/noto-cjk Noto CJK フォント
media-fonts/noto-emoji Noto 絵文字フォント
media-sound/alsa-utils ALSA オーディオユーティリティ

コンテナ

パッケージ 説明
app-containers/docker Docker コンテナエンジン
app-containers/docker-compose Docker Compose

コマンドラインツール

パッケージ 説明
app-admin/sudo 特権昇格
sys-process/psmisc プロセス管理ユーティリティ
app-misc/jq JSON プロセッサ
sys-apps/fd ファイル検索
app-text/tree ディレクトリツリー表示
sys-apps/bat シンタックスハイライト付き cat
dev-python/pip Python パッケージマネージャ
dev-python/pylint Python リンター
dev-python/pytest Python テストフレームワーク

devlauncher アプリケーション

/usr/bin/devlauncher としてインストールされる GTK4 (PyGObject) ベースのアプリケーションランチャー。起動するとインストール済みの .desktop アプリケーションをグリッド表示し、クリックで起動できる。

Wayland 環境の自動検出

devlauncher は起動時に以下の条件を確認し、環境変数を自動設定する:

この条件に該当する場合、XDG_SESSION_TYPE=waylandMOZ_ENABLE_WAYLAND=1 を設定する。waypipe SSH 経由でのリモート接続時に Wayland セッション情報が不完全なケースを補完する目的がある。

間接的に必須となるフラグ

devlauncher とその依存パッケージを正しくビルドするには、ebuild の RDEPEND で直接指定されるもの以外にも、間接的な依存関係で要求される USE フラグがある。weston プロファイルを使用する場合はプロファイル側で設定されるが、paravirt 等の GUI 設定を持たないプロファイルと組み合わせる場合は genpack.json5use セクションで明示的に指定する必要がある。

ライセンス承諾

プロプライエタリパッケージには genpack.json5license セクションでの承諾が必要:

license: {
    "www-client/google-chrome": "google-chrome",
    "dev-util/claude-code": "all-rights-reserved",
    "app-editors/vscode": "Microsoft-vscode"
}

Wayland/ディスプレイ関連

GTK が Wayland バックエンドで動作するには、グラフィックスタックにも Wayland サポートが必要となる。

パッケージ USE フラグ 理由
gui-libs/gtk wayland GTK4 の Wayland バックエンド。devlauncher が直接使用
x11-libs/gtk+ wayland GTK3 の Wayland バックエンド。xournalpp 等が使用
media-libs/mesa vulkan wayland gtk[wayland]mesa[wayland] を要求。vulkan は lavapipe/zink の REQUIRED_USE
x11-libs/cairo X gtk+[X] が要求。Chrome/Electron 系の依存チェーンで必要
media-libs/libglvnd X gtk+ 経由で要求
app-crypt/gcr gtk VSCode → gnome-keyring → gcr の依存チェーン
media-libs/freetype harfbuzz フォントレンダリング。harfbuzz との循環依存あり
app-text/poppler cairo xournalpp の PDF 描画で必要

循環依存の解決

media-libs/freetypemedia-libs/harfbuzz は相互依存の関係にあるため、circulardep_breaker の設定が必要:

circulardep_breaker: {
    packages: ["media-libs/freetype", "media-libs/harfbuzz"],
    use: "-harfbuzz -truetype"
}

genpack.json5 での設定例

paravirt プロファイルで devlauncher を使用する場合の最小限の USE フラグ設定:

{
    profile: "paravirt",
    packages: ["genpack/devlauncher"],
    use: {
        "gui-libs/gtk": "wayland",
        "x11-libs/gtk+": "wayland",
        "media-libs/mesa": "vulkan wayland",
        "x11-libs/cairo": "X",
        "media-libs/libglvnd": "X",
        "media-libs/freetype": "harfbuzz",
        "app-crypt/gcr": "gtk",
        "app-text/poppler": "cairo"
    },
    circulardep_breaker: {
        packages: ["media-libs/freetype", "media-libs/harfbuzz"],
        use: "-harfbuzz -truetype"
    },
    license: {
        "www-client/google-chrome": "google-chrome",
        "dev-util/claude-code": "all-rights-reserved",
        "app-editors/vscode": "Microsoft-vscode"
    }
}

weston プロファイルとの関係

weston プロファイルは make.defaults でグローバルに USE="wayland -X" を設定し、package.use で上記のほとんどの USE フラグをカバーしている。ただし weston/paravirt プロファイルは Weston コンポジタを含む完全なデスクトップ環境を前提としており、waypipe 経由のリモート表示のみで使う場合は過剰になる。paravirt プロファイルに必要な USE フラグを個別指定する方が軽量なイメージを構築できる。

ソースリファレンス

当社代表のデスクトップ(※)を常時ライブ配信中

※ライブ配信専用PC

OSSの検証や自社用ツールの開発といった公開できる作業に限り、 ライブ配信専用PC上で行っています。常時配信ですのでいつでもお気軽にチャットメッセージ(公開)を残していって下さい。