+ userquotas = pkgs.writeScriptBin "user_quotas" ''
+ #!/usr/bin/env bash
+ set -euo pipefail
+
+ if [ `whoami` != "root" ]; then
+ list=$(id -u)
+ else
+ list="${builtins.concatStringsSep " " (lib.mapAttrsToList (n: v: builtins.toString v.uid) normalUsers)}"
+ fi
+
+ get_size () {
+ user=$1
+ home=$((du -sbx /home/$user 2>/dev/null | cut -d" " -f1) || echo 0)
+ nextcloud=$((du -sbx /home/var_lib/nextcloud/data/$user 2>/dev/null | cut -d" " -f1) || echo 0)
+ echo "Home: $(numfmt --to=iec "$home")"
+ echo "Nextcloud: $(numfmt --to=iec "$nextcloud")"
+ echo "Raw: $(($home + $nextcloud))"
+ }
+
+ for user in $list; do
+ group=$(id -ng "$user")
+ size=$(get_size "$group")
+ total=$(echo "$size" | grep ^Raw | cut -d" " -f2)
+ decomp=" $group: $(numfmt --to=iec "$total")"
+ decomp="$decomp;$(echo "$size" | grep -v ^Raw | sed -e "s/^/ /")"
+
+ sponsored=$(getent group $group | cut -d':' -f4)
+ IFS=","
+ for subuser in $sponsored; do
+ size=$(get_size "$subuser")
+ totalsub=$(echo "$size" | grep ^Raw | cut -d" " -f2)
+ total=$(($total + $totalsub))
+ decomp="$decomp; $subuser: $(numfmt --to=iec "$totalsub")"
+ decomp="$decomp;$(echo "$size" | grep -v ^Raw | sed -e "s/^/ /")"
+ done
+ echo "$group: $(numfmt --to=iec "$total")"
+ echo "$decomp" | tr ";" "\n"
+ done
+ '';