# Nix Flake outputs size Use `nix path-info` to query the size of flake outputs and produce a report. This repost can be posted to a PR (as formatted markdown) and/or uploaded as a workflow artifact. Requires `nix`, `jq`, `curl`, `sed`, `gunzip`, `tar` and `coreutils` to be in the runner's path. ## Example ```yaml - name: Generate size report uses: https://git.salame.cl/jalil/nix-flake-outputs-size@main with: # Default values comment-on-pr: 'true' generate-artifact: 'false' artifact-name: 'size-report.md' # If you want to enable comparisons set this to true do-comparison: 'false' job-name: '' # required if do-comparison is true # This is the branch that will be compared against base-branch: ${{ github.base_ref }} # or default branch if missing ``` For more details see the [action.yaml](./action.yml) file. **How it looks:**
Example comment screenshot: ![example comment generated by this action](./example-comment.png)
Example output as text: # Flake output sizes **Definitions:** - `Name`: the name of the package/configuration. - `Size`: the closure size (size on disk/NAR size + all transitive dependencies). - `NAR Size`: the size of the build output (package without the dependencies). - `[NAR] Size Change`: the amount changed compared to the main branch. **Tips on reading this data:** - For NixOS configurations you generally care only about the `Size` (closure size/size on disk). - Reduce the `Size` by disabling unneeded services/default packages. - For Packages you care about both the `Size` and the `NAR Size`. - Reduce the `NAR Size` by reducing the size of the build outputs, e.g. don't copy unnecessary data to the $out dir, optimize binaries for size, etc. - Reduce the `Size` by reducing the dependencies (e.g. `buildInputs`). - Don't worry too much about size, some dependencies are deduplicated, e.g. `glibc` adds ~40MiB to the `Size`, but is generally shared by ~every binary on the system, so, chances are, you are already including it from somewhere else and statically linking with e.g. `musl` is not gonna improve things. # NixOS Configurations | Name | Size | Size Change | NAR Size | NAR Size Change | |------|-----:|------------:|---------:|----------------:| | `gemini` | 11Gi | -2.4Mi | 28Ki | 0 | | `leo` | 1.6Gi | 0 | 25Ki | 0 | | `libra` | 9.4Gi | -2.4Mi | 28Ki | 0 | | `taurus` | 7.6Gi | 0 | 34Ki | 0 |