From 291d657547156d1a23b8a6d690f9b389b83f2147 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Tue, 1 Mar 2022 01:12:15 +0100 Subject: [PATCH] Add quota script for quatresaisons --- modules/private/system/quatresaisons.nix | 41 +++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/modules/private/system/quatresaisons.nix b/modules/private/system/quatresaisons.nix index b0a1715..646fef3 100644 --- a/modules/private/system/quatresaisons.nix +++ b/modules/private/system/quatresaisons.nix @@ -28,6 +28,45 @@ let ''; }; normalUsers = serverSpecificConfig.users; + 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 + ''; sponsoredUser = pkgs.writeScriptBin "sponsored_user" '' #!/usr/bin/env bash @@ -341,7 +380,7 @@ in ]; environment.systemPackages = [ - sponsoredUser + sponsoredUser userquotas pkgs.git pkgs.vim pkgs.rsync pkgs.strace pkgs.home-manager pkgs.telnet pkgs.htop pkgs.iftop pkgs.bind.dnsutils pkgs.httpie pkgs.iotop pkgs.whois pkgs.ngrep pkgs.tcpdump pkgs.tshark -- 2.41.0