nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

average-relative.nix (709B)


      1 { pkgs, ... }:
      2 
      3 let
      4   average-relative = pkgs.writeShellScriptBin "average-relative" ''
      5     dir="''${1:-.}"
      6     if [[ ! -d "$dir" ]]; then
      7     echo "Not a directory: $dir" >&2
      8     exit 1
      9     fi
     10     shopt -s nullglob
     11     for i in "$dir"/*/; do
     12     i="''${i%/}"
     13     size=$(du -sk "$i" | awk '{print $1}')
     14     count=$(find "$i" -type f -size +1M | wc -l)
     15     (( count == 0 )) && continue
     16     echo "$((size / count)) $count $size ''${i##*/}"
     17     done | sort -nr | numfmt -d ' ' --field=1,3 --from-unit=1024 --to=iec --suffix=B |
     18     while read -r avg count total name; do
     19     printf '%8s %7s %8s  %s\n' "$avg" "$count" "$total" "$name"
     20     done
     21     '';
     22 in
     23 {
     24   environment.systemPackages = [ average-relative ];
     25 }