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 '.#with-shell' - 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 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 GTK_USE_PORTAL: 0 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 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"