- Allow rune to cross compile ARM binaries - Github workflow only compiles x86 for now
100 lines
No EOL
2.9 KiB
YAML
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 |