name: CI on: push: branches: [main] paths: - '.sources/**' - '**.lock' - '**.nix' pull_request: paths: - '.sources/**' - '**.lock' - '**.nix' workflow_dispatch: jobs: format: name: Format Nix files if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: token: ${{ secrets.PUSH_TOKEN }} - name: Set Git user info run: | git config user.name 'github-actions[bot]' git config user.email 'github-actions[bot]@users.noreply.github.com' - name: Get short revision id: rev run: echo "rev=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT" - name: Install Nix uses: cachix/install-nix-action@V27 - name: Format changes run: | nix run \ --inputs-from ./dev \ 'nixpkgs#nixfmt-rfc-style' -- . - name: Commit changes run: | if ! git diff --color=always --exit-code; then git commit -am "style: format ${{ steps.rev.outputs.rev }}" git push fi test: name: Test Modules strategy: fail-fast: false matrix: os: [macos-latest, ubuntu-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@V27 - name: Setup cache uses: DeterminateSystems/magic-nix-cache-action@v7 - name: Run tests run: | nix run \ --inputs-from ./dev \ github:Mic92/nix-fast-build -- \ --no-nom \ --flake "./dev#checks.$(nix eval --raw --impure --expr builtins.currentSystem)" validate-sources: name: Validate sources runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@V27 - name: Check for external repositories run: | set -e nix eval --file ./.github/checkSources.nix