on: push: {} pull_request: {} workflow_dispatch: {} name: Test jobs: required: name: "Required Checks: Test" runs-on: namespace-profile-ghostty-xsm needs: - build-bench - build-dist - build-flatpak - build-linux - build-linux-libghostty - build-nix - build-snap - build-macos - build-macos-tahoe - build-macos-matrix - build-windows - flatpak-check-zig-cache - flatpak - test - test-gtk - test-sentry-linux - test-macos - prettier - alejandra - typos - translations - blueprint-compiler - test-pkg-linux - test-debian-12 - zig-fmt steps: - id: status name: Determine status run: | results=$(tr -d '\n' <<< '${{ toJSON(needs.*.result) }}') if ! grep -q -v -E '(failure|cancelled)' <<< "$results"; then result="failed" else result="success" fi { echo "result=${result}" echo "results=${results}" } | tee -a "$GITHUB_OUTPUT" - if: always() && steps.status.outputs.result != 'success' name: Check for failed status run: | echo "One or more required build workflows failed: ${{ steps.status.outputs.results }}" exit 1 build-bench: # We build benchmarks on large because it uses ReleaseFast runs-on: namespace-profile-ghostty-lg needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Build Benchmarks run: nix develop -c zig build -Demit-bench build-flatpak: strategy: fail-fast: false runs-on: namespace-profile-ghostty-sm needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Build with Flatpak run: | nix develop -c \ zig build \ -Dflatpak=true build-linux: strategy: fail-fast: false matrix: os: [namespace-profile-ghostty-md, namespace-profile-ghostty-md-arm64] runs-on: ${{ matrix.os }} needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Test Build run: nix develop -c zig build build-linux-libghostty: runs-on: namespace-profile-ghostty-md needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Build Libghostty run: nix develop -c zig build -Dapp-runtime=none build-nix: strategy: fail-fast: false matrix: os: [namespace-profile-ghostty-md, namespace-profile-ghostty-md-arm64] runs-on: ${{ matrix.os }} needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Test release NixOS package build run: nix build .#ghostty-releasefast - name: Check version run: result/bin/ghostty +version | grep -q 'builtin.OptimizeMode.ReleaseFast' - name: Check to see if the binary has been stripped run: nm result/bin/.ghostty-wrapped 2>&1 | grep -q 'no symbols' - name: Test debug NixOS package build run: nix build .#ghostty-debug - name: Check version run: result/bin/ghostty +version | grep -q 'builtin.OptimizeMode.Debug' - name: Check to see if the binary has not been stripped run: nm result/bin/.ghostty-wrapped 2>&1 | grep -q 'main_ghostty.main' build-dist: runs-on: namespace-profile-ghostty-md needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Build and Check Source Tarball run: | rm -rf zig-out/dist nix develop -c zig build distcheck cp zig-out/dist/*.tar.gz ghostty-source.tar.gz - name: Upload artifact uses: actions/upload-artifact@v4 with: name: source-tarball path: |- ghostty-source.tar.gz build-macos: runs-on: namespace-profile-ghostty-macos-sequoia needs: test steps: - name: Checkout code uses: actions/checkout@v4 # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Xcode Select run: sudo xcode-select -s /Applications/Xcode_26.0.app - name: get the Zig deps id: deps run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT # GhosttyKit is the framework that is built from Zig for our native # Mac app to access. - name: Build GhosttyKit run: nix develop -c zig build --system ${{ steps.deps.outputs.deps }} # The native app is built with native Xcode tooling. This also does # codesigning. IMPORTANT: this must NOT run in a Nix environment. # Nix breaks xcodebuild so this has to be run outside. - name: Build Ghostty.app run: cd macos && xcodebuild -target Ghostty # Build the iOS target without code signing just to verify it works. - name: Build Ghostty iOS run: | cd macos xcodebuild -target Ghostty-iOS "CODE_SIGNING_ALLOWED=NO" build-macos-tahoe: runs-on: namespace-profile-ghostty-macos-tahoe needs: test steps: - name: Checkout code uses: actions/checkout@v4 # TODO(tahoe): https://github.com/NixOS/nix/issues/13342 - uses: DeterminateSystems/nix-installer-action@main with: determinate: true - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Xcode Select run: sudo xcode-select -s /Applications/Xcode_26.0.app - name: get the Zig deps id: deps run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT # GhosttyKit is the framework that is built from Zig for our native # Mac app to access. - name: Build GhosttyKit run: nix develop -c zig build --system ${{ steps.deps.outputs.deps }} # The native app is built with native Xcode tooling. This also does # codesigning. IMPORTANT: this must NOT run in a Nix environment. # Nix breaks xcodebuild so this has to be run outside. - name: Build Ghostty.app run: cd macos && xcodebuild -target Ghostty # Build the iOS target without code signing just to verify it works. - name: Build Ghostty iOS run: | cd macos xcodebuild -target Ghostty-iOS "CODE_SIGNING_ALLOWED=NO" build-macos-matrix: runs-on: namespace-profile-ghostty-macos-sequoia needs: test steps: - name: Checkout code uses: actions/checkout@v4 # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Xcode Select run: sudo xcode-select -s /Applications/Xcode_26.0.app - name: get the Zig deps id: deps run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT - name: Test All run: | nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=freetype nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_freetype nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_harfbuzz nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_noshape - name: Build All run: | nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=freetype nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_freetype nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_harfbuzz nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_noshape build-snap: strategy: fail-fast: false matrix: os: [namespace-profile-ghostty-snap, namespace-profile-ghostty-snap-arm64] runs-on: ${{ matrix.os }} needs: [test, build-dist] env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Download Source Tarball Artifacts uses: actions/download-artifact@v4 with: name: source-tarball - name: Extract tarball run: | mkdir dist tar --verbose --extract --strip-components 1 --directory dist --file ghostty-source.tar.gz - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig - run: sudo apt install -y udev - run: sudo systemctl start systemd-udevd # Workaround until this is fixed: https://github.com/canonical/lxd-pkg-snap/pull/789 - run: | _LXD_SNAP_DEVCGROUP_CONFIG="/var/lib/snapd/cgroup/snap.lxd.device" sudo mkdir -p /var/lib/snapd/cgroup echo 'self-managed=true' | sudo tee "${_LXD_SNAP_DEVCGROUP_CONFIG}" - uses: snapcore/action-build@v1 with: path: dist build-windows: runs-on: windows-2022 # this will not stop other jobs from running continue-on-error: true needs: test steps: - name: Checkout code uses: actions/checkout@v4 # This could be from a script if we wanted to but inlining here for now # in one place. # Using powershell so that we do not need to install WSL components. Also, # WSLv1 is only installed on Github runners. - name: Install zig shell: pwsh run: | # Get the zig version from build.zig so that it only needs to be updated $fileContent = Get-Content -Path "build.zig" -Raw $pattern = 'buildpkg\.requireZig\("(.*?)"\);' $zigVersion = [regex]::Match($fileContent, $pattern).Groups[1].Value $version = "zig-windows-x86_64-$zigVersion" Write-Output $version $uri = "https://ziglang.org/download/$zigVersion/$version.zip" Invoke-WebRequest -Uri "$uri" -OutFile ".\zig-windows.zip" Expand-Archive -Path ".\zig-windows.zip" -DestinationPath ".\" -Force Remove-Item -Path ".\zig-windows.zip" Rename-Item -Path ".\$version" -NewName ".\zig" Write-Host "Zig installed." .\zig\zig.exe version - name: Generate build testing script shell: pwsh run: | # Generate a script so that we can swallow the errors $scriptContent = @" .\zig\zig.exe build test 2>&1 | Out-File -FilePath "build.log" -Append exit 0 "@ $scriptPath = "zigbuild.ps1" # Write the script content to a file $scriptContent | Set-Content -Path $scriptPath Write-Host "Script generated at: $scriptPath" - name: Test Windows shell: pwsh run: .\zigbuild.ps1 -ErrorAction SilentlyContinue - name: Generate build script shell: pwsh run: | # Generate a script so that we can swallow the errors $scriptContent = @" .\zig\zig.exe build 2>&1 | Out-File -FilePath "build.log" -Append exit 0 "@ $scriptPath = "zigbuild.ps1" # Write the script content to a file $scriptContent | Set-Content -Path $scriptPath Write-Host "Script generated at: $scriptPath" - name: Build Windows shell: pwsh run: .\zigbuild.ps1 -ErrorAction SilentlyContinue - name: Dump logs shell: pwsh run: Get-Content -Path ".\build.log" test: if: github.repository == 'ghostty-org/ghostty' runs-on: namespace-profile-ghostty-md env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: test run: nix develop -c zig build -Dapp-runtime=none test - name: Test GTK Build run: nix develop -c zig build -Dapp-runtime=gtk -Demit-docs # This relies on the cache being populated by the commands above. - name: Test System Build run: nix develop -c zig build --system ${ZIG_GLOBAL_CACHE_DIR}/p test-gtk: strategy: fail-fast: false matrix: x11: ["true", "false"] wayland: ["true", "false"] name: GTK x11=${{ matrix.x11 }} wayland=${{ matrix.wayland }} runs-on: namespace-profile-ghostty-sm needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Test GTK Build run: | nix develop -c \ zig build \ -Dapp-runtime=gtk \ -Dgtk-x11=${{ matrix.x11 }} \ -Dgtk-wayland=${{ matrix.wayland }} test-sentry-linux: strategy: fail-fast: false matrix: sentry: ["true", "false"] name: Build -Dsentry=${{ matrix.sentry }} runs-on: namespace-profile-ghostty-sm needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Test Sentry Build run: | nix develop -c zig build -Dsentry=${{ matrix.sentry }} test-macos: runs-on: namespace-profile-ghostty-macos-sequoia needs: test steps: - name: Checkout code uses: actions/checkout@v4 # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Xcode Select run: sudo xcode-select -s /Applications/Xcode_26.0.app - name: get the Zig deps id: deps run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT - name: test run: nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} zig-fmt: if: github.repository == 'ghostty-org/ghostty' runs-on: namespace-profile-ghostty-xsm timeout-minutes: 60 env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - uses: actions/checkout@v4 # Check out repo so we can lint it - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" skipPush: true useDaemon: false # sometimes fails on short jobs - name: zig fmt run: nix develop -c zig fmt --check . prettier: if: github.repository == 'ghostty-org/ghostty' runs-on: namespace-profile-ghostty-xsm timeout-minutes: 60 env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - uses: actions/checkout@v4 # Check out repo so we can lint it - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" skipPush: true useDaemon: false # sometimes fails on short jobs - name: prettier check run: nix develop -c prettier --check . alejandra: if: github.repository == 'ghostty-org/ghostty' runs-on: namespace-profile-ghostty-xsm timeout-minutes: 60 env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - uses: actions/checkout@v4 # Check out repo so we can lint it - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" skipPush: true useDaemon: false # sometimes fails on short jobs - name: alejandra check run: nix develop -c alejandra --check . typos: if: github.repository == 'ghostty-org/ghostty' runs-on: namespace-profile-ghostty-xsm timeout-minutes: 60 env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - uses: actions/checkout@v4 # Check out repo so we can lint it - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" skipPush: true useDaemon: false # sometimes fails on short jobs - name: typos check run: nix develop -c typos translations: if: github.repository == 'ghostty-org/ghostty' runs-on: namespace-profile-ghostty-xsm timeout-minutes: 60 env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - uses: actions/checkout@v4 # Check out repo so we can lint it - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" skipPush: true useDaemon: false # sometimes fails on short jobs - name: check translations run: nix develop -c .github/scripts/check-translations.sh blueprint-compiler: if: github.repository == 'ghostty-org/ghostty' runs-on: namespace-profile-ghostty-xsm timeout-minutes: 60 env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - uses: actions/checkout@v4 # Check out repo so we can lint it - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" skipPush: true useDaemon: false # sometimes fails on short jobs - name: check blueprints run: nix develop -c ./nix/build-support/check-blueprints.sh - name: check unchanged run: git diff --exit-code test-pkg-linux: strategy: fail-fast: false matrix: pkg: ["wuffs"] name: Test pkg/${{ matrix.pkg }} runs-on: namespace-profile-ghostty-sm needs: test env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig # Install Nix and use that to run our tests so our environment matches exactly. - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" - name: Test ${{ matrix.pkg }} Build run: | nix develop -c sh -c "cd pkg/${{ matrix.pkg }} ; zig build test" test-debian-12: name: Test build on Debian 12 runs-on: namespace-profile-ghostty-sm needs: [test, build-dist] steps: - name: Install and configure Namespace CLI uses: namespacelabs/nscloud-setup@v0 - name: Configure Namespace powered Buildx uses: namespacelabs/nscloud-setup-buildx-action@v0 - name: Download Source Tarball Artifacts uses: actions/download-artifact@v4 with: name: source-tarball - name: Extract tarball run: | mkdir dist tar --verbose --extract --strip-components 1 --directory dist --file ghostty-source.tar.gz - name: Build and push uses: docker/build-push-action@v6 with: context: dist file: dist/src/build/docker/debian/Dockerfile build-args: | DISTRO_VERSION=12 flatpak-check-zig-cache: if: github.repository == 'ghostty-org/ghostty' runs-on: namespace-profile-ghostty-xsm env: ZIG_LOCAL_CACHE_DIR: /zig/local-cache ZIG_GLOBAL_CACHE_DIR: /zig/global-cache steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Cache uses: namespacelabs/nscloud-cache-action@v1.2.8 with: path: | /nix /zig - name: Setup Nix uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - uses: cachix/cachix-action@v16 with: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" useDaemon: false # sometimes fails on short jobs - name: Check Flatpak Zig Dependencies run: nix develop -c ./flatpak/build-support/check-zig-cache.sh flatpak: if: github.repository == 'ghostty-org/ghostty' name: "Flatpak" container: image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-47 options: --privileged strategy: fail-fast: false matrix: variant: - arch: x86_64 runner: namespace-profile-ghostty-md - arch: aarch64 runner: namespace-profile-ghostty-md-arm64 runs-on: ${{ matrix.variant.runner }} needs: [flatpak-check-zig-cache, test] steps: - uses: actions/checkout@v4 - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: com.mitchellh.ghostty manifest-path: flatpak/com.mitchellh.ghostty.yml cache-key: flatpak-builder-${{ github.sha }} arch: ${{ matrix.variant.arch }} verbose: true