diff --git a/.gitignore b/.gitignore deleted file mode 100644 index fcfc4a1..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -result* diff --git a/scripts/create-report.sh b/scripts/create-report.sh index 26fd732..628e024 100755 --- a/scripts/create-report.sh +++ b/scripts/create-report.sh @@ -8,74 +8,79 @@ util_path="${GITHUB_ACTION_PATH:-.}/scripts/utils.sh" . "${util_path}" group 'Retrieving Flake information' -flake_info=$(nix flake show --json --quiet --quiet) +flake_info=$(nix flake show --json) endgroup -system=$(nix eval --impure --json --expr 'builtins.currentSystem') - group 'Show Packages' -packages=$(echo "$flake_info" | jq --raw-output --argjson system "$system" 'getpath(["packages", $system]) | select(. != null) | keys[]') -[ -z "$packages" ] || log "$packages" +packages=$( + jq --raw-output '.packages."x86_64-linux" | select(. != null) | keys[]' <<-EOF + $flake_info + EOF +) +log "$packages" endgroup group 'Show Home Manager Configurations' -hmConfigs=$(echo "$flake_info" | jq --raw-output '.homeConfigurations | select(. != null) | keys[]') -[ -z "$hmConfigs" ] || log "$hmConfigs" +hmConfigs=$( + jq --raw-output '.homeConfigurations | select(. != null) | keys[]' <<-EOF + $flake_info + EOF +) +log "$hmConfigs" endgroup group 'Show NixOS Configurations' -nixosConfigs=$(echo "$flake_info" | jq --raw-output '.nixosConfigurations | select(. != null) | keys[]') -[ -z "$nixosConfigs" ] || log "$nixosConfigs" +nixosConfigs=$( + jq --raw-output '.nixosConfigurations | select(. != null) | keys[]' <<-EOF + $flake_info + EOF +) +log "$nixosConfigs" endgroup -closure_size() { - name=$1 - path=$2 - log "Calculating size of $name at $path" - path_info=$(nix path-info --closure-size --json "$path") - echo "$path_info" | - jq --compact-output \ - --arg pkg "$name" \ - --arg path "$path" \ - '.[] | {"name": $pkg, "path": $path, "size": .closureSize, "narSize": .narSize, "raw": .}' -} - pkgs_json() { + group 'Building packages' + trap endgroup RETURN for package in $packages; do log "Building $package" path=$(nix build --print-out-paths ".#$package") - closure_size "$package" "$path" + log "Calculating size of $package at $path" + nix path-info --closure-size --json "$path" | tee | + jq --compact-output --arg pkg "$package" '.[] | {"name": $pkg, "size": .closureSize, "narSize": .narSize}' done + endgroup } hm_configs_json() { + group 'Building Home Manager configurations' + trap endgroup RETURN for config in $hmConfigs; do log "Building $config" path=$(nix build --print-out-paths ".#homeConfigurations.$config.activationPackages") - closure_size "$config" "$path" + log "Calculating size of $config" + nix path-info --closure-size --json "$path" | + jq --compact-output --arg pkg "$config" '.[] | {"name": $pkg, "size": .closureSize, "narSize": .narSize}' done } nixos_configs_json() { + group 'Building NixOS configurations' + trap endgroup RETURN for config in $nixosConfigs; do log "Building $config" path=$(nix build --print-out-paths ".#nixosConfigurations.$config.config.system.build.toplevel") - closure_size "$config" "$path" + log "Calculating size of $config" + nix path-info --closure-size --json "$path" | + jq --compact-output --arg pkg "$config" '.[] | {"name": $pkg, "size": .closureSize, "narSize": .narSize}' done } -group 'Building packages' -pkgs=$(pkgs_json | jq --slurp .) -endgroup -group 'Building Home Manager configurations' -hmConfigs=$(hm_configs_json | jq --slurp .) -endgroup -group 'Building NixOS configurations' -nixosConfigs=$(nixos_configs_json | jq --slurp .) -endgroup +pkgs=$(pkgs_json | jq --slurp '.') +hmConfigs=$(hm_configs_json | jq --slurp '.') +nixosConfigs=$(nixos_configs_json | jq --slurp '.') echo "{}" | jq \ --argjson pkgs "$pkgs" \ - --argjson hmConfigs "$hmConfigs" \ --argjson nixosConfigs "$nixosConfigs" \ + --argjson hmConfigs "$hmConfigs" \ '{"packages": $pkgs, "nixosConfigurations": $nixosConfigs, "homeConfigurations": $hmConfigs}'