diff --git a/.fpm b/.fpm index c94efa12..25f71b4a 100644 --- a/.fpm +++ b/.fpm @@ -5,5 +5,5 @@ --url "https://www.zerotier.com" --maintainer "ZeroTier, Inc " -target/release/zerotier_desktop_ui=/usr/bin/zerotier_desktop_ui ZeroTierIcon.png=/usr/share/zerotier/ZeroTierIcon.png zerotier-ui.desktop=/usr/share/applications/zerotier-ui.desktop +target/release/zerotier_desktop_ui=/usr/bin/zerotier_desktop_ui zerotier.png=/usr/share/icons/hicolor/512x512/apps/zerotier.png zerotier-ui.desktop=/usr/share/applications/zerotier-ui.desktop diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml new file mode 100644 index 00000000..8e285fc7 --- /dev/null +++ b/.github/workflows/build_linux.yml @@ -0,0 +1,48 @@ +name: Build Arch Package & AppImage (Git) + +on: + workflow_dispatch: + +jobs: + build: + name: Build with makepkg + runs-on: ubuntu-latest + + container: + image: archlinux:latest + + steps: + - name: Install base dependencies + run: | + pacman -Syu --noconfirm archlinux-keyring + pacman -Syu --noconfirm base-devel git sudo wget zsync + + - name: Create build user + run: | + useradd -m builder + echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Fix permissions + run: chown -R builder:builder . + + - name: Build package (makepkg -si) + run: | + sudo -u builder bash <<'EOF' + set -e + cd pkg/git + makepkg -si --noconfirm + cd ../AppImage/ + chmod +x AppImage.sh + ./AppImage.sh + EOF + + - name: Upload package artifact + uses: actions/upload-artifact@v4 + with: + name: arch-package + path: | + pkg/git/*.pkg.tar.zst + pkg/AppImage/dist/*.AppImage diff --git a/.gitignore b/.gitignore index 42c3a894..74f27d7a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,23 @@ *.exe *.deb .vscode/ +*.kate-swp + +# git dir +pkg/git/*.tar.zst +pkg/git/pkg +pkg/git/src +pkg/git/cargo-home +pkg/git/DesktopUI + +# AppImage dir +pkg/AppImage/*.tar.zst +pkg/AppImage/.MTREE +pkg/AppImage/.PKGINFO +pkg/AppImage/.BUILDINFO +pkg/AppImage/usr/ +pkg/AppImage/AppDir/ +pkg/AppImage/quick-sharun + +# dist dir +pkg/AppImage/dist diff --git a/ZeroTierIcon.png b/ZeroTierIcon.png deleted file mode 100644 index b7f06d76..00000000 Binary files a/ZeroTierIcon.png and /dev/null differ diff --git a/pkg/AppImage/AppImage.sh b/pkg/AppImage/AppImage.sh new file mode 100755 index 00000000..486ec80a --- /dev/null +++ b/pkg/AppImage/AppImage.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +# You might need to restart your pc if sharun doesn't create `AppDir` in this directory (It should create dirs on its own) + +# Run git.yml and extract the pkg.tar.zst generated from that to the folder this .sh file is in. As a result a folder named `usr` should be in the same folder as this script. +set -eu + +ARCH="$(uname -m)" +SHARUN="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/main/useful-tools/quick-sharun.sh" + +export ADD_HOOKS="self-updater.bg.hook" +#export UPINFO="gh-releases-zsync|${GITHUB_REPOSITORY%/*}|${GITHUB_REPOSITORY#*/}|latest|*$ARCH.AppImage.zsync" +export OUTNAME=zerotier-desktop-ui-anylinux-"$ARCH".AppImage +export DESKTOP=/usr/share/applications/zerotier-ui.desktop +export ICON=/usr/share/icons/hicolor/512x512/apps/zerotier.png +export OUTPATH=./dist + +#Remove leftovers +rm -rf AppDir dist appinfo + +# ADD LIBRARIES +wget --retry-connrefused --tries=30 "$SHARUN" -O ./quick-sharun +chmod +x ./quick-sharun + +# Point to binaries +./quick-sharun /usr/bin/zerotier_desktop_ui + +# Make AppImage +./quick-sharun --make-appimage + +echo "All Done!" diff --git a/pkg/git/PKGBUILD b/pkg/git/PKGBUILD new file mode 100644 index 00000000..4e6d2c37 --- /dev/null +++ b/pkg/git/PKGBUILD @@ -0,0 +1,37 @@ +# Maintainer: twig + +: ${CARGO_HOME:=$SRCDEST/cargo-home} +: ${CARGO_TARGET_DIR:=target} +: ${RUSTUP_TOOLCHAIN:=stable} +export CARGO_HOME CARGO_TARGET_DIR RUSTUP_TOOLCHAIN + +pkgname=zerotier-desktop-ui-git +pkgver=1.8.4.r103.gb2a7a30 +pkgrel=1 +pkgdesc='Official ZeroTier Desktop Tray Application and UI' +url='https://github.com/zerotier/DesktopUI' +source=('git+https://github.com/zerotier/DesktopUI.git') +arch=('any') +license=('MPL2') +makedepends=('rust' 'meson' 'git' 'perl' 'nasm') +depends=('zerotier-one' 'webkit2gtk' 'libappindicator-gtk3' 'libayatana-appindicator' 'gtk3' 'glib2') +conflicts=('zerotier-desktop-ui') +options=('!lto') +sha256sums=(SKIP) + +build () { + cd DesktopUI + make official +} + +package() { + cd DesktopUI + install -Dm755 release/release/zerotier_desktop_ui "${pkgdir}/usr/bin/zerotier_desktop_ui" + install -Dm644 zerotier-ui.desktop "${pkgdir}/usr/share/applications/zerotier-ui.desktop" + install -Dm644 zerotier.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/zerotier.png" +} + +pkgver() { + cd DesktopUI + git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' +} diff --git a/zerotier-ui.desktop b/zerotier-ui.desktop index 7b8ab03f..5eb655d9 100644 --- a/zerotier-ui.desktop +++ b/zerotier-ui.desktop @@ -2,6 +2,9 @@ Type=Application Encoding=UTF-8 Name=ZeroTier UI -Exec=/usr/bin/zerotier_desktop_ui -Icon=/usr/share/zerotier/ZeroTierIcon.png -Categories=System; +Exec=zerotier_desktop_ui +StartupNotify=false +StartupWMClass=zerotier_desktop_ui +Terminal=false +Icon=zerotier +Categories=Network;System; diff --git a/zerotier.png b/zerotier.png new file mode 100644 index 00000000..44c86c8c Binary files /dev/null and b/zerotier.png differ