dot.nix/.github/workflows/build-iso.yml
Chris Toph dc35d4335f Enable ISO ARM cross-compilation & update CI config
- Allow rune to cross compile ARM binaries
- Github workflow only compiles x86 for now
2025-06-16 19:59:36 -04:00

100 lines
No EOL
2.9 KiB
YAML

name: Build NixOS ISOs (x86 only)
on:
push:
branches: [main]
paths:
- "iso/**"
- "hosts/global/**"
- "home/global/**"
- "modules/**"
- "flake.nix"
- "flake.lock"
workflow_dispatch:
jobs:
build-iso:
strategy:
matrix:
iso-type: [server, desktop]
arch: [x86]
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v9
- name: Setup Nix cache
uses: DeterminateSystems/magic-nix-cache-action@v2
- name: Build ISO (with retry)
uses: nick-fields/retry@v3
with:
timeout_minutes: 45
max_attempts: 3
retry_wait_seconds: 30
command: |
cd iso
nix build .#${{ matrix.iso-type }}-iso-x86 \
--print-build-logs \
--accept-flake-config
- name: Get ISO filename
id: iso-info
run: |
cd iso
ISO_PATH=$(nix build .#${{ matrix.iso-type }}-iso-x86 --print-out-paths --no-link)
ISO_FILE=$(find $ISO_PATH -name "*.iso" -o -name "*.iso.zst" | head -1)
ISO_NAME=$(basename "$ISO_FILE")
echo "iso-path=$ISO_FILE" >> $GITHUB_OUTPUT
echo "iso-name=$ISO_NAME" >> $GITHUB_OUTPUT
- name: Upload ISO as artifact
uses: actions/upload-artifact@v4
with:
name: nixos-${{ matrix.iso-type }}-${{ matrix.arch }}-iso
path: ${{ steps.iso-info.outputs.iso-path }}
retention-days: 30
create-release:
needs: build-iso
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: ./isos
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: ./isos/**/*.iso*
tag_name: ${{ github.ref_name }}
name: NixOS ISOs ${{ github.ref_name }}
body: |
## NixOS ISOs for ${{ github.ref_name }}
This release contains automatically built NixOS ISOs based on my configuration.
### Available ISOs:
- **Server ISO**: Minimal server environment with SSH access
- **Desktop ISO**: GNOME desktop environment for installation
- **Architecture**: x86_64 (Intel/AMD systems)
### Usage:
1. Download the appropriate ISO for your system
2. Flash to USB or boot in VM
3. Default credentials: user `nixos`, password `nixos`
4. SSH is enabled for remote installation
Note: ARM ISOs are not provided in this build. Users requiring ARM versions should build locally.
Built automatically from commit: ${{ github.sha }}
draft: false
prerelease: false