summaryrefslogtreecommitdiff
path: root/.github/workflows/update-flake-inputs.yml
blob: a751b2720bd4518255c7be1a92b3401186aec513 (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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 modules
        run: |
          result/bin/caelestia -v
          result/bin/caelestia -h
          result/bin/caelestia toggle -h
          result/bin/caelestia scheme -h
          result/bin/caelestia scheme list
          result/bin/caelestia scheme get
          result/bin/caelestia scheme set -n gruvbox -f hard -m dark -v content
          result/bin/caelestia scheme set -r
          result/bin/caelestia screenshot -h
          result/bin/caelestia record -h
          result/bin/caelestia clipboard -h
          result/bin/caelestia emoji -h
          result/bin/caelestia emoji
          result/bin/caelestia wallpaper -h
          result/bin/caelestia pip -h

      - name: Test graphical stuff
        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)

          # Test CLI graphical modules
          result/bin/caelestia screenshot
          result/bin/caelestia record
          result/bin/caelestia clipboard &
          result/bin/caelestia emoji -p &
          result/bin/caelestia shell -s
          result/bin/caelestia shell drawers list
          result/bin/caelestia shell mpris list
          result/bin/caelestia shell notifs clear

          pgrep .quickshell-wra  # Fail job if shell died
          result/bin/caelestia shell -k
          killall sway  # Screw using IPC

      - name: Check for changes
        id: check
        run: echo modified=$(test -n "$(git status --porcelain)" && echo 'true' || echo 'false') >> $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"