UI polish: fonts, click behavior, hide drun prompt #73
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build ISO | |
| on: | |
| push: | |
| branches: [main] | |
| tags: ['v*'] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| # Use self-hosted runner for main branch pushes (fast, local) | |
| # Use GitHub cloud for PRs (safe, no access to self-hosted) | |
| runs-on: ${{ (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && 'self-hosted' || 'ubuntu-latest' }} | |
| container: | |
| image: archlinux:latest | |
| options: --privileged -v /home/dan/projects/jumpdev-os/out:/host-out | |
| # Volume mount makes ISO available on host for QEMU testing | |
| steps: | |
| - name: Install dependencies | |
| run: | | |
| pacman -Syu --noconfirm | |
| pacman -S --noconfirm archiso git grub mtools dosfstools squashfs-tools | |
| - name: Setup Chaotic-AUR | |
| run: | | |
| # Initialize pacman keyring | |
| pacman-key --init | |
| pacman-key --populate archlinux | |
| # Import Chaotic-AUR key (try multiple keyservers) | |
| pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com || \ | |
| pacman-key --recv-key 3056513887B78AEB --keyserver keys.openpgp.org || \ | |
| pacman-key --recv-key 3056513887B78AEB --keyserver pgp.mit.edu | |
| pacman-key --lsign-key 3056513887B78AEB | |
| # Install keyring and mirrorlist | |
| pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' | |
| pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst' | |
| # Add Chaotic-AUR to system pacman.conf (for build environment) | |
| echo -e '\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' >> /etc/pacman.conf | |
| # Sync repos | |
| pacman -Sy | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Build hyprbars plugin | |
| run: | | |
| # Install build dependencies | |
| pacman -S --noconfirm base-devel cmake meson cpio hyprland hyprland-protocols hyprlang libdisplay-info hyprcursor hyprwayland-scanner aquamarine pkgconf glaze | |
| # Clone hyprland-plugins | |
| git clone --depth 1 https://github.com/hyprwm/hyprland-plugins.git /tmp/hyprland-plugins | |
| # Build hyprbars using cmake | |
| cd /tmp/hyprland-plugins/hyprbars | |
| cmake -B build | |
| cmake --build build | |
| # Copy built plugin to airootfs | |
| mkdir -p $GITHUB_WORKSPACE/archiso/airootfs/usr/lib/hyprland-plugins | |
| cp build/libhyprbars.so $GITHUB_WORKSPACE/archiso/airootfs/usr/lib/hyprland-plugins/hyprbars.so | |
| - name: Prepare build environment | |
| run: | | |
| # Copy configs directly to jump user's home (not skel - user is pre-defined) | |
| mkdir -p archiso/airootfs/home/jump/.config | |
| # Copy application configs | |
| cp -r configs/hypr archiso/airootfs/home/jump/.config/ | |
| cp -r configs/waybar archiso/airootfs/home/jump/.config/ | |
| cp -r configs/kitty archiso/airootfs/home/jump/.config/ | |
| cp -r configs/nvim archiso/airootfs/home/jump/.config/ | |
| cp -r configs/rofi archiso/airootfs/home/jump/.config/ | |
| cp -r configs/scripts archiso/airootfs/home/jump/.config/ | |
| cp -r configs/yazi archiso/airootfs/home/jump/.config/ 2>/dev/null || true | |
| cp -r configs/btop archiso/airootfs/home/jump/.config/ 2>/dev/null || true | |
| cp -r configs/lazygit archiso/airootfs/home/jump/.config/ 2>/dev/null || true | |
| # Starship config | |
| cp configs/starship/starship.toml archiso/airootfs/home/jump/.config/ | |
| # Zsh configs | |
| cp configs/zsh/.zshrc archiso/airootfs/home/jump/ | |
| cp configs/zsh/.zshenv archiso/airootfs/home/jump/ | |
| # Set ownership (jump user is uid/gid 1000) | |
| chown -R 1000:1000 archiso/airootfs/home/jump/ | |
| # Make scripts executable (AFTER chown to ensure it sticks) | |
| chmod +x archiso/airootfs/home/jump/.config/scripts/*.sh | |
| - name: Build ISO | |
| run: | | |
| # Build directly to volume mount on self-hosted, otherwise to out/ | |
| if [ -d "/host-out" ]; then | |
| rm -f /host-out/*.iso /host-out/SHA256SUMS | |
| mkarchiso -v -w /tmp/archiso-work -o /host-out/ archiso/ | |
| cd /host-out && sha256sum *.iso > SHA256SUMS && cat SHA256SUMS | |
| echo "ISO available at: /home/dan/projects/jumpdev-os/out/" | |
| ls -lh /host-out/ | |
| # Copy to workspace for artifact upload (needed for releases) | |
| mkdir -p $GITHUB_WORKSPACE/out | |
| cp /host-out/*.iso /host-out/SHA256SUMS $GITHUB_WORKSPACE/out/ | |
| else | |
| mkarchiso -v -w /tmp/archiso-work -o out/ archiso/ | |
| cd out && sha256sum *.iso > SHA256SUMS && cat SHA256SUMS | |
| fi | |
| - name: Upload ISO artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: jumpdev-os-iso | |
| path: | | |
| out/*.iso | |
| out/SHA256SUMS | |
| retention-days: 7 | |
| release: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Download ISO artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: jumpdev-os-iso | |
| path: out/ | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| files: | | |
| out/*.iso | |
| out/SHA256SUMS | |
| generate_release_notes: true | |
| draft: false | |
| prerelease: ${{ contains(github.ref, '-rc') || contains(github.ref, '-beta') || contains(github.ref, '-alpha') }} |