summarylogtreecommitdiffstats
path: root/PKGBUILD
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
}