blob: b6e15678d83d5e940f30eacc820dee940d1abb3c (
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
|
# Maintainer: Parker Hurst <parker at example dot com>
pkgname=physica
pkgver=1.0
pkgrel=1
pkgdesc="Physical game cartridge manager for PC games - turn USB drives into plug-and-play game cartridges"
arch=('any')
url="https://github.com/parkerHurst/Physica"
license=('MIT')
depends=(
'python>=3.11'
'python-dbus'
'python-gobject'
'python-pyudev'
'python-psutil'
'python-toml'
'python-dateutil'
'gtk4'
'libadwaita'
)
makedepends=('git')
optdepends=(
'wine: Windows game compatibility'
'proton: Steam Proton for better Windows game support'
)
provides=('physica')
conflicts=('physica-git')
source=("$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz")
sha256sums=('723402c61a621d8e9df9db70200f117f8b5ad90ff4767b953e52178c5420d12c')
package() {
cd "$srcdir/Physica-$pkgver"
# Create installation directory
install -dm755 "$pkgdir/opt/physica"
# Install application files
cp -r service "$pkgdir/opt/physica/"
cp -r gtk-app "$pkgdir/opt/physica/"
cp -r scripts "$pkgdir/opt/physica/"
cp run_service.sh "$pkgdir/opt/physica/"
# Install documentation
install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
install -Dm644 CONTRIBUTING.md "$pkgdir/usr/share/doc/$pkgname/CONTRIBUTING.md"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
# Create virtual environment for dependencies
python -m venv "$pkgdir/opt/physica/venv"
# Install Python dependencies into venv
"$pkgdir/opt/physica/venv/bin/pip" install --no-cache-dir \
-r "$pkgdir/opt/physica/service/requirements.txt" \
-r "$pkgdir/opt/physica/gtk-app/requirements.txt"
# Create launcher scripts
install -dm755 "$pkgdir/usr/bin"
cat > "$pkgdir/usr/bin/physica-service" << 'EOF'
#!/bin/bash
VENV="/opt/physica/venv"
cd /opt/physica/service
exec "$VENV/bin/python" -u main.py "$@"
EOF
cat > "$pkgdir/usr/bin/physica" << 'EOF'
#!/bin/bash
VENV="/opt/physica/venv"
cd /opt/physica/gtk-app
exec "$VENV/bin/python" run.py "$@"
EOF
chmod +x "$pkgdir/usr/bin/physica-service"
chmod +x "$pkgdir/usr/bin/physica"
# Install desktop entry
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/physica.desktop" << 'EOF'
[Desktop Entry]
Name=Physica
Comment=Physical Game Cartridge Manager
Exec=physica
Icon=applications-games
Terminal=false
Type=Application
Categories=Game;Utility;
Keywords=games;cartridge;usb;steam;
EOF
# Install systemd user service (optional)
install -Dm644 /dev/stdin "$pkgdir/usr/lib/systemd/user/physica.service" << 'EOF'
[Unit]
Description=Physica Game Cartridge Service
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/physica-service
Restart=on-failure
[Install]
WantedBy=default.target
EOF
}
|