summaryrefslogtreecommitdiff
path: root/.github/workflows/update-flake-inputs.yml
blob: 0bb4bb3c4c16380280a1616db2d6f51a0e41d1f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
name: Update flake inputs

on:
  workflow_dispatch:
  schedule:
    - cron: '0 0 * * 0'

jobs:
  update-flake:
    runs-on: ubuntu-latest

    permissions:
      contents: write

    steps:
      - uses: actions/checkout@v4

      - name: Install Nix
        uses: nixbuild/nix-quick-install-action@v31
        with:
          nix_conf: |
            keep-env-derivations = true
            keep-outputs = true

      - name: Restore and save Nix store
        uses: nix-community/cache-nix-action@v6
        with:
          # restore and save a cache using this key
          primary-key: nix-${{ hashFiles('**/*.nix', '**/flake.lock') }}
          # if there's no cache hit, restore a cache by this prefix
          restore-prefixes-first-match: nix-
          # collect garbage until the Nix store size (in bytes) is at most this number
          # before trying to save a new cache
          # 1G = 1073741824
          gc-max-store-size-linux: 1G
          # do purge caches
          purge: true
          # purge all versions of the cache
          purge-prefixes: nix-
          # created more than this number of seconds ago
          purge-created: 0
          # or, last accessed more than this number of seconds ago
          # relative to the start of the `Post Restore and save Nix store` phase
          purge-last-accessed: 0
          # except any version with the key that is the same as the `primary-key`
          purge-primary-key: never

      - name: Update flake inputs
        run: nix flake update

      - name: Attempt to build flake
        run: nix build

      - name: Test on Sway
        env:
          XDG_RUNTIME_DIR: /home/runner/runtime
          WLR_BACKENDS: headless
          WLR_LIBINPUT_NO_DEVICES: 1
          WAYLAND_DISPLAY: wayland-1
        run: |
          mkdir $XDG_RUNTIME_DIR
          chown $USER $XDG_RUNTIME_DIR
          chmod 0700 $XDG_RUNTIME_DIR

          nix profile install 'nixpkgs#sway'
          sway &
          sleep 3  # Give Sway some time to start
          result/bin/caelestia-shell -d
          sleep 3  # Give the shell some time to start (and die)
          pgrep .quickshell-wra  # Fail job if shell died

          result/bin/caelestia-shell kill
          killall sway  # Screw using IPC

      - name: Check for changes
        id: check
        run: echo modified=$(git diff --exit-code flake.lock && echo 'false' || echo 'true') >> $GITHUB_OUTPUT

      - name: Commit and push changes
        if: steps.check.outputs.modified == 'true'
        uses: EndBug/add-and-commit@v9
        with:
          add: flake.lock
          default_author: github_actions
          message: "[CI] chore: update flake"