name: Build Pi NixOS Image on: push: paths: - 'pi-imgs/**' - '.forgejo/workflows/build-pi-img.yml' jobs: sync: runs-on: debian-latest-arm steps: - name: Checkout code uses: actions/checkout@v3.5.3 with: ref: trunk - name: "Cache Nix store" uses: actions/cache@v3.0.8 id: nix-cache with: path: /tmp/nixcache key: "pi-nix-cache-v1" - name: Install prerequisites run: apt update && apt install -y sudo zstd - name: Install Nix uses: https://github.com/cachix/install-nix-action@v22 with: extra_nix_config: "experimental-features = nix-command flakes" nix_path: nixpkgs=channel:nixos-23.05 - name: Remove access_tokens run: sed -i '/^access-tokens/d' /etc/nix/nix.conf - name: "Import Nix store cache" if: "steps.nix-cache.outputs.cache-hit == 'true'" run: "nix-store --import < /tmp/nixcache" - name: Build image run: nix build .#packages.aarch64-linux.raspberry-pi - uses: https://github.com/actions/upload-artifact@v3.1.2 with: name: nixos-pi-23.05-${{ env.GITHUB_SHA }}.img path: result/sd-image/*.img - name: "Export Nix store cache" if: "steps.nix-cache.outputs.cache-hit != 'true'" run: "nix-store --export $(find /nix/store -maxdepth 1 -name '*-*') > /tmp/nixcache"