Skip to content

Nix CI

Nix CI #648

Workflow file for this run

jobs:
nixCI:
name: Nix CI
permissions:
actions: write
contents: write
pull-requests: write
runs-on: ubuntu-latest
env:
branch_is_not_master: ${{ github.ref_name != 'master' }}
steps:
- name: Checkout this repo
uses: actions/checkout@v4
- name: Install Nix
uses: nixbuild/nix-quick-install-action@v27
with:
nix_conf: |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
substituters = https://cache.nixos.org/ https://nix-community.cachix.org https://cache.iog.io
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=
- name: Restore and cache Nix store
uses: nix-community/cache-nix-action@v5
with:
primary-key: nix-update-${{ hashfiles('**/flake.nix', '**/flake.lock', 'haskell/**/*') }}
restore-prefixes-first-match: nix-update-
gc-max-store-size-linux: 7500000000
purge: true
purge-prefixes: nix-update-
purge-created: 0
purge-primary-key: never
- name: Remove old cache profiles
run: rm -rf /nix/var/nix/profiles/cache
- name: Configure git
if: always() && env.branch_is_not_master && runner.os == 'Linux'
env:
# required for gh
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
${{ github.head_ref && format('gh pr checkout {0}', github.event.pull_request.number) || ''}}
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
- name: Pull latest changes
run: git pull --rebase --autostash
- name: Update flake locks
run: |-
nix profile install nix-dev/#updateLocks
nix run nix-dev/#updateLocks
- name: Format Nix files
run: |-
nix profile install nix-dev/#format
nix run nix-dev/#format
- name: Update extensions
run: |-
nix profile install nix-dev/#updateExtensions
nix run nix-dev/#updateExtensions -- --config .github/config.yaml
- name: Update extra extensions
run: |-
nix profile install nix-dev/#updateExtraExtensions
nix run nix-dev/#updateExtraExtensions
- name: Commit and push changes
run: |-
git pull --rebase --autostash
git add .
git commit \
-m "action" \
-m "Update flake locks" \
-m "Update extensions" \
-m "Update extra extensions" \
|| echo "commit failed!"
git push
- name: Check template VSCodium
run: |
nix profile install template/
nix run template/ -- --list-extensions
- name: Save flakes
run: |-
nix profile install nix-dev/#saveFlakes
nix run nix-dev/#saveFlakes
name: Nix CI
"on":
pull_request:
push:
branches: [master]
schedule:
- cron: 0 0 * * *
workflow_dispatch: {}