Compare commits

...

5 commits

3 changed files with 71 additions and 39 deletions

30
.github/workflows/build-host.yml vendored Normal file
View file

@ -0,0 +1,30 @@
name: Build host
on:
workflow_call:
inputs:
hosts:
required: true
type: string
secrets:
CACHIX_AUTH_TOKEN:
required: true
jobs:
build-host:
name: ${{ matrix.host }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
host: ${{ fromJson(inputs.hosts) }}
steps:
- uses: actions/checkout@v5
- uses: cachix/install-nix-action@v31
with:
extra_nix_config: experimental-features = nix-command flakes pipe-operators
- uses: cachix/cachix-action@v15
with:
name: sebastian-stork
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
useDaemon: false
- name: Build host
run: nix build .#nixosConfigurations.${{ matrix.host }}.config.system.build.toplevel --print-build-logs

View file

@ -8,20 +8,36 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
checks: ${{ steps.checks.outputs.checks }} checks: ${{ steps.checks.outputs.checks }}
hosts: ${{ steps.hosts.outputs.hosts }} servers: ${{ steps.servers.outputs.servers }}
workstations: ${{ steps.workstations.outputs.workstations }}
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v5
- uses: cachix/install-nix-action@v31 - uses: cachix/install-nix-action@v31
with: with:
extra_nix_config: experimental-features = nix-command flakes pipe-operators extra_nix_config: experimental-features = nix-command flakes pipe-operators
- id: checks - name: Get checks
id: checks
run: | run: |
checks=$(nix flake show --json | jq -c '.checks."x86_64-linux" | keys') checks=$(nix flake show --json | jq -c '.checks."x86_64-linux" | keys')
printf "checks=%s" "$checks" >> "$GITHUB_OUTPUT" printf "checks=%s" "$checks" >> "$GITHUB_OUTPUT"
- id: hosts - name: Get servers
id: servers
run: | run: |
hosts=$(nix flake show --json | jq -c '.nixosConfigurations | keys') servers=$(nix eval .#nixosConfigurations --apply 'configs:
printf "hosts=%s" "$hosts" >> "$GITHUB_OUTPUT" configs
|> builtins.attrNames
|> builtins.filter (name: configs.${name}.config.custom.services.comin.enable)
' --json)
printf "servers=%s" "$servers" >> "$GITHUB_OUTPUT"
- name: Get workstations
id: workstations
run: |
workstations=$(nix eval .#nixosConfigurations --apply 'configs:
configs
|> builtins.attrNames
|> builtins.filter (name: !configs.${name}.config.custom.services.comin.enable)
' --json)
printf "workstations=%s" "$workstations" >> "$GITHUB_OUTPUT"
build-check: build-check:
needs: parse-flake needs: parse-flake
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -39,43 +55,28 @@ jobs:
name: sebastian-stork name: sebastian-stork
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
useDaemon: false useDaemon: false
- run: nix build .#checks.x86_64-linux.${{ matrix.check }} --print-build-logs - name: Build check
build-host: run: nix build .#checks.x86_64-linux.${{ matrix.check }} --print-build-logs
build-server:
needs: parse-flake needs: parse-flake
runs-on: ubuntu-latest uses: ./.github/workflows/build-host.yml
strategy: with:
fail-fast: false hosts: ${{ needs.parse-flake.outputs.servers }}
matrix: secrets:
host: ${{ fromJson(needs.parse-flake.outputs.hosts) }} CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
steps: build-workstation:
- uses: actions/checkout@v5 needs: parse-flake
- uses: cachix/install-nix-action@v31 uses: ./.github/workflows/build-host.yml
with: with:
extra_nix_config: experimental-features = nix-command flakes pipe-operators hosts: ${{ needs.parse-flake.outputs.workstations }}
- uses: cachix/cachix-action@v15 secrets:
with: CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
name: sebastian-stork
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
useDaemon: false
- run: nix build .#nixosConfigurations.${{ matrix.host }}.config.system.build.toplevel --print-build-logs
flake-check:
needs: build-check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: cachix/install-nix-action@v31
with:
extra_nix_config: experimental-features = nix-command flakes pipe-operators
- uses: cachix/cachix-action@v15
with:
name: sebastian-stork
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- run: nix flake check --keep-going --print-build-logs
deploy: deploy:
needs: [build-host, flake-check] needs: [build-check, build-server]
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: write contents: write
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v5
- run: git push origin HEAD:deploy --force - name: Push to deploy branch
run: git push origin HEAD:deploy --force

View file

@ -13,7 +13,8 @@ jobs:
- uses: cachix/install-nix-action@v31 - uses: cachix/install-nix-action@v31
with: with:
extra_nix_config: experimental-features = nix-command flakes pipe-operators extra_nix_config: experimental-features = nix-command flakes pipe-operators
- run: | - name: Update and push
run: |
git config user.name "github-actions[bot]" git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
nix flake update --commit-lock-file nix flake update --commit-lock-file