diff --git a/.forgejo/workflows/size-report.yml b/.forgejo/workflows/size-report.yml new file mode 100644 index 0000000..1bf2a41 --- /dev/null +++ b/.forgejo/workflows/size-report.yml @@ -0,0 +1,10 @@ +on: + pull_request: +jobs: + report-size: + runs-on: nixos + steps: + - uses: "https://git.salame.cl/actions/checkout@v4" + - run: nix --version + - name: Report Size + run: ci-scripts/report-size.sh diff --git a/.gitignore b/.gitignore index 880066b..040b2e1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ result +result-* .direnv/ .pre-commit-config.yaml # ignore vm images diff --git a/ci-scripts/report-size.sh b/ci-scripts/report-size.sh new file mode 100755 index 0000000..ac61e64 --- /dev/null +++ b/ci-scripts/report-size.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +create_table() { + packages=$(nix flake show --json 2>/dev/null | jq --raw-output '.packages."x86_64-linux" | ".#" + keys[]') + # we want to split the words as each of them is a different installable + # shellcheck disable=SC2086 + nix build $packages + # shellcheck disable=SC2086 + table=$(nix path-info --size --closure-size --human-readable \ + $packages | + sed 's/^\(\S\+\)\(\s\+\)\(\S\+\)\(\s\+\)\(\S\+\)$/| \1\2| \3 | \4\5 |/') + + cat <<-EOF + | Nix Store Path | NAR Size | Closure Size | + |----------------|---------:|-------------:| + $table + EOF +} + +if [ "$CI" = "true" ]; then + tea login add --url "$GITHUB_SERVER_URL" --token "$GITHUB_TOKEN" + tea pulls list +fi + +create_table