From dfabb8223778db4bf18ace06a2ff56a66f388e3a Mon Sep 17 00:00:00 2001 From: Youwes09 Date: Sun, 22 Feb 2026 16:51:34 -0600 Subject: [PATCH] [V1] PKGBUILD (Untested) --- PKGBUILD | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 PKGBUILD diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..59368e4 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,128 @@ +# Maintainer: shozikan +pkgname=moku +pkgver=0.1.0 +pkgrel=1 +pkgdesc="Native Linux manga reader frontend for Suwayomi-Server" +arch=('x86_64') +url="https://github.com/shozikan/Moku" +license=('MIT') +depends=( + 'webkit2gtk-4.1' + 'gtk3' + 'libayatana-appindicator' + 'java-runtime>=21' +) +makedepends=( + 'rust' + 'cargo' + 'nodejs' + 'pnpm' +) +source=( + "$pkgname-$pkgver.tar.gz::https://github.com/shozikan/Moku/archive/refs/tags/v$pkgver.tar.gz" + "suwayomi-server.jar::https://github.com/Suwayomi/Suwayomi-Server/releases/download/v2.1.1867/suwayomi-server-v2.1.1867.jar" + "jdk.tar.gz::https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.3%2B9/OpenJDK21U-jre_x64_linux_hotspot_21.0.3_9.tar.gz" +) +sha256sums=( + '0019dfc4b32d63c1392aa264aed2253c1e0c2fb09216f8e2cc269bbfb8bb49b5' + '51e307c2581e4e1a002991ab3e3a77503c8b074c42695987a984a7382d0ac5af' + 'f1af100c4afca2035f446967323230150cfe5872b5a664d98c86963e5c066e0d' +) + +prepare() { + cd "Moku-$pkgver" + pnpm install --frozen-lockfile +} + +build() { + cd "Moku-$pkgver" + + # Build frontend + pnpm build + + # Repack dist for Tauri + tar -czf packaging/frontend-dist.tar.gz -C dist . + + # Build Tauri binary + TAURI_SKIP_DEVSERVER_CHECK=true cargo build \ + --release \ + --manifest-path src-tauri/Cargo.toml +} + +package() { + cd "Moku-$pkgver" + + # Moku binary + install -Dm755 src-tauri/target/release/moku \ + "$pkgdir/usr/bin/moku" + + # Bundled JRE + install -dm755 "$pkgdir/usr/lib/moku/jre" + tar -xf "$srcdir/jdk.tar.gz" -C "$pkgdir/usr/lib/moku/jre" --strip-components=1 + + # Suwayomi server jar + install -Dm644 "$srcdir/suwayomi-server.jar" \ + "$pkgdir/usr/lib/moku/tachidesk/Suwayomi-Server.jar" + + # tachidesk-server wrapper script + install -dm755 "$pkgdir/usr/lib/moku/tachidesk/default-conf" + cat > "$pkgdir/usr/lib/moku/tachidesk/default-conf/server.conf" << 'EOF' +server.ip = "127.0.0.1" +server.port = 4567 +server.webUIEnabled = false +server.initialOpenInBrowserEnabled = false +server.systemTrayEnabled = false +server.downloadAsCbz = true +server.autoDownloadNewChapters = false +server.globalUpdateInterval = 12 +server.maxSourcesInParallel = 6 +server.extensionRepos = [] +EOF + + install -Dm755 /dev/stdin "$pkgdir/usr/bin/tachidesk-server" << 'EOF' +#!/bin/sh +DATA_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/moku/tachidesk" +mkdir -p "$DATA_DIR" + +if [ ! -f "$DATA_DIR/server.conf" ]; then + cp /usr/lib/moku/tachidesk/default-conf/server.conf "$DATA_DIR/server.conf" +fi + +sed -i \ + -e 's|server\.webUIEnabled.*|server.webUIEnabled = false|' \ + -e 's|server\.initialOpenInBrowserEnabled.*|server.initialOpenInBrowserEnabled = false|' \ + -e 's|server\.systemTrayEnabled.*|server.systemTrayEnabled = false|' \ + "$DATA_DIR/server.conf" + +grep -q 'server\.webUIEnabled' "$DATA_DIR/server.conf" || echo 'server.webUIEnabled = false' >> "$DATA_DIR/server.conf" +grep -q 'server\.initialOpenInBrowserEnabled' "$DATA_DIR/server.conf" || echo 'server.initialOpenInBrowserEnabled = false' >> "$DATA_DIR/server.conf" +grep -q 'server\.systemTrayEnabled' "$DATA_DIR/server.conf" || echo 'server.systemTrayEnabled = false' >> "$DATA_DIR/server.conf" + +unset DISPLAY +unset WAYLAND_DISPLAY +export _JAVA_OPTIONS="-Djava.awt.headless=true" +export JAVA_TOOL_OPTIONS="-Djava.awt.headless=true" + +exec /usr/lib/moku/jre/bin/java \ + -Djava.awt.headless=true \ + -Dapple.awt.UIElement=true \ + -Dsun.java2d.noddraw=true \ + -Dsun.awt.disablegui=true \ + -Dsuwayomi.tachidesk.config.server.rootDir="$DATA_DIR" \ + -jar /usr/lib/moku/tachidesk/Suwayomi-Server.jar +EOF + + # Desktop entry and icons + install -Dm644 packaging/dev.moku.app.desktop \ + "$pkgdir/usr/share/applications/dev.moku.app.desktop" + install -Dm644 src-tauri/icons/32x32.png \ + "$pkgdir/usr/share/icons/hicolor/32x32/apps/dev.moku.app.png" + install -Dm644 src-tauri/icons/128x128.png \ + "$pkgdir/usr/share/icons/hicolor/128x128/apps/dev.moku.app.png" + install -Dm644 src-tauri/icons/128x128@2x.png \ + "$pkgdir/usr/share/icons/hicolor/256x256/apps/dev.moku.app.png" + install -Dm644 packaging/dev.moku.app.metainfo.xml \ + "$pkgdir/usr/share/metainfo/dev.moku.app.metainfo.xml" + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +}