# title: install
# desc: generate a guix installer image
# adapted from https://github.com/SystemCrafters/guix-installer/

name: installer

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: docker

    container:
      image: alpine:3.21
      options: "--cap-add=SYS_ADMIN" # needed for guix time-machine

    steps:
      - name: Install dependencies
        run: |
          apk add --no-cache git nodejs

      - name: Git checkout
        uses: actions/checkout@v4

      - name: Guix cache
        uses: actions/cache@v4
        with:
          path: ~/.cache/guix
          key: guix-cache-${{ github.sha }}
          restore-keys: |
            guix-cache

      - name: Install guix
        run: |
          apk add --no-cache guix openrc

          cat <<EOF > /etc/init.d/guix-daemon
          #!/sbin/openrc-run
          start(){ guix-daemon --build-users-group=guixbuild & }
          EOF
          chmod +x /etc/init.d/guix-daemon

          rc-update add guix-daemon
          openrc boot

      - name: Build ISO
        run: |
          ./scripts/build-installer

      - name: Save artifact
        uses: actions/upload-artifact@v4
        with:
          name: installer
          path: guix-installer-*.iso