Skip to content

Flake update

Flake update #23

Workflow file for this run

name: "Flake updater"
on:
# schedule:
# - cron: "0 0 * * *"
workflow_dispatch: # allow manual triggering
pull_request:
push:
jobs:
update_homes:
strategy:
matrix:
pair:
# - machine: "appaquet@deskapp"
# os: ubuntu-latest
- machine: "appaquet@servapp"
os: ubuntu-latest
# - machine: "appaquet@mbpapp"
# os: macos-latest
runs-on: ${{ matrix.pair.os }}
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
experimental-features = nix-command flakes
access-tokens = github.com=${{ secrets.GH_PAT }}
github-token: ${{ secrets.GH_PAT }}
- name: Add & update nixpkgs channel
run: |
nix-channel --add https://nixos.org/channels/nixos-24.05 nixpkgs
nix-channel --update nixpkgs
nix profile install nixpkgs#nvd
- name: Building Home Manager baseline...
run: |
set -xe
MACHINE_KEY="${{ matrix.pair.machine }}" ./x home build
mv result result-before
- name: Update flakes
run: |
set -xe
nix flake update
- name: Building Home Manager new
run: |
set -xe
MACHINE_KEY="${{ matrix.pair.machine }}" ./x home build
mv result result-after
- name: Diffing...
run: |
set -xe
nvd diff result-before result-after | tee diff
# Only include if significant changes. Ex base output:
# <<< result-before
# >>> result-after
# Version changes:
# Closure size: 716 -> 716 (10 paths added, 10 paths removed, delta +0, disk usage +287.0KiB).
NB_CHANGES=$(grep -vcE "(Version changes|Closure size|<<<|>>>)" diff)
if [ $NB_CHANGES -gt 0 ]; then
echo "Changes for ${{ matrix.pair.machine }} home:" > diff-out
cat diff >> diff-out
echo "\n" >> diff-out
cat diff-out > "${{ matrix.pair.machine }}-home-diff"
fi
- name: Add as artifact
uses: actions/upload-artifact@v4
with:
name: "${{ matrix.pair.machine }}-home-diff"
path: "${{ matrix.pair.machine }}-home-diff"
if-no-files-found: ignore # no files means no diff
update_nixos:
runs-on: ubuntu-latest
strategy:
matrix:
machine: ["appaquet@deskapp"]
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
experimental-features = nix-command flakes
access-tokens = github.com=${{ secrets.GH_PAT }}
github-token: ${{ secrets.GH_PAT }}
- name: Add & update nixpkgs channel
run: |
nix-channel --add https://nixos.org/channels/nixos-24.05 nixpkgs
nix-channel --update nixpkgs
nix profile install nixpkgs#nixos-rebuild nixpkgs#nvd
- name: Building NixOS baseline...
run: |
set -xe
MACHINE_KEY="appaquet@deskapp" ./x nixos build
mv result result-before
- name: Update flakes
run: |
set -xe
nix flake update
- name: Building NixOS new
run: |
set -xe
MACHINE_KEY="appaquet@deskapp" ./x nixos build
mv result result-after
- name: Diffing...
run: |
set -xe
nvd diff result-before result-after | tee diff
# Only include if significant changes. Ex base output:
# <<< result-before
# >>> result-after
# Version changes:
# [U.] #1 nixos-system-deskapp 24.05.20240928.fbca5e7 -> 24.05.20240930.1719f27
# Closure size: 1637 -> 1637 (29 paths added, 29 paths removed, delta +0, disk usage +7.5KiB).
NB_CHANGES=$(grep -vcE "(Version changes|nixos-system|Closure size|<<<|>>>)" diff)
if [ $NB_CHANGES -gt 0 ]; then
echo "Changes for ${{ matrix.machine }} nixos:" > diff-out
cat diff >> diff-out
echo "\n" >> diff-out
cat diff-out > "${{ matrix.machine }}-nixos-diff"
fi
- name: Add as artifact
uses: actions/upload-artifact@v4
with:
name: "${{ matrix.machine }}-nixos-diff"
path: "${{ matrix.machine }}-nixos-diff"
if-no-files-found: ignore # no files means no diff
update_darwin:
runs-on: macos-latest
strategy:
matrix:
machine: ["appaquet@mbpapp"]
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
with:
extra-conf: |
experimental-features = nix-command flakes
access-tokens = github.com=${{ secrets.GH_PAT }}
github-token: ${{ secrets.GH_PAT }}
- name: Add & update nixpkgs channel
run: |
nix-channel --add https://nixos.org/channels/nixos-24.05 nixpkgs
nix-channel --update nixpkgs
nix profile install nixpkgs#nvd
- name: Building baseline...
run: |
set -xe
MACHINE_KEY="${{ matrix.machine }}" ./x darwin build
mv result darwin-result-before
- name: Update flakes
run: |
set -xe
nix flake update
- name: Building new...
run: |
set -xe
MACHINE_KEY="${{ matrix.machine }}" ./x darwin build
mv result darwin-result-after
- name: Diffing...
run: |
set -xe
nvd diff ./darwin-result-before ./darwin-result-after | tee diff
# Only include if significant changes. Ex base output:
# <<< result-before
# >>> result-after
# Version changes:
# [C.] #1 darwin-system 24.05pre-git+darwin4.4b43b68, 24.05pre-git+darwin5 -> 24.05pre-git+darwin4.f61d5f2, 24.05pre-git+darwin5
# Closure size: 169 -> 169 (10 paths added, 10 paths removed, delta +0, disk usage +3.7KiB).
NB_CHANGES=$(grep -vcE "(Version changes|darwin-system|Closure size|<<<|>>>)" diff)
if [ $NB_CHANGES -gt 0 ]; then
echo "Changes for ${{ matrix.machine }} darwin:" > diff-out
cat diff >> diff-out
echo "\n" >> diff-out
cat diff-out > "${{ matrix.machine }}-darwin-diff"
fi
- name: Add as artifact
uses: actions/upload-artifact@v4
with:
name: "${{ matrix.machine }}-darwin-diff"
path: "${{ matrix.machine }}-darwin-diff"
if-no-files-found: ignore # no files means no diff
create_pr:
runs-on: ubuntu-latest
needs: [update_homes, update_nixos, update_darwin]
steps:
- uses: actions/checkout@v4
- name: Fetch all artifacts
uses: actions/download-artifact@v4
with:
path: diffs
- name: Create PR
run: |
set -xe
if [ -z "$(ls -A diffs)" ]; then
echo "No diffs found, exiting"
exit 0
fi
cat diffs/*/* > all-diffs
if [ -z "$(cat all-diffs)" ]; then
echo "No diffs found, exiting"
exit 0
fi
cat all-diffs