diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..be5f271 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,75 @@ +name: Perform checks + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + formatting: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install nix + uses: DeterminateSystems/nix-installer-action@main + - name: Restore and cache Nix store + uses: nix-community/cache-nix-action@v5 + with: + # restore and save a cache using this key + primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix') }} + # if there's no cache hit, restore a cache by this prefix + restore-prefixes-first-match: nix-${{ runner.os }}- + # collect garbage until Nix store size (in bytes) is at most this number + # before trying to save a new cache + gc-max-store-size-linux: 1073741824 + # do purge caches + purge: true + # purge all versions of the cache + purge-prefixes: cache-${{ runner.os }}- + # created more than this number of seconds ago relative to the start of the `Post Restore` phase + purge-created: 0 + # except the version with the `primary-key`, if it exists + - uses: DeterminateSystems/magic-nix-cache-action@main + - name: Check Nix flake inputs + uses: DeterminateSystems/flake-checker-action@v4 # This action + - name: Run nix fmt + run: nix fmt -- --check . + + nix_flake_check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install nix + uses: DeterminateSystems/nix-installer-action@main + - name: Restore and cache Nix store + uses: nix-community/cache-nix-action@v5 + with: + # restore and save a cache using this key + primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix') }} + # if there's no cache hit, restore a cache by this prefix + restore-prefixes-first-match: nix-${{ runner.os }}- + # collect garbage until Nix store size (in bytes) is at most this number + # before trying to save a new cache + gc-max-store-size-linux: 1073741824 + # do purge caches + purge: true + # purge all versions of the cache + purge-prefixes: cache-${{ runner.os }}- + # created more than this number of seconds ago relative to the start of the `Post Restore` phase + purge-created: 0 + # except the version with the `primary-key`, if it exists + - name: Check Nix flake inputs + uses: DeterminateSystems/flake-checker-action@v4 # This action + - name: Run nix flake check + run: nix flake check + + nix_build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install nix + uses: DeterminateSystems/nix-installer-action@main + - name: Check Nix flake inputs + uses: DeterminateSystems/flake-checker-action@v4 # This action + - name: Build nvim + run: nix build .\#default diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml new file mode 100644 index 0000000..cd160d1 --- /dev/null +++ b/.github/workflows/update.yml @@ -0,0 +1,44 @@ +name: Update `flake.lock` +on: + workflow_dispatch: + schedule: + - cron: '0 0 * * 0' # runs weekly on Sunday at 00:00 + +jobs: + update_lockfile: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install nix + uses: DeterminateSystems/nix-installer-action@main + - name: Restore and cache Nix store + uses: nix-community/cache-nix-action@v5 + with: + # restore and save a cache using this key + primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix') }} + # if there's no cache hit, restore a cache by this prefix + restore-prefixes-first-match: nix-${{ runner.os }}- + # collect garbage until Nix store size (in bytes) is at most this number + # before trying to save a new cache + gc-max-store-size-linux: 1073741824 + # do purge caches + purge: true + # purge all versions of the cache + purge-prefixes: cache-${{ runner.os }}- + # created more than this number of seconds ago relative to the start of the `Post Restore` phase + purge-created: 0 + # except the version with the `primary-key`, if it exists + purge-primary-key: never + - name: Update flake.lock + uses: DeterminateSystems/update-flake-lock@main + with: + # inputs: dzgui dzgui-testing # We'll see whether I want to limit the updates to dzgui + token: ${{ secrets.GH_TOKEN_FOR_UPDATES }} + pr-title: "Update flake.lock" + pr-assignees: jiriks74 + pr-labels: | + flake.lock + automated + - name: Print PR number + run: echo Pull request number is ${{ steps.update.outputs.pull-request-number }}.