summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 93b077e5c68fc15c6467d6d34a9a69c749ad8745 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# Maintainer: anon

pkgname=t3code-bin
pkgver=0.0.22
pkgrel=1
pkgdesc='T3 Code desktop app packaged from the upstream AppImage'
arch=('x86_64')
_upstream_tag='v0.0.22'
_upstream_version='0.0.22'
_appimage_name="T3-Code-${_upstream_version}-x86_64.AppImage"
url='https://t3.codes'
license=('MIT')
depends=(
  'alsa-lib'
  'at-spi2-core'
  'cairo'
  'dbus'
  'expat'
  'gcc-libs'
  'gdk-pixbuf2'
  'glib2'
  'gtk3'
  'hicolor-icon-theme'
  'libcups'
  'libdrm'
  'libx11'
  'libxcb'
  'libxcomposite'
  'libxdamage'
  'libxext'
  'libxfixes'
  'libxkbcommon'
  'libxrandr'
  'mesa'
  'nspr'
  'nss'
  'pango'
  'systemd-libs'
  'xdg-utils'
  'zlib'
)
optdepends=(
  'openai-codex: use the system-installed Codex CLI'
)
provides=("t3code=${pkgver}")
conflicts=('t3code')
options=('!debug' '!emptydirs' '!strip')
source=(
  "${_appimage_name}::https://github.com/pingdotgg/t3code/releases/download/${_upstream_tag}/${_appimage_name}"
  't3code-icon.png'
  'LICENSE'
)
sha256sums=(
  '254945f46e8a92f3b2e79d07c2776c9df6100549517915822547ba72ac7ff577'
  '52c86008b11f90f36b8a8f4cc43b1352d5fda9084c6e5691b806f5bca1a968b6'
  '935d8f2af0c703f9c39517ee57cc4930b19d02d533be930b63f0e82f93614b43'
)

prepare() {
  chmod +x "$srcdir/$_appimage_name"
  rm -rf "$srcdir/squashfs-root"
  "$srcdir/$_appimage_name" --appimage-extract >/dev/null

  if [[ ! -d "$srcdir/squashfs-root" ]]; then
    echo "Failed to extract AppImage payload." >&2
    return 1
  fi
}

package() {
  install -d "$pkgdir/opt/$pkgname"
  cp -a "$srcdir/squashfs-root/." "$pkgdir/opt/$pkgname/"

  # Preserve upstream execute bits while ensuring the payload stays readable.
  chmod -R a+rX "$pkgdir/opt/$pkgname"

  install -Dm755 /dev/stdin "$pkgdir/usr/bin/t3code" << 'EOF'
#!/usr/bin/env bash
set -euo pipefail

appdir='/opt/t3code-bin'
export APPDIR="$appdir"

if [[ -z "${CODEX_CLI_PATH-}" ]] && command -v codex >/dev/null 2>&1; then
  export CODEX_CLI_PATH="$(command -v codex)"
fi

export PATH="$appdir:$appdir/usr/bin:$appdir/usr/sbin:$PATH"
export XDG_DATA_DIRS="$appdir/usr/share${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
export GSETTINGS_SCHEMA_DIR="$appdir/usr/share/glib-2.0/schemas${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}"

extra_flags=()
if [[ -n "${WAYLAND_DISPLAY-}" || "${XDG_SESSION_TYPE-}" == "wayland" ]]; then
  extra_flags+=(--enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=wayland)
else
  extra_flags+=(--ozone-platform-hint=auto)
fi

exec "$appdir/t3code" --no-sandbox "${extra_flags[@]}" "$@"
EOF

  ln -s t3code "$pkgdir/usr/bin/t3-code-desktop"

  install -Dm644 "$srcdir/t3code-icon.png" \
    "$pkgdir/usr/share/icons/hicolor/1024x1024/apps/t3code.png"
  ln -s t3code.png \
    "$pkgdir/usr/share/icons/hicolor/1024x1024/apps/t3-code-desktop.png"
  install -Dm644 "$srcdir/t3code-icon.png" \
    "$pkgdir/usr/share/pixmaps/t3code.png"
  ln -s t3code.png "$pkgdir/usr/share/pixmaps/t3-code-desktop.png"

  install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/t3code.desktop" << 'EOF'
[Desktop Entry]
Name=T3 Code
Comment=T3 Code desktop build
Exec=t3code %U
Terminal=false
Type=Application
Icon=t3code
StartupWMClass=t3code
Categories=Development;
EOF

  install -Dm644 "$srcdir/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}